Adding HTML to PDF Elements to a PDF Document

EVO HTML to PDF Converter allows you to convert a HTML page to PDF by adding a HtmlToPdfElement object at a given location in a PDF document. You can add multiple HTML to PDF Elements in the same PDF document.

A HtmlToPdfElement allows you to set most of the HTML to PDF conversion options available when converting HTML to PDF using the HtmlToPdfConverter class.

protected void convertToPdfButton_Click(object sender, EventArgs e)
{
    // Create a PDF document
    Document pdfDocument = new Document();

    // Create a PDF page where to add the first HTML
    PdfPage firstPdfPage = pdfDocument.AddPage();

    try
    {
        // The element location in PDF
        float xLocation = float.Parse(xLocationTextBox.Text);
        float yLocation = float.Parse(yLocationTextBox.Text);

        // The URL of the HTML page to convert to PDF
        string urlToConvert = urlTextBox.Text;

        // Create the HTML to PDF element
        HtmlToPdfElement htmlToPdfElement = new HtmlToPdfElement(xLocation, yLocation, urlToConvert);

        // Optionally set the HTML viewer width
        htmlToPdfElement.HtmlViewerWidth = int.Parse(htmlViewerWidthTextBox.Text);

        // Optionally set the HTML viewer height
        if (htmlViewerHeightTextBox.Text.Length > 0)
            htmlToPdfElement.HtmlViewerHeight = int.Parse(htmlViewerHeightTextBox.Text);

        // Optionally set the HTML content clipping option to force the HTML content width to be exactly HtmlViewerWidth pixels
        htmlToPdfElement.ClipHtmlView = clipContentCheckBox.Checked;

        // Optionally set the destination width in PDF
        if (contentWidthTextBox.Text.Length > 0)
            htmlToPdfElement.Width = float.Parse(contentWidthTextBox.Text);

        // Optionally set the destination height in PDF
        if (contentHeightTextBox.Text.Length > 0)
            htmlToPdfElement.Height = float.Parse(contentHeightTextBox.Text);

        // Optionally set a delay before conversion to allow asynchonous scripts to finish
        htmlToPdfElement.ConversionDelay = 2;

        // Add the HTML to PDF element to PDF document
        // The AddElementResult contains the bounds of the HTML to PDF Element in last rendered PDF page
        // such that you can start a new PDF element right under it
        AddElementResult result = firstPdfPage.AddElement(htmlToPdfElement);

        // Save the PDF document in a memory buffer
        byte[] outPdfBuffer = pdfDocument.Save();

        // 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("attachment; filename=Add_HTML_to_PDF_Elements_to_PDF.pdf; size={0}", 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();
    }
    finally
    {
        // Close the PDF document
        pdfDocument.Close();
    }
}

A live demo for adding HTML to PDF Elements to a PDF document with complete C# code can be found on product website.

 

 

Set Background and Foreground of PDF Pages Resulted from HTML to PDF Conversion

EVO HTML to PDF Converter allows you add elements in PDF pages background in HtmlToPdfConverter.BeforeRenderPdfPageEvent event handler which is called right before the main content of the PDF page is rendered by converter. You can find a C# sample code for this below:

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
    htmlToPdfConverter.LicenseKey = "4W9+bn19bn5ue2B+bn1/YH98YHd3d3c=";

    // Set a handler for BeforeRenderPdfPageEvent where to set the background image in each PDF page before main content is rendered
    htmlToPdfConverter.BeforeRenderPdfPageEvent += new BeforeRenderPdfPageDelegate(htmlToPdfConverter_BeforeRenderPdfPageEvent);

    try
    {
        // 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("attachment; filename=Add_Elements_in_Background.pdf; size={0}", 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();
    }
    finally
    {
        // Uninstall the handler
        htmlToPdfConverter.BeforeRenderPdfPageEvent -= new BeforeRenderPdfPageDelegate(htmlToPdfConverter_BeforeRenderPdfPageEvent);
    }
}

/// <summary>
/// The BeforeRenderPdfPageEvent event handler where a background image is set in each PDF page
/// before the main content is rendered
/// </summary>
/// <param name="eventParams">The event parameter containing the PDF page being rendered</param>
void htmlToPdfConverter_BeforeRenderPdfPageEvent(BeforeRenderPdfPageParams eventParams)
{
    if (!addBackgroundImageCheckBox.Checked)
        return;

    // Get the PDF page being rendered
    PdfPage pdfPage = eventParams.Page;

    // Get the PDF page drawable area width and height
    float pdfPageWidth = pdfPage.ClientRectangle.Width;
    float pdfPageHeight = pdfPage.ClientRectangle.Height;

    // The image to be added as background
    string backgroundImagePath = Server.MapPath("~/DemoAppFiles/Input/Images/background.jpg");

    // The image element to add in background
    ImageElement backgroundImageElement = new ImageElement(0, 0, pdfPageWidth, pdfPageHeight, backgroundImagePath);
    backgroundImageElement.KeepAspectRatio = true;
    backgroundImageElement.EnlargeEnabled = true;

    // Add the background image element to PDF page before the main content is rendered
    pdfPage.AddElement(backgroundImageElement);
}

You can see a live demo for adding elements in PDF pages background in demo website.

EVO HTML to PDF Converter also allows you add elements over the PDF pages main content in HtmlToPdfConverter.AfterRenderPdfPageEvent event handler which is called right after the main content of the PDF page was rendered by converter. The C# sample code for this features is below:

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
    htmlToPdfConverter.LicenseKey = "4W9+bn19bn5ue2B+bn1/YH98YHd3d3c=";

    // Set a handler for AfterRenderPdfPageEvent where to add the stamp in each PDF page over the main content
    htmlToPdfConverter.AfterRenderPdfPageEvent += new AfterRenderPdfPageDelegate(htmlToPdfConverter_AfterRenderPdfPageEvent);

    try
    {
        // 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("attachment; filename=Add_Elements_Over_Main_Content.pdf; size={0}", 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();
    }
    finally
    {
        // Uninstall the handler
        htmlToPdfConverter.AfterRenderPdfPageEvent -= new AfterRenderPdfPageDelegate(htmlToPdfConverter_AfterRenderPdfPageEvent);
    }
}

void htmlToPdfConverter_AfterRenderPdfPageEvent(AfterRenderPdfPageParams eventParams)
{
    if (!addStampCheckBox.Checked)
        return;

    // Get the rendered PDF page
    PdfPage pdfPage = eventParams.Page;

    int pageNumber = eventParams.PageNumber;
    int pageCount = eventParams.PageCount;
    bool isOddPage = pageNumber % 2 != 0;

    // Get the PDF document
    Document pdfDocument = pdfPage.Document;

    // Get the PDF page drawable area width and height
    float pdfPageWidth = pdfPage.ClientRectangle.Width;
    float pdfPageHeight = pdfPage.ClientRectangle.Height;

    // Create a .NET font
    Font timesNewRomanFont = new Font("Times New Roman", 50, GraphicsUnit.Point);

    // Create a PDF font
    PdfFont pdfFont = pdfDocument.AddFont(timesNewRomanFont, true);

    // The stamp text
    string text = String.Format("Stamp on Page {0} of {1}", pageNumber, pageCount);

    // Measure the text 
    float textWidth = pdfFont.GetTextWidth(text);

    // Calculate the PDF page diagonal
    float pdfPageDiagonal = (float)Math.Sqrt(pdfPageWidth * pdfPageWidth + pdfPageHeight * pdfPageHeight);

    // The text location on PDF page diagonal
    float xLocation = (pdfPageDiagonal - textWidth) / 2;

    // Create the stamp as a rotated text element
    TextElement stampTextElement = new TextElement(xLocation, 0, text, pdfFont);
    stampTextElement.ForeColor = isOddPage ? Color.Blue : Color.Green;
    stampTextElement.Rotate((float)(Math.Atan(pdfPageHeight / pdfPageWidth) * (180 / Math.PI)));
    stampTextElement.Opacity = 75;

    // Add the stamp to PDF page
    pdfPage.AddElement(stampTextElement);
}

The live demo adding elements over PDF page main content can also be accessed in demo website.

 

Repeat HTML Table Header and Footer in PDF Pages

EVO HTML to PDF Converter can automatically repeat the thead and tfoot of a HTML table in all the PDF pages where the table is rendered.

This feature is very useful when rendering long HTML tables in PDF because these tables span on many PDF pages and the table header is necessary to identify what represents each table column. It can also be used to create section headers in PDF when an arbitrary content from HTML is wrapped in a table with thead.

The converter will automatically repeat the HTML table and footer in PDF pages. You can disable the header and footer repeating using the converter API and setting the PdfDocumentOptions.TableHeaderRepeatEnabled and PdfDocumentOptions.TableFooterRepeatEnabled properties to false, or you can disable it from HTML adding style=”display: table-row-group” to thead and tfoot tags. An object of PdfDocumentOptions type is exposed by the HtmlToPdfConverter.PdfDocumentOptions property.

You can find a working example for repeating HTML table header and footer in PDF pages with complete C# source code in product demo website.

Convert HTML Forms to Fillable PDF Forms using HTML to PDF Converter for .NET

EVO HTML to PDF Converter for .NET can be configured to convert HTML form elements like radio buttons, check boxes, text boxes and buttons to PDF form fields by simply turning on the PdfFormOptions. AutoPdfFormEnabled option.

You can also select in HTML the fields you want to be converted to PDF form fields using the data-pdf-form-field special attribute. The other HTML fields which were not explicitly selected will not be converted to PDF form fields.

C# Code Sample to Convert HTML Forms to PDF Forms

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
    htmlToPdfConverter.LicenseKey = "4W9+bn19bn5ue2B+bn1/YH98YHd3d3c=";

    // 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
    htmlToPdfConverter.ConversionDelay = 2;

    // Enable the automatic conversion of the HTML form to a PDF form 
    htmlToPdfConverter.PdfFormOptions.AutoPdfFormEnabled = createPdfFormCheckBox.Checked;

    // Set the submit buttons style
    htmlToPdfConverter.PdfFormOptions.SubmitButtonStyle.BackColor = Color.Beige;

    // Set the style of various types of text boxes
    htmlToPdfConverter.PdfFormOptions.TextBoxStyle.BackColor = Color.AliceBlue;
    htmlToPdfConverter.PdfFormOptions.PasswordTextBoxStyle.BackColor = Color.MistyRose;
    htmlToPdfConverter.PdfFormOptions.MultilineTextBoxStyle.BackColor = Color.AliceBlue;

    // Set the radio buttons style
    htmlToPdfConverter.PdfFormOptions.RadioButtonsGroupStyle.BackColor = Color.AntiqueWhite;

    // Set the checkboxes styles
    htmlToPdfConverter.PdfFormOptions.CheckBoxStyle.BackColor = Color.AntiqueWhite;

    // set the drop down lists style
    htmlToPdfConverter.PdfFormOptions.ComboBoxStyle.BackColor = Color.LightCyan;

    byte[] outPdfBuffer = null;

    if (convertHtmlRadioButton.Checked)
    {
        // Convert a HTML string to a PDF document with form fields
        string htmlWithForm = htmlStringTextBox.Text;
        outPdfBuffer = htmlToPdfConverter.ConvertHtml(htmlWithForm, String.Empty);
    }
    else
    {
        // Convert the HTML page to a PDF document with form fields
        string url = urlTextBox.Text;
        outPdfBuffer = htmlToPdfConverter.ConvertUrl(url);
    }

    // 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("attachment; filename=Auto_Create_PDF_Forms.pdf; size={0}", 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();
}

You can also see a demo for converting HTML Forms to Live PDF Forms with complete C# source code.

 

Automatically Create a Hierarchy of Bookmarks using EVO HTML to PDF Converter for .NET

EVO HTML to PDF Converter can be configured to automatically create a hierarchy of bookmarks in PDF document based on H1 to H6 head tags found in HTML document by simply turning on a flag.

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
    htmlToPdfConverter.LicenseKey = "4W9+bn19bn5ue2B+bn1/YH98YHd3d3c=";

    // Auto Create a hierarchy of bookmarks from H1 to H6 tags found in HTML
    if (autoBookmarksCheckBox.Checked)
    {
        // Enable the creation of a hierarchy of bookmarks from H1 to H6 tags
        htmlToPdfConverter.PdfBookmarkOptions.AutoBookmarksEnabled = true;

        // Display the bookmarks panel in PDF viewer when the generated PDF is opened
        htmlToPdfConverter.PdfViewerPreferences.PageMode = ViewerPageMode.UseOutlines;
    }

    // Convert the HTML page to a PDF document in a memory buffer
    byte[] outPdfBuffer = htmlToPdfConverter.ConvertUrl(urlTextBox.Text);

    // 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("attachment; filename=Auto_Create_Hierarchical_Bookmarks.pdf; size={0}", 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();
}

See the live demo for automatically creating a bokmarks hierachy with HTML to PDF converter for .NET.

Another option to create bookmarks is to specify the HTML elements to bookmark using the API.

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
    htmlToPdfConverter.LicenseKey = "4W9+bn19bn5ue2B+bn1/YH98YHd3d3c=";

    // Select the HTML elements to bookmark by setting a list of CSS selectors
    htmlToPdfConverter.PdfBookmarkOptions.HtmlElementSelectors = new string[] { htmlElementsSelectorTextBox.Text };

    // Display the bookmarks panel in PDF viewer when the generated PDF is opened
    htmlToPdfConverter.PdfViewerPreferences.PageMode = ViewerPageMode.UseOutlines;

    // Convert the HTML page to a PDF document in a memory buffer
    byte[] outPdfBuffer = htmlToPdfConverter.ConvertUrl(urlTextBox.Text);

    // 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("attachment; filename=Select_in_API_Elements_to_Bookmark.pdf; size={0}", 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();
}

See  the live demo for  selecting in API the HTML elements to bookmark in the PDF document generated by HTML to PDF Converter for .NET.

You can also define the bookmarks directly in the HTML document you convert using some special attributes. You can set the attribute ‘data-bookmark-enabled‘ on a HTML element to enable the creation a bookmark for that element in PDF. Additionally you can specify the bookmark level in hierarchy with ‘data-bookmark-level‘ attribute and the bookmark title with ‘data-bookmark-text‘ attribute.

See a live demo for  defining in HTML the bookmark hierarchy  to be created by HTML to PDF converter for .NET.

 

Automatically Create Table of Contents with EVO HTML to PDF Converter for .NET

EVO HTML to PDF Converter for .NET can be configured to automatically create a table of contents in PDF document based on H1 to H6 head tags found in HTML document by simply turning on a flag.

You can also define a table of contents directly in HTML using a set of special attributes. You can set the attribute ‘data-toc-item‘ on a HTML element to enable the creation a table of contents entry for that element in PDF. Additionally you can specify the item level in table of contents with ‘data-toc-level‘ attribute and the bookmark title with ‘data-toc-title‘ attribute.

The automatically generated table of contents is hierarchical, having the items structured on many levels and can contain the page number in PDF for each item. Each item in the table of contents is a link to the corresponding content in the PDF document and when you click on that link the PDF viewer will scroll to that content in PDF document.

You can customize the table of contents style for title, for each level of items and for the page numbers. You can change the font, color, background using the well known CSS syntax.

The relevant C# code for automatically creating a table of contents is:

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
    htmlToPdfConverter.LicenseKey = "4W9+bn19bn5ue2B+bn1/YH98YHd3d3c=";

    // Enable the creation of a table of contents from H1 to H6 tags found in HTML
    htmlToPdfConverter.TableOfContentsOptions.AutoTocItemsEnabled = autoTableOfContentsCheckBox.Checked;

    // Optionally set the table of contents title
    htmlToPdfConverter.TableOfContentsOptions.Title = "Table of Contents";

    // Optionally set the title style using CSS sttributes
    htmlToPdfConverter.TableOfContentsOptions.TitleStyle = "color:navy; font-family:'Times New Roman'; font-size:28px; font-weight:normal";

    // Optionally set the style of level 1 items in table of contents
    string level1TextStyle = "color:black; font-family:'Times New Roman'; font-size:20px; font-weight:normal; font-style:normal; background-color:#F0F0F0";
    htmlToPdfConverter.TableOfContentsOptions.SetItemStyle(1, level1TextStyle);

    // Optionally set the page numbers style of level 1 items in table of contents
    string level1PageNumberStyle = "color:black; padding-right:3px; background-color:#F0F0F0; font-size:14px; font-weight:bold";
    htmlToPdfConverter.TableOfContentsOptions.SetPageNumberStyle(1, level1PageNumberStyle);

    // Convert the HTML page to a PDF document in a memory buffer
    byte[] outPdfBuffer = htmlToPdfConverter.ConvertUrl(urlTextBox.Text);

    // 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("attachment; filename=Auto_Create_Table_of_Contents.pdf; size={0}", 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();
}

 

You can see the live demo for automatically creating table of contents using the HTML to PDF Converter  for .NET, with full C# source code and detailed description.

EVO HTML to PDF Converter Library for .NET

html-to-pdf-box

EVO HTML to PDF Converter for .NET is a library that can be easily integrated and distributed in your ASP.NET and MVC web sites, desktop applications, Windows services and Azure cloud services to convert web pages, HTML strings and streams to PDF, to images or to SVG and to create nicely formatted and easily maintainable PDF reports and documents. The converter has full support for HTML5, CSS3, SVG, Canvas, Web Fonts and JavaScript. Does not require installation or any third party tools.

EVO HTML to PDF Converter Library for .NET combines the powerful printer friendly PDF format with the flexibility of the popular HTML format into a modern tool for creating nicely formatted and easily maintainable PDF reports and documents.

multiplatform

Besides .NET platform on Windows, the EVO HTML to PDF Converter library is also available on various other platforms in various programming languages like Java, Azure, WinRT and Windows Phone, Mono, Xamarin or .NET Core, Linux, MacOS, iOS or Android.

evo-pdf_23The main features of the HTML to PDF Converter are listed below. You can find a complete list of all EVO HTML to PDF Converter for .NET Features on product webpage.

  • The library does not rely on external tools or services and does not require installation or server configuration changes, supporting simple copy deployment.
  • It has been designed and tested to work reliably in multithreaded environments and in high traffic websites.
  • The converter has full support for HTML tags, CSS and JavaScript and for advanced HTML5 features like CSS3, SVG and Web Fonts.
  • The rendering is extremely accurate and the resulted PDF preserves all the graphics, images, texts, fonts and layout of the original HTML document, no matter how complex would be.
  • The converter includes advanced automations for creating table of contents and hierarchical bookmarks based on HTML document structure and for transforming HTML forms into fillable PDF forms.
  • With EVO HTML to PDF Converter not only you can create great new PDF documents but you can also edit, merge, split and fill existing PDF documents.
  • The converter can be bundled with the other PDF tools for .NET in EVO PDF Toolkit to offer you additional capabilities to view PDF documents or to extract the text and images from existing PDF documents.

Using EVO HTML to PDF Converter for .NET you can convert any HTML page to PDF, to Image or to SVG in just a few lines of C# or VB.NET code:

using EvoPdf;
HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();
byte[] outPdfBuffer = htmlToPdfConverter.ConvertUrl(url);

Please see the Fully Featured HTML to PDF Demo with complete C# and VB.NET source code samples for ASP.NET, MVC and Window Forms

You can also download HTML to PDF Converter for .NET zip package of the software containing the development libraries, demo applications for ASP.NET, MVC and Windows Forms in C# and VB.NET together with the full library documentation.