I want to generate a PDF by passing HTML contents to a function. I have made use of iTextSharp for this but it does not perform well when it encounters tables and the layout just gets messy.
Is there a better way?
Amedee Van GasseIn this article, we will see how to convert HTML strings to PDF by using a third party PDF generation library. ITextSharp, StringBuilder, StringReader, HTMLWorker, MemoryStream, PdfWriter. What Can C# Do For You; C# and ASP.Net Interview Question and Answers; Our Books. Diving Into OOP. Programming C# 5.0. Step into Windows Phone 8.
33 Answers
Update: I would now recommend PupeteerSharp over wkhtmltopdf.
Try wkhtmtopdf. It is the best tool I have found so far.
For .NET, you may use this small library to easily invoke wkhtmtopdf command line utility.
MarkoMarkoEDIT: New SuggestionHTML Renderer for PDF using PdfSharp
(After trying wkhtmltopdf and suggesting to avoid it)
HtmlRenderer.PdfSharp is a 100% fully C# managed code, easy to use, thread safe and most importantly FREE(New BSD License) solution.
Usage
- Download HtmlRenderer.PdfSharp nuget package.
Use Example Method.
A very Good Alternate Is a Free Version of iTextSharp
Until version 4.1.6 iTextSharp was licensed under the LGPL licence and versions until 4.16 (or there may be also forks) are available as packages and can be freely used. Of course someone can use the continued 5+ paid version.
I tried to integrate wkhtmltopdf solutions on my project and had a bunch of hurdles.
I personally would avoid using wkhtmltopdf - based solutions on Hosted Enterprise applications for the following reasons.
- First of all wkhtmltopdf is C++ implemented not C#, and you willexperience various problems embedding it within your C# code,especially while switching between 32bit and 64bit builds of yourproject. Had to try several workarounds including conditionalproject building etc. etc. just to avoid 'invalid format exceptions'on different machines.
- If you manage your own virtual machine its ok. But if your projectis running within a constrained environment like (Azure(Actually is impossible withing azure as mentioned by theTuesPenchin author) , Elastic Beanstalk etc) it's a nightmare to configure that environment only for wkhtmltopdf to work.
- wkhtmltopdf is creating files within your server so you have tomanage user permissions and grant 'write' access to wherewkhtmltopdf is running.
- Wkhtmltopdf is running as a standalone application, so its notmanaged by your IIS application pool. So you have to either host itas a service on another machine or you will experience processing spikes and memory consumption within your productionserver.
- It uses temp files to generate the pdf, and in cases Like AWSEC2 which has really slow disk i/o it is a big performanceproblem.
- The most hated 'Unable to load DLL 'wkhtmltox.dll' error reportedby many users.
--- PRE Edit Section ---
For anyone who want to generate pdf from html in simpler applications / environments I leave my old post as suggestion.
or Especially For MVC Web Applications (But I think you may use it in any .net application)
They both utilize the wkhtmtopdf binary for converting html to pdf. Which uses the webkit engine for rendering the pages so it can also parse css style sheets.
They provide easy to use seamless integration with C#.
Rotativa can also generate directly PDFs from any Razor View.
Additionally for real world web applications they also manage thread safety etc...
Anestis KivranoglouAnestis KivranoglouMost HTML to PDF converter relies on IE to do the HTML parsing and rendering. This can break when user updates their IE. Here is one that does not rely on IE.
The code is something like this:
Like many other converters, you can pass text, file name, or Url. The result can be saved into a file or a stream.
Andre LombaardI recently performed a PoC regarding HTML to PDF conversion and wanted to share my results.
My favorite by far is OpenHtmlToPdf
Advantages of this tool:
- Very good HTML compatibility (e.g. it was the only tool in my example that correctly repeated table headers when a table spanned multiple pages)
- Fluent API
- Free and OpenSource (Creative Commons Attribution 3.0 license)
- Available via NuGet
Other tools tested:
- ExpertPDF (http://www.html-to-pdf.net/)
- IronPDF (http://ironpdf.com/)
- iTextSharp (https://sourceforge.net/projects/itextsharp/)
- NReco PDF Creator for .NET(http://www.nrecosite.com/pdf_generator_net.aspx)
- HTML renderer for PDF Sharp(https://www.nuget.org/packages/HtmlRenderer.PdfSharp/)
- SelectPDF community edition (http://selectpdf.com/community-edition/)
I highly recommend NReco, seriously. It has the free and paid version, and really worth it. It uses wkhtmtopdf in background, but you just need one assembly. Fantastic.
Example of use:
Install via NuGet.
Disclaimer: I'm not the developer, just a fan of the project :)
Kim TranjanKim TranjanWinnovative offer a .Net PDF library that supports HTML input. They offer an unlimited free trial. Depending on how you wish to deploy your project, this might be sufficient.
StewartStewartEssential PDF can be used to convert HTML to PDF: C# sample. The sample linked to here is ASP.NET based, but the library can be used from Windows Forms, WPF, ASP.NET Webforms, and ASP.NET MVC. The library offers the option of using different HTML rendering engines : Internet Explorer (default) and WebKit (best output).
The whole suite of controls is available for free (commercial applications also) through the community license program if you qualify. The community license is the full product with no limitations or watermarks.
Note: I work for Syncfusion.
I used ExpertPDF Html To Pdf Converter. Does a decent job. Unfortunatelly, it's not free.
There's also a new web-based document generation app - DocRaptor.com. Seems easy to use, and there's a free option.
If you don't really need a true .Net PDF library, there are numerous free HTML to PDF tools, many of which can run from a command-line.
Convert Html To Pdf In Asp.net C# Free
One solution would be to pick one of those and then write a thin wrapper around that in C#. E.g., as done in this tutorial.
StewartStewartThere are good news for HTML-to-PDF demands. As this answer showed, the W3C standard css-break-3 will solve the problem... It is a Candidate Recommendation with plan to turn into definitive Recommendation in 2017 or 2018, after tests.
As not-so-standard there are solutions, with plugins for C#, as showed by print-css.rocks.
ABCpdf.NET (http://www.websupergoo.com/abcpdf-5.htm)
We use and recommend.
Very good component, it not only convert a webpage to PDF like an image but really convert text, image, formatting, etc...
It's not free but it's cheap.
Below is an example of converting html + css to PDF using iTextSharp (iTextSharp + itextsharp.xmlworker)
Sergey MalyutinSergey MalyutinIt depends on any other requirements you have.
A really simple but not easily deployable solution is to use a WebBrowser control to load the Html and then using the Print method printing to a locally installed PDF printer. There are several free PDF printers available and the WebBrowser control is a part of the .Net framework.
EDIT:If you Html is XHtml you can use PDFizer to do the job.
Rune GrimstadRune GrimstadPDF Vision is good. However, you have to have Full Trust to use it. I already emailed and asked why my HTML wasn't being converted on the server but it worked fine on localhost.
I found the following library more effective in converting html to pdf.
nuget: https://www.nuget.org/packages/Select.HtmlToPdf/
I was also looking for this a while back. I ran into HTMLDOC http://www.easysw.com/htmldoc/ which is a free open source command line app that takes an HTML file as an argument and spits out a PDF from it. It's worked for me pretty well for my side project, but it all depends on what you actually need.
The company that makes it sells the compiled binaries, but you are free to download and compile from source and use it for free. I managed to compile a pretty recent revision (for version 1.9) and I intend on releasing a binary installer for it in a few days, so if you're interested I can provide a link to it as soon as I post it.
Edit (2/25/2014): Seems like the docs and site moved to http://www.msweet.org/projects.php?Z1
enriqueinenriqueinYou need to use a commercial library if you need perfect html rendering in pdf.
ExpertPdf Html To Pdf Converter is very easy to use and it supports the latest html5/css3. You can either convert an entire url to pdf:
or a html string:
You also have the alternative to directly save the generated pdf document to a Stream of file on the disk.
I'm the author of the Rotativa package. It allows to create PDF files directly from razor views:
Trivial to use and you have full control on the layout since you can use razor views with data from your Model and ViewBag container.
I developed a SaaS version on Azure. It makes it even easier to use it from WebApi or any .Net app, service, Azure website, Azure webjob, whatever runs .Net.
Free accounts available.
Giorgio BozioGiorgio BozioHere is a wrapper for wkhtmltopdf.dll by pruiz
And a wrapper for wkhtmltopdf.exe by Codaxy
- also on nuget.
Best Tool i have found and used for generating PDF of javascript and styles rendered views or html pages is phantomJS.
Download the .exe file with the rasterize.js function found in root of exe of example folder and put inside solution.
It Even allows you to download the file in any code without opening that file also it also allows to download the file when the styles and specially jquery are applied.
Following code generate PDF File :
As a representative of HiQPdf Software I believe the best solution is HiQPdf HTML to PDF converter for .NET. It contains the most advanced HTML5, CSS3, SVG and JavaScript rendering engine on market. There is also a free version of the HTML to PDF library which you can use to produce for free up to 3 PDF pages. The minimal C# code to produce a PDF as a byte[] from a HTML page is:
You can find more detailed examples both for ASP.NET and MVC in HiQPdf HTML to PDF Converter examples repository.
This is a free library and works very easily : OpenHtmlToPdf
Abhishek SenguptaAbhishek SenguptaTry this PDF Duo .Net converting component for converting HTML to PDF from ASP.NET application without using additional dlls.
You can pass the HTML string or file, or stream to generate the PDF.Use the code below (Example C#):
Info + C#/VB examples you can find at: http://www.duodimension.com/html_pdf_asp.net/component_html_pdf.aspx
Ok, using this technologies....
The src can be downloaded from here it needs nant
madth3Instead of parsing HTML directly to PDF, you can create an Bitmap of your HTML-page and then insert the Bitmap into your PDF, using for example iTextSharp.
Here's a code how to get an Bitmap of an URL. I found it somewhere here on SO, if I find the source I'll link it.
Jimmy MattssonJimmy MattssonWith Winnovative HTML to PDF converter you can convert a HTML string in a single line
The base URL is used to resolve the images referenced by relative URLs in HTML string. Alternatively you can use full URLs in HTML or embed images using src='data:image/png' for image tag.
In answer to 'fubaar' user comment about Winnovative converter, a correction is necessary. The converter does not use IE as rendering engine. It actually does not depend on any installed software and the rendering is compatible with WebKit engine.
If you want user to download the pdf of rendered page in the browser then the easiest solution to the problem is
on client side it will prompt user to save pdf of current page. You can also customize the appearance of pdf by linking style
print.css is applied to the html while printing.
Limitation
You can't store the file on server side.User prompt to print the page than he had to save page manually.Page must to be rendered in a tab.
Ravi Kumar MistryRavi Kumar MistryPDFmyURL recently released a .NET component for web page / HTML to PDF conversion as well. This has a very user friendly interface, for example:
Documentation: PDFmyURL .NET component documentation
Disclaimer: I work for the company that owns PDFmyURL
Already if you are using itextsharp dll, no need to add third party dll's(plugin), I think you are using htmlworker instead of it use xmlworker you can easily convert your html to pdf.
Some css won't work they are Supported CSS
Full Explain with example Reference Click here
protected by Brad Larson♦May 29 '14 at 17:00
Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).
Would you like to answer one of these unanswered questions instead?
In this post, I am going to show you how can we easily import HTML into PDF in ASP.NET without compromising UI. I was looking for an alternative of Crystal reports in ASp.NET to generate reports without any JavaScript burden and complexities in developing them.
As Crystal reports gives you the feature to import the report into PDF or Excel, I did some research for libraries for these file formats. Most programming folks were recommending ITextSharp.
I knew and had used ITextSharp for PDF merge in a project. But when I tried to use this for HTML to PDF, I didn’t get the result I wanted and there were a lot of workarounds needed to get all my requirements.
So I looked for some other solutions and fortunately, I found this amazing free library NReco. Which by the way is a wrapper library in .NET for this wonderful HTML to PDF EXE wkhtmltopdf.
Before going into details, I’d like to mention my requirements when I was working on HTML to PDF import on a project. So it would be easier for you if it matches your requirements as well.
Requirements
- Same PDF page as it's showing on browser
- Show Background-color
- Repeat header on every page
- Show page number on every page
- Page number count on every page
- Show images
- Option to change page orientation (Landscape, Portrait)
- Free library
- Support CSS
Issues I encountered and resolved.
- Header overlaps when repeating on other pages
- Page number
- Deploying on 32bit OS
I’ve attached the link of a sample ASP.NET solution at the end of source code.
Example code is as given below:
HTML string sample is as given below:
Create Page number on every page with count.
The below image is a snap of the source code. You can download the sample ASP.NET solution here.