Free HTML to PDF for .NET and .NET Core in C# - hiqpdf/free-html-to-pdf-net-csharp GitHub Wiki
Free HTML to PDF in C#, ASP.NET, ASP.NET Core and MVC with HiQPdf HTML to PDF Converter for .NET and .NET Core
These ASP.NET and ASP.NET Core C# sample projects uses Free HiQPdf HTML to PDF Converter Library for .NET and .NET Core to convert HTML pages and HTML code to PDF in your .NET and .NET Core applications. The HiQPdf HTML to PDF Converter for .NET and .NET Core is a fast method to easily create richly-formatted PDF documents in your .NET and .NET Core applications from HTML documents and web pages.
Download Free HTML to PDF Converter for .NET and .NET Core Zip
Most of the web applications are already able to produce HTML reports or to display the results in HTML pages. The HTML content is simple to generate, edit and display but it is not suitable for printing or for transmission by email. The HTML to PDF Converter for .NET can accurately convert HTML pages to PDF documents in your ASP.NET websites and .NET desktop applications in just a few lines of C# or VB.NET code.
C# Code Sample for HTML to PDF in ASP.NET ASP.NET Core
The sample is an ASP.NET website in C# offering sample code for the most important features of the software. To build the sample you have to open the Visual Studio solution and build the project. The Visual Studio project references the Free HTML to PDF for .NET Package from NuGet and will be automatically copied from there to your local folder when the project is built. After build you can run the demo application in a browser. The sample for the fully featured version of the software is available online at HiQPdf HTML to PDF Demo where you can find more examples.
This example shows how easy you can create the PDF documents from existing HTML pages or HTML strings. The HTML page can contain HTML5 code, CSS3, JavaScript or SVG. With just a few lines of code you can get complex PDF document.
In the code sample below you can learn how to set the internal browser width and height, similar to the window width of a browser, set the generated PDF page size, orientation and margins. When you convert a HTML string containing relative URLs to images, CSS and JavaScript files you also have to specify a base URL to resolve these resources.
protected void buttonConvertToPdf_Click(object sender, EventArgs e)
{
// create the HTML to PDF converter
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
// set browser width
htmlToPdfConverter.BrowserWidth = int.Parse(textBoxBrowserWidth.Text);
// set browser height if specified, otherwise use the default
if (textBoxBrowserHeight.Text.Length > 0)
htmlToPdfConverter.BrowserHeight = int.Parse(textBoxBrowserHeight.Text);
// set HTML Load timeout
htmlToPdfConverter.HtmlLoadedTimeout = int.Parse(textBoxLoadHtmlTimeout.Text);
// set PDF page size and orientation
htmlToPdfConverter.Document.PageSize = GetSelectedPageSize();
htmlToPdfConverter.Document.PageOrientation = GetSelectedPageOrientation();
// set PDF page margins
htmlToPdfConverter.Document.Margins = new PdfMargins(0);
// set a wait time before starting the conversion
htmlToPdfConverter.WaitBeforeConvert = int.Parse(textBoxWaitTime.Text);
// convert HTML to PDF
byte[] pdfBuffer = null;
if (radioButtonConvertUrl.Checked)
{
// convert URL to a PDF memory buffer
string url = textBoxUrl.Text;
pdfBuffer = htmlToPdfConverter.ConvertUrlToMemory(url);
}
else
{
// convert HTML code
string htmlCode = textBoxHtmlCode.Text;
string baseUrl = textBoxBaseUrl.Text;
// convert HTML code to a PDF memory buffer
pdfBuffer = htmlToPdfConverter.ConvertHtmlToMemory(htmlCode, baseUrl);
}
// inform the browser about the binary data format
HttpContext.Current.Response.AddHeader("Content-Type", "application/pdf");
// instruct browser how to open PDF as attachment or inline and file name
HttpContext.Current.Response.AddHeader("Content-Disposition",
String.Format("{0}; filename=HtmlToPdf.pdf; size={1}",
checkBoxOpenInline.Checked ? "inline" : "attachment",
pdfBuffer.Length.ToString()));
// write the PDF buffer to HTTP response
HttpContext.Current.Response.BinaryWrite(pdfBuffer);
// call End() method of HTTP response to stop ASP.NET page processing
HttpContext.Current.Response.End();
}
C# Code Sample for HTML to PDF in MVC
When you convert an ASP.NET MVC URL, the converter will make a GET request to the URL in a new session and the values stored in the current ASP.NET Session are not available. The solution is to get the HTML code rendered by the MVC view in the current context of the MVC controller and to convert that HTML code to PDF giving the appropriate base URL.
The sample code below demonstrates this solution. When the 'Convert This Page to PDF' button in the Index view is pressed the Index view itself is converted. When the 'Convert About Page to PDF' button in the Index view is pressed the About view in the same application is converted to PDF.
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
Session["MySessionVariable"] = "My Session Variable Value assigned in Index";
return View();
}
public string RenderViewAsString(string viewName, object model)
{
// create a string writer to receive the HTML code
StringWriter stringWriter = new StringWriter();
// get the view to render
ViewEngineResult viewResult = ViewEngines.Engines.FindView(ControllerContext,
viewName, null);
// create a context to render a view based on a model
ViewContext viewContext = new ViewContext(
ControllerContext,
viewResult.View,
new ViewDataDictionary(model),
new TempDataDictionary(),
stringWriter
);
// render the view to a HTML code
viewResult.View.Render(viewContext, stringWriter);
// return the HTML code
return stringWriter.ToString();
}
[HttpPost]
public ActionResult ConvertHtmlPageToPdf()
{
// get the HTML code of this view
string htmlToConvert = RenderViewAsString("Index", null);
// the base URL to resolve relative images and css
String thisPageUrl = this.ControllerContext.HttpContext.Request.Url.AbsoluteUri;
String baseUrl = thisPageUrl.Substring(0, thisPageUrl.Length -
"Home/ConvertThisPageToPdf".Length);
// instantiate the HiQPdf HTML to PDF converter
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
// hide the button in the created PDF
htmlToPdfConverter.HiddenHtmlElements = new string[]
{ "#convertThisPageButtonDiv" };
// render the HTML code as PDF in memory
byte[] pdfBuffer = htmlToPdfConverter.ConvertHtmlToMemory(htmlToConvert, baseUrl);
// send the PDF file to browser
FileResult fileResult = new FileContentResult(pdfBuffer, "application/pdf");
fileResult.FileDownloadName = "ThisMvcViewToPdf.pdf";
return fileResult;
}
}
Free HTML to PDF Converter for .NET and .NET Core Features
- Convert HTML and HTML5 Documents and Web Pages to PDF
- Convert URLs and HTML Strings to PDF Files or Memory Buffers
- Set the PDF Page Size and Orientation
- Fit HTML Content in PDF Page Size
- Advanced Support for Web Fonts in .WOFF and .TTF Formats
- Advanced Support for Scalar Vector Graphics (SVG)
- Advanced Support for HTML5 and CSS3
- Delayed Conversion Triggering Mode
- Control PDF page breaks with page-break CSS attributes in HTML
- Repeat HTML Table Header and Footer on Each PDF Page
- Create up to three PDF pages of high quality content for free
- Packaged and Delivered as a Zip Archive
- No External Dependencies
- Direct Copy Deployment Supported
- ASP.NET, MVC and Windows Forms Samples in C# and VB.NET
- Fully documented .NET API with examples
- Supported on All Windows Versions and in Azure cloud services
- Using the HTML to PDF Library in your .NET Applications
The integration of the Free HTML to PDF Converter for .NET Library in your own ASP.NET and MVC application is very simple. You just have to add a reference to the NuGet package in your Visual Studio project. For this you can right click on References in project and select Manage NuGet Packages then search the nuget.org for HiQPdf packages and select the free version of the package. Now you are ready to use the converter in your code. Copy the sample C# code above in your application and rebuild you project.
More Information
The Free HTML to PDF Converter Library for .NET and .NET Core which is the limited free version of the full HiQPdf HTML to PDF Library for .NET and .NET Core. With this free version you can create maximum 3 PDF pages of high quality content. There are also some advanced features like live URLs, internal links, outlines, PDF forms, table of contents, edit, merge and split PDF documents, extract text and images from PDF or PDF pages rasterization which are available only in the full version of the software.
You can read more about the software on HiQPdf HTML to PDF for .NET and .NET Core Blog page.