C# – Convert HTML to PDF using pdf.co API
There are a lot of free and paid solutions out there to create PDFs using .net core. recently I wrote a blog post, about how I used PHP to convert PDFs from HTML. Let’s see how we can use pdf.co API to convert the same HTML using C# (.net)
I wrote a small service class using RestSharp.
public class PDFGenerateService : IPDFGenerateService { private readonly AppSettingsOptions _appSettings; private readonly string _pdfCoApiUrl; private readonly string _pdfCoApiKey; public PDFGenerateService(IOptions appSettings) { _appSettings = appSettings.Value; _pdfCoApiUrl = _appSettings.PDFCoApiUrl; // this is "https://api.pdf.co/" _pdfCoApiKey = _appSettings.PDFCoApiKey; // and my key genarated by PDF.co } public async Task<byte[]> GenerateAsync(string htmlBody) { var pdfResponse = await GetGeneratedPdfResponseAsync(htmlBody); return GetGeneratedPdfBytesArray(pdfResponse.Url); } private byte[] GetGeneratedPdfBytesArray(string pdfUrl) { var client = new RestClient(pdfUrl); RestRequest request = new RestRequest(Method.GET); return client.DownloadData(request); } private async Task GetGeneratedPdfResponseAsync(string htmlBody) { var client = new RestClient(_pdfCoApiUrl) { ReadWriteTimeout = 300000; // probabaly wont need it ;) }; client.Timeout = 300000; // probabaly wont need it ;) var request = new RestRequest("/v1/pdf/convert/from/html", Method.POST); request.AddHeader("x-api-key", _pdfCoApiKey); request.AddHeader("Content-Type", "application/json"); request.AddJsonBody(new { Html = htmlBody, Name = $"{Guid.NewGuid()}.pdf" }); var response = await client.ExecuteAsync(request); return response.Data; } }
there are many configurations you can pass as part of the POST request to generate the PDF.
PDF.co will give you 1000 credits to play around and you can get a matching subscription for your needs.
Disclaimer: pdf.co did not sponsor me to write this post