EvoPdf Classic · HTML to PDF in C#

C# HTML to PDF Converter Library for .NET

EVO HTML to PDF Converter for .NET allows you to create PDF document from HTML documents with just a few line of C# or VB.NET code and it also allows you configure various parameters and features of the conversion process.

Classic v14.0 · Windows, .NET Framework 2.0+ and .NET 6–10 · Evaluate without registration — demo mode by default (watermarked) · Licensed with the HTML to PDF Converter license or EVO PDF Toolkit

$dotnet add package EvoPdf.HtmlToPdf

Windows · .NET Framework 2.0+ and .NET 6–10 (.NET Standard 2.0) · the EvoPdf metapackage bundles the Classic HTML to PDF library

Program.csC#
using EvoPdf;

var converter = new HtmlToPdfConverter();
byte[] pdf = converter.ConvertUrl(
    "https://www.evopdf.com");
File.WriteAllBytes("page.pdf", pdf);

// or from an HTML string, with a base URL
pdf = converter.ConvertHtml(
    "<b>Hello World</b>", "https://www.evopdf.com");
Classic API: EvoPdf namespace, one converter class, synchronous calls. API reference →
  • Windows 10 / 11 / Server 2016–2025
  • .NET Framework 2.0 – 4.8.1
  • .NET 6 → 10, .NET Standard 2.0
  • Azure Cloud Services & Virtual Machines
  • Web, console and desktop applications
Documented, with code

Every feature explained with its C# code

The product documentation walks through each capability with the exact C# code, from the converter options to bookmarks, forms and PDF editing. The evaluation package ships the same code as runnable demo projects.

  • Getting started with the converterC# code
  • HTML content destination and scalingC# code
  • Merge multiple HTML pages into one PDFC# code
  • Merge HTML with existing PDF documentsC# code
  • Convert only part of an HTML pageC# code
  • Repeat table header and footerC# code
  • Pages with authentication or through a proxyC# code
  • BookmarksC# code
  • PDF formsC# code
  • Internal links, file links and attachmentsC# code
  • HTML to raster image and SVGC# code
  • Merge, split, stamp and fill PDF documentsC# code
In detail

C# HTML to PDF Converter Library for .NET — how it works

C# HTML to PDF Code Samples for ASP.NET and MVC Applications

EVO HTML to PDF Converter for .NET can be used in ASP.NET, MVC and Azure Websites to convert HTML to PDF using your preferred language which can be C# or VB.NET.

In the code examples below you can see how to convert a HTML page from a given URL to PDF or a HTML code to PDF. You can configure the HTML viewer width and height, set the resulted PDF page size and orientation and also set navigation options like the navigation timeout or the conversion delay.

At a glance

Component
EvoPdf Classic · HTML to PDF in C#
NuGet package
EvoPdf.HtmlToPdf
Namespace
EvoPdf
Main class
HtmlToPdfConverter
Runs on
Windows · .NET Framework 2.0+ · .NET 6–10 (.NET Standard 2.0)
Version
Classic v14.0
License
HTML to PDF Converter license or EVO PDF Toolkit; evaluation without registration
Documentation →
Sample.csC#
protected void convertToPdfButton_Click(object sender, EventArgs e)
{
    // Create a HTML to PDF converter object with default settings
    HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();

    // Set license key received after purchase to use the converter in licensed mode
    // Leave it not set to use the converter in demo mode

    // Set HTML Viewer width in pixels which is the equivalent in converter of the browser window width
    htmlToPdfConverter.HtmlViewerWidth = int.Parse(htmlViewerWidthTextBox.Text);

    // Set HTML viewer height in pixels to convert the top part of a HTML page 
    // Leave it not set to convert the entire HTML
    if (htmlViewerHeightTextBox.Text.Length > 0)
        htmlToPdfConverter.HtmlViewerHeight = int.Parse(htmlViewerHeightTextBox.Text);

    // Set PDF page size which can be a predefined size like A4 or a custom size in points 
    // Leave it not set to have a default A4 PDF page
    htmlToPdfConverter.PdfDocumentOptions.PdfPageSize = SelectedPdfPageSize();

    // Set PDF page orientation to Portrait or Landscape
    // Leave it not set to have a default Portrait orientation for PDF page
    htmlToPdfConverter.PdfDocumentOptions.PdfPageOrientation = SelectedPdfPageOrientation();

    // Set the maximum time in seconds to wait for HTML page to be loaded 
    // Leave it not set for a default 60 seconds maximum wait time
    htmlToPdfConverter.NavigationTimeout = int.Parse(navigationTimeoutTextBox.Text);

    // Set an adddional delay in seconds to wait for JavaScript or AJAX calls after page load completed
    // Set this property to 0 if you don't need to wait for such asynchcronous operations to finish
    if (conversionDelayTextBox.Text.Length > 0)
        htmlToPdfConverter.ConversionDelay = int.Parse(conversionDelayTextBox.Text);

    // The buffer to receive the generated PDF document
    byte[] outPdfBuffer = null;

    if (convertUrlRadioButton.Checked)
    {
        string url = urlTextBox.Text;

        // Convert the HTML page given by an URL to a PDF document in a memory buffer
        outPdfBuffer = htmlToPdfConverter.ConvertUrl(url);
    }
    else
    {
        string htmlString = htmlStringTextBox.Text;
        string baseUrl = baseUrlTextBox.Text;

        // Convert a HTML string with a base URL to a PDF document in a memory buffer
        outPdfBuffer = htmlToPdfConverter.ConvertHtml(htmlString, baseUrl);
    }

    // Send the PDF as response to browser

    // Set response content type
    Response.AddHeader("Content-Type", "application/pdf");

    // Instruct the browser to open the PDF file as an attachment or inline
    Response.AddHeader("Content-Disposition", String.Format("{0}; filename=Getting_Started.pdf; size={1}",
        openInlineCheckBox.Checked ? "inline" : "attachment", outPdfBuffer.Length.ToString()));

    // Write the PDF document buffer to HTTP response
    Response.BinaryWrite(outPdfBuffer);

    // End the HTTP response and stop the current page processing
    Response.End();
}
Sample.csC#
[HttpPost]
public ActionResult ConvertHtmlToPdf(FormCollection collection)
{
    // Create a HTML to PDF converter object with default settings
    HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();

    // Set HTML Viewer width in pixels which is the equivalent in converter of the browser window width
    htmlToPdfConverter.HtmlViewerWidth = int.Parse(collection["htmlViewerWidthTextBox"]);

    // Set HTML viewer height in pixels to convert the top part of a HTML page 
    // Leave it not set to convert the entire HTML
    if (collection["htmlViewerHeightTextBox"].Length > 0)
        htmlToPdfConverter.HtmlViewerHeight = int.Parse(collection["htmlViewerHeightTextBox"]);

    // Set PDF page size which can be a predefined size like A4 or a custom size in points 
    // Leave it not set to have a default A4 PDF page
    htmlToPdfConverter.PdfDocumentOptions.PdfPageSize = SelectedPdfPageSize(collection["pdfPageSizeDropDownList"]);

    // Set PDF page orientation to Portrait or Landscape
    // Leave it not set to have a default Portrait orientation for PDF page
    htmlToPdfConverter.PdfDocumentOptions.PdfPageOrientation = SelectedPdfPageOrientation(collection["pdfPageOrientationDropDownList"]);

    // Set the maximum time in seconds to wait for HTML page to be loaded 
    // Leave it not set for a default 60 seconds maximum wait time
    htmlToPdfConverter.NavigationTimeout = int.Parse(collection["navigationTimeoutTextBox"]);

    // Set an adddional delay in seconds to wait for JavaScript or AJAX calls after page load completed
    // Set this property to 0 if you don't need to wait for such asynchcronous operations to finish
    if (collection["conversionDelayTextBox"].Length > 0)
        htmlToPdfConverter.ConversionDelay = int.Parse(collection["conversionDelayTextBox"]);

    string url = collection["urlTextBox"];

    // Convert the HTML page given by an URL to a PDF document in a memory buffer
    byte[] outPdfBuffer = htmlToPdfConverter.ConvertUrl(url);

    // Send the PDF file to browser
    FileResult fileResult = new FileContentResult(outPdfBuffer, "application/pdf");
    fileResult.FileDownloadName = "Getting_Started.pdf";

    return fileResult;
}
Licensing

Perpetual licenses, updates and support included for a year

The HTML to PDF Converter license (450 USD Deployment / 1200 USD Company) covers the Classic and the Next converter; the EVO PDF Toolkit (650 / 1400 USD) covers every component on this site, Classic tools included. The Company License includes redistribution.