HiQPdf Library for .NET - HTML to PDF Converter .NET Core

HiQPdf HTML to PDF Converter for .NET

HiQPdf HTML to PDF Library for .NET C# and HTML to PDF .NET Core offers you a modern, fast, flexible and powerful tool to create complex and stylish PDF documents with just a few lines of code.

Using the high quality HTML to PDF conversion engine you can easily design a document in HTML with CSS3, JavaScript, SVG or Canvas and then convert it to PDF preserving the exact content and style.

Download Now
Online Demo
Documentation

The HiQPdf Library for .NET and .NET Core can be integrated in your applications to convert with high accuracy and speed HTML documents and web pages to PDF documents that you can easily distribute and view. This library is compatible with all Windows versions. For other platforms like Linux, MacOS, Azure App Service, Xamarin and many more you can use the Multi-Platform Solution which offers the same features and quality for all platforms, including the most restrictive ones.
Getting Started
Download the HiQPdf Library for .NET or for .NET Core Zip package from downloads page and extract it into a folder. Open in Visual Studio one of the the demo applications for HTML to PDF ASP.NET Web Forms, ASP.NET MVC, Azure, Windows Forms or ASP.NET Core from Samples folder to build and run it.

Instead of using our demo applications you can create your own application in Visual Studio and add a reference to HiQPdf NuGet Package. In .NET Core projects you can reference the HiQPdf for .NET Core NuGet Package as an alternative. You have also the option to reference directly the assembly from product package. With the library reference added to your project, you can now use the simple code below to convert an URL to PDF document and save into a file or send it for download in browser.
 using HiQPdf;

 // Create the converter object
 HtmlToPdf converter = new HtmlToPdf();

 // Convert the HTML page from URL to memory
 byte[] pdfData = converter.ConvertUrlToMemory(UrlToConvert);

 // Save the PDF data to a file
 System.IO.File.WriteAllBytes("output.pdf", pdfData);

 // Alternatively convert and save to a file in one step
 converter.ConvertUrlToFile(UrlToConvert, "output.pdf");

 // Send the PDF data for download in ASP.NET Core applications
 FileResult fileResult = new FileContentResult(pdfData, "application/pdf");
 fileResult.FileDownloadName = "Output.pdf";
 return fileResult;

 // Send the PDF data for download in ASP.NET Web Forms applications
 HttpResponse httpResponse = HttpContext.Current.Response;
 httpResponse.AddHeader("Content-Type", "application/pdf");
 httpResponse.AddHeader("Content-Disposition",
            String.Format("attachment; filename=ConvertHtmlPart.pdf; size={0}",
            pdfData.Length.ToString()));
 httpResponse.BinaryWrite(pdfData);
 httpResponse.End();
HiQPdf Library for .NET comes with an impressive list of powerful and advanced features, allowing you to solve complex problems with maximum flexibility when generating PDF documents.
Amazingly Fast and Precise HTML to PDF Conversion Technology
The HiQPdf Library for HTML to PDF .NET and HTML to PDF .NET Core offers you the fastest and the most precise HTML to PDF conversion technology to use in your Web and Desktop applications. The HTML to PDF Converter can convert to PDF any HTML document or URL that a modern browser can display, preserving all the CSS styles and executing all the JavaScript scripts found in the HTML document
Powerful and Unique Features on the Market
Besides the common features a HTML to PDF Converter must have, the HiQPdf component has some unique features on the market like the support for web fonts in Web Open Font Format (WOFF), the ability to convert only a selected region of the HTML document or the possibility to overlap multiple HTML documents in the same PDF while preserving the transparent backgrounds and images from the HTML document
Convert Modern HTML5 Documents with CSS3, SVG, Canvas and JavaScript
The HiQPdf HTML to PDF Converter can render HTML documents with last generation content like Scalar Vector Graphics, Canvas and CSS3 styles. The JavaScript engine is fast, can handle complex scripts and exposes in HTML page objects you can use to manually trigger conversion or to determine various information about converter during conversion
Support for Web Fonts and Web Open Font Format (WOFF)
The HiQPdf HTML to PDF Converter can render HTML documents using Web Fonts in formats like Web Open Font Format (WOFF), TrueType or OpenType with TrueType Outlines. The Web Fonts offer a great flexibility to web designers to create special effects on text in a HTML document because they are not limited anymore to a small set of fonts installed on the client computers displaying the HTML document. The Web Fonts are downloaded on the fly by converter and used to render the HTML document to PDF without installing those fonts on the local machine. The location from where the fonts can be downloaded is given in a CSS3 @font-face rule.
Support for @media rules in CSS to have different layouts for Screen and Print
Using CSS media types in a HTML document you can have one layout for screen, one for print and one for handheld devices. The @media rule allows different style rules for different media in the same style sheet in a HTML document. By default the HTML to PDF converter will render the HTML document for 'screen', but can layout the document for another media type by simply setting a property in your code.
Much More Than Just a HTML to PDF Conversion Software
The HTML to PDF conversion engine is the most important feature, but the HiQPdf software is a complete PDF Library for .NET. You can create new PDF documents and add text and images at the desired positions in pages in a traditional manner, open and edit external PDF documents by adding new objects, create PDF documents with interactive forms, fill and submit interactive forms, merge and split PDF documents, extract text and images from PDF documents, search text in PDF documents, rasterize PDF pages to images, convert PDF document pages to HTML documents in memory or in files, silently print PDF documents to a printer.
No External Dependencies, Direct Copy Deployment
The HiQPdf Software does not depend on installed browsers, printer drivers, viewers or any other third party software. The HiQPdf Library for .NET can be deployed by simply copying it on the server. It is also possible to install the library in the .NET Framework GAC
ASP.NET, .NET Core, MVC and Desktop Samples, Complete Documentation, 24x7 Technical Support
The HiQPdf Library comes with a suite of ASP.NET, MVC and Windows Forms samples with complete source code in C# and VB.NET. The main features of the library are well documented and there is a complete API reference in HTML and in Microsoft Help format. If you need more help you can contact our support team at any time. We offer 24x7 technical and sales support
Simple and Flexible Licensing Without Run Time or Deployment Costs
The HiQPdf Software is licensed per developer seat, each developer seat giving to a programmer the right to work on applications using our software component. There are no additional run time or deployment costs charged for using our software component in your applications, the license never expires and includes the software upgrades

Convert HTML Documents to PDF, to Image or to SVG ...

Convert Only a Selected Region of a HTML Document to PDF

Convert Multiple HTML Documents into the Same PDF document

Control HTML Content Location, Scaling and Fitting in PDF Page

Automatic, Manual or WaitTime HTML Conversion Triggering

Automatically Generated Outlines and Links

Automatically Generated Table of Contents

Automatically Generated Outlines Hierarchy

Control PDF page breaks with page-break CSS attributes in HTML

Set PDF Background Layer during HTML to PDF Conversion

Repeat HTML Table Header and Footer on Each PDF Page

Retrieve Detailed Info About the Laid Out HTML Elements

HTTP Authentication, HTTP Headers, HTTP Cookies and Proxies

Use HTTP GET or POST Requests to Access the HTML to Convert

Create PDF/A and PDF/X Standards Compliant Documents ...

Encrypt, Password Protect and Digitally Sign PDF Documents

Create, Load, Fill, Save or Submit Interactive PDF Forms

Automatically Generated Fillable PDF Forms

Add HTML, Text, Image and Graphic Objects to PDF

Create PDF Documents with Outlines, Links and Attachments

Load and Edit External PDF Documents

Merge and Split External or Newly Created PDF Documents

Extract the Text from PDF Documents

Search Text in PDF Documents

Extract the Images from PDF Documents

Convert PDF Pages to Images or to Multipage TIFF

Print PDF Documents to a Printer

Convert PDF pages to HTML documents

HTML to PDF Converter for .NET - C# Code Sample for ASP.NET
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 the PDF standard used by the document
    htmlToPdfConverter.Document.PdfStandard = checkBoxPdfA.Checked ? PdfStandard.PdfA : PdfStandard.Pdf;

    // set PDF page margins
    htmlToPdfConverter.Document.Margins = new PdfMargins(5);

    // set whether to embed the true type font in PDF
    htmlToPdfConverter.Document.FontEmbedding = checkBoxFontEmbedding.Checked;

    // set triggering mode; for WaitTime mode set the wait time before convert
    switch (dropDownListTriggeringMode.SelectedValue)
    {
        case "Auto":
            htmlToPdfConverter.TriggerMode = ConversionTriggerMode.Auto;
            break;
        case "WaitTime":
            htmlToPdfConverter.TriggerMode = ConversionTriggerMode.WaitTime;
            htmlToPdfConverter.WaitBeforeConvert = int.Parse(textBoxWaitTime.Text);
            break;
        case "Manual":
            htmlToPdfConverter.TriggerMode = ConversionTriggerMode.Manual;
            break;
        default:
            htmlToPdfConverter.TriggerMode = ConversionTriggerMode.Auto;
            break;
    }

    // set header and footer
    SetHeader(htmlToPdfConverter.Document);
    SetFooter(htmlToPdfConverter.Document);

    // set the document security
    htmlToPdfConverter.Document.Security.OpenPassword = textBoxOpenPassword.Text;
    htmlToPdfConverter.Document.Security.AllowPrinting = checkBoxAllowPrinting.Checked;

    // set the permissions password too if an open password was set
    if (htmlToPdfConverter.Document.Security.OpenPassword != null && htmlToPdfConverter.Document.Security.OpenPassword != String.Empty)
        htmlToPdfConverter.Document.Security.PermissionsPassword = htmlToPdfConverter.Document.Security.OpenPassword + "_admin";

    // 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");

    // let the browser know how to open the PDF document, attachment or inline, and the 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();
}

private void SetHeader(PdfDocumentControl htmlToPdfDocument)
{
    // enable header display
    htmlToPdfDocument.Header.Enabled = checkBoxAddHeader.Checked;

    if (!htmlToPdfDocument.Header.Enabled)
        return;

    // set header height
    htmlToPdfDocument.Header.Height = 50;

    float pdfPageWidth = htmlToPdfDocument.PageOrientation == PdfPageOrientation.Portrait ?
                                htmlToPdfDocument.PageSize.Width : htmlToPdfDocument.PageSize.Height;

    float headerWidth = pdfPageWidth - htmlToPdfDocument.Margins.Left - htmlToPdfDocument.Margins.Right;
    float headerHeight = htmlToPdfDocument.Header.Height;

    // set header background color
    htmlToPdfDocument.Header.BackgroundColor = System.Drawing.Color.WhiteSmoke;

    string headerImageFile = Server.MapPath("~") + @"\DemoFiles\Images\HiQPdfLogo.png";
    PdfImage logoHeaderImage = new PdfImage(5, 5, 40, System.Drawing.Image.FromFile(headerImageFile));
    htmlToPdfDocument.Header.Layout(logoHeaderImage);

    // layout HTML in header
    PdfHtml headerHtml = new PdfHtml(50, 5, @"<span style=""color:Navy; font-family:Times New Roman; font-style:italic"">
                    Quickly Create High Quality PDFs with </span><a href=""http://www.hiqpdf.com"">HiQPdf</a>", null);
    headerHtml.FitDestHeight = true;
    headerHtml.FontEmbedding = checkBoxFontEmbedding.Checked;
    htmlToPdfDocument.Header.Layout(headerHtml);

    // create a border for header

    PdfRectangle borderRectangle = new PdfRectangle(1, 1, headerWidth - 2, headerHeight - 2);
    borderRectangle.LineStyle.LineWidth = 0.5f;
    borderRectangle.ForeColor = System.Drawing.Color.Navy;
    htmlToPdfDocument.Header.Layout(borderRectangle);
}

private void SetFooter(PdfDocumentControl htmlToPdfDocument)
{
    // enable footer display
    htmlToPdfDocument.Footer.Enabled = checkBoxAddFooter.Checked;

    if (!htmlToPdfDocument.Footer.Enabled)
        return;

    // set footer height
    htmlToPdfDocument.Footer.Height = 50;

    // set footer background color
    htmlToPdfDocument.Footer.BackgroundColor = System.Drawing.Color.WhiteSmoke;

    float pdfPageWidth = htmlToPdfDocument.PageOrientation == PdfPageOrientation.Portrait ?
                                htmlToPdfDocument.PageSize.Width : htmlToPdfDocument.PageSize.Height;

    float footerWidth = pdfPageWidth - htmlToPdfDocument.Margins.Left - htmlToPdfDocument.Margins.Right;
    float footerHeight = htmlToPdfDocument.Footer.Height;

    // layout HTML in footer
    PdfHtml footerHtml = new PdfHtml(5, 5, @"<span style=""color:Navy; font-family:Times New Roman; font-style:italic"">
                    Quickly Create High Quality PDFs with </span><a href=""http://www.hiqpdf.com"">HiQPdf</a>", null);
    footerHtml.FitDestHeight = true;
    footerHtml.FontEmbedding = checkBoxFontEmbedding.Checked;
    htmlToPdfDocument.Footer.Layout(footerHtml);

    // add page numbering
    System.Drawing.Font pageNumberingFont = new System.Drawing.Font(new System.Drawing.FontFamily("Times New Roman"),
                                8, System.Drawing.GraphicsUnit.Point);
    PdfText pageNumberingText = new PdfText(5, footerHeight - 12, "Page {CrtPage} of {PageCount}", pageNumberingFont);
    pageNumberingText.HorizontalAlign = PdfTextHAlign.Center;
    pageNumberingText.EmbedSystemFont = true;
    pageNumberingText.ForeColor = System.Drawing.Color.DarkGreen;
    htmlToPdfDocument.Footer.Layout(pageNumberingText);

    string footerImageFile = Server.MapPath("~") + @"\DemoFiles\Images\HiQPdfLogo.png";
    PdfImage logoFooterImage = new PdfImage(footerWidth - 40 - 5, 5, 40, System.Drawing.Image.FromFile(footerImageFile));
    htmlToPdfDocument.Footer.Layout(logoFooterImage);

    // create a border for footer
    PdfRectangle borderRectangle = new PdfRectangle(1, 1, footerWidth - 2, footerHeight - 2);
    borderRectangle.LineStyle.LineWidth = 0.5f;
    borderRectangle.ForeColor = System.Drawing.Color.DarkGreen;
    htmlToPdfDocument.Footer.Layout(borderRectangle);
}