Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can PDFSharp create Pdf file from a Html string in Net Core?

This maybe sounds "easy" but I haven't found a real solution. I need to create Pdf files from Html strings from an API on .Net Core. The library must be free (Not payments or anything related). I found that PDFSharp was a good option, but now I check out that PDFSharp is not available for .Net Core and It doesn't allow to inject a Html string.

So, PDFSharp is a good option for this case? Or what other library would you recommend me?

Thanks a lot.

like image 464
Roger Ospina Avatar asked Feb 21 '20 16:02

Roger Ospina


2 Answers

I recently ran into the exact same issue myself. There is currently extremely limited ways in dealing with PDFs in general in .NET Core. To go through them...

  • PDF Sharp - Does not support .NET Core/Standard.
  • SelectPDF - Does have a "free" community version hidden in their website footer. Should be useable in most cases. https://selectpdf.com/community-edition/
  • IronPDF - "Enterprise" pricing. Starts at $1.5k
  • WKHTMLTOPDF - This is actually just an executable that someone has written a C# wrapper over the top to run the exe. Not a great solution.
  • iTextSharp - Has "hidden" pricing but apparently this is the only one that specifically will run on Linux under .NET Core (If that's important to you).

IMO the only free one that will do what you need is SelectPDF. And that's saying something because I don't rate the library or the API. But it's free and it works.

More info : https://dotnetcoretutorials.com/2019/07/02/creating-a-pdf-in-net-core/

like image 133
MindingData Avatar answered Oct 16 '22 08:10

MindingData


if anyone needs an option with this, here is the final solution that I decided to use.

    var url = "https://stackoverflow.com/questions/564650/convert-html-to-pdf-in-net";
var chromePath = @"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe";
var output = Path.Combine(Environment.CurrentDirectory, "printout.pdf");
using (var p = new Process())
    {
        p.StartInfo.FileName = chromePath;
        p.StartInfo.Arguments = $"--headless --disable-gpu --print-to-pdf={output} {url}";
        p.Start();
        p.WaitForExit();
    }

https://stackoverflow.com/a/59943987/3877537

Thanks @leonard-AB

like image 9
Roger Ospina Avatar answered Oct 16 '22 10:10

Roger Ospina