Convert HTML to PDF in ASP.NET, MVC and Windows Forms using C# and VB.NET

html-to-pdf-boxCreating PDF documents programmatically in a traditional way by adding text and images at fixed positions in PDF pages is a time consuming and inflexible approach which takes a lot of effort to create a good looking document. The best alternative for this approach is to design your document as a HTML page and convert that HTML page to a PDF document preserving all the styles and layout from the original HTML page.

 

You can use the EVO HTML to PDF Converter Library for .NET to instantly create styled, good looking and complex PDF documents right from existing HTML pages and reports. The converter combines the powerful printer friendly PDF format with the flexibility of the HTML format into a great tool for creating nicely formatted and easily maintainable PDF reports and documents.

The most important features of the EVO HTML to PDF conversion are:

  • 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.

All the software features are detailed on HTML to PDF Converter for .NET  webpage.

C# Code Sample for ASP.NET

The C# sample code below shows how you can convert HTML pages or HTML strings to PDF in just a few lines of code. An instance of the HtmlToPdfConverter class is created and used to convert HTML to PDF. The result of conversion is a byte[] which is sent as response to browser.

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 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();
}

You can also see the HTML to PDF Converter for .NET Online Demo for all converter features with complete C# code.

Sample source code in C# and VB.NET for ASP.NET, MVC an Windows Forms can also be found in the software package you can download from website.

Convert HTML to Images in ASP.NET, MVC and Windows Forms using C# and VB.NET

EVO HTML to Image Converter can be used in any type of .NET application to convert HTML pages to raster images and to create thumbnails of the HTML pages. The HTML to Image Converter is not a standalone product, it is part of the HTML to PDF Converter Library and is represented by the HtmlToImageConverter class of that library. Using this class you can convert HTML pages to any type of raster image supported by the .NET framework like BMP, JPEG, PNG or GIF. When converting to PNG you can also choose to produce an image with transparent background.

The main features of the converter are:

  • Convert HTML pages to raster images
  • Create thumbnails of the HTML pages
  • Create transparent PNG images
  • Convert HTML pages to images in memory or to image files in a folder
  • Save the HTML pages images in various image formats
  • Does not depend on any third party tools
  • Support for .NET 2.0, .NET 4.0 frameworks and later
  • Documentation and C# samples for all the features

You can find a complete description of the software features on EVO HTML to Image Converter for .NET page of product website.

C# Code Sample for HTML to Image Conversion

The code below was taken from the HTML to Image Converter demo application available for download in the HTML to PDF Converter product package. In this sample an instance of the HtmlToImageConverter class is constructed and used to rasterize the HTML page to an image.

protected void convertToImageButton_Click(object sender, EventArgs e)
{
    // Create a HTML to Image converter object with default settings
    HtmlToImageConverter htmlToImageConverter = new HtmlToImageConverter();

    // Set HTML Viewer width in pixels which is the equivalent in converter of the browser window width
    htmlToImageConverter.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)
        htmlToImageConverter.HtmlViewerHeight = int.Parse(htmlViewerHeightTextBox.Text);

    // Set if the created image has a transparent background
    htmlToImageConverter.TransparentBackground = SelectedImageFormat() == System.Drawing.Imaging.ImageFormat.Png ? transparentBackgroundCheckBox.Checked : false;

    // 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
    htmlToImageConverter.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)
        htmlToImageConverter.ConversionDelay = int.Parse(conversionDelayTextBox.Text);

    System.Drawing.Image[] imageTiles = null;

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

        // Convert the HTML page given by an URL to a set of Image objects
        imageTiles = htmlToImageConverter.ConvertUrlToImageTiles(url);
    }
    else
    {
        string htmlString = htmlStringTextBox.Text;
        string baseUrl = baseUrlTextBox.Text;

        // Convert a HTML string with a base URL to a set of Image objects
        imageTiles = htmlToImageConverter.ConvertHtmlToImageTiles(htmlString, baseUrl);
    }

    // Save the first image tile to a memory buffer

    System.Drawing.Image outImage = imageTiles[0];

    // Create a memory stream where to save the image
    System.IO.MemoryStream imageOutputStream = new System.IO.MemoryStream();

    // Save the image to memory stream
    outImage.Save(imageOutputStream, SelectedImageFormat());

    // Write the memory stream to a memory buffer
    imageOutputStream.Position = 0;
    byte[] outImageBuffer = imageOutputStream.ToArray();

    // Close the output memory stream
    imageOutputStream.Close();

    // Send the image as response to browser

    string imageFormatName = imageFormatComboBox.SelectedValue.ToLower();

    // Set response content type
    Response.AddHeader("Content-Type", "image/" + (imageFormatName == "jpg" ? "jpeg" : imageFormatName));

    // Instruct the browser to open the image file as an attachment or inline
    Response.AddHeader("Content-Disposition", String.Format("attachment; filename={0}; size={1}", "HTML_to_Image." + imageFormatName, outImageBuffer.Length.ToString()));

    // Write the image buffer to HTTP response
    Response.BinaryWrite(outImageBuffer);

    // End the HTTP response and stop the current page processing
    Response.End();
}

The online demo for HTML to Image for .NET  Conversion allows you test the converter capabilities.

HTML to PDF for Mono

mono_logoEVO HTML to Converter for Mono allows you develop applications for various platforms using C# as development language. The Mono platform can be used to create applications for Mac OS, Linux and Windows and is a quite popular platform since many years ago.

EVO HTML to PDF Converter library for Mono can be easily integrated in Mono applications to convert HTML documents to PDF, raster images or SVG vector images. The library is a powerful tool helping you to instantly create nicely formatted and easily maintainable PDF reports directly from existing HTML reports.

The converter offers full support for HTML5, CSS3, JavaScript, SVG, web fonts, page breaks control with CSS and from API, automatically repeated HTML table header and footer, live URLs and internal links, automatically generated hierarchical bookmarks and table of contents, automatically generated fillable PDF forms and allows you to digitally sign and password protect the generated PDF documents.

The library was designed and tested to work reliably in multithreaded environments which makes it ideal for usage in high traffic websites and services.

In order to use the EVO HTML to PDF Converter for Mono you first have to install the EVO HTML to PDF Server. The server was built on .NET library to extend its capabilities to other platforms and languages. The client library that you link in your Mono applications will connect to the server to convert HTML to PDF, to Image or to SVG.

EVO HTML to PDF Converter Server can run either in a Windows Service on a Windows machine or in an Azure Cloud Service deployed in Microsoft Azure cloud. You can find detailed installation and uninstallation instructions in the Readme.txt file from the root of the downloaded package.

C# Code Sample for HTML to PDF Conversion in Mono

The EVO HTML to PDF Converter for Mono API allows you to convert a HTML document to PDF in just a few lines a code. The programming interface is also very rich and allows you customize the generated PDF document in various ways. The code below is copied from the demo for HTML to PDF Converter that you can find the in the Demo folder of the software Zip package.

static public void Main(string[] args)
{
    // parse argumenta
    if (!ParseArguments(args))
    {
        ShowUsage();
        return;
    }

    // convert HTML to PDF
    try
    {
        // create the HTML to PDF converter object
        HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter(serverIPAddress, serverPortNumber);

        // set license key
        htmlToPdfConverter.LicenseKey = "4W9+bn19bn5ue2B+bn1/YH98YHd3d3c=";

        // set service password if necessary
        if (serverPassword.Length > 0)
            htmlToPdfConverter.ServicePassword = serverPassword;

        // set PDF page size
        htmlToPdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;

        // set PDF page orientation
        htmlToPdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait;

        // convert the HTML page from given URL to PDF in a buffer
        byte[] pdfBytes = htmlToPdfConverter.ConvertUrl(urlToConvert);

        // write the PDF buffer in output file
        System.IO.File.WriteAllBytes("EvoHtmlToPdf.pdf", pdfBytes);
    }
    catch (Exception ex)
    {
        Console.WriteLine(String.Format("Error: {0}", ex.Message));
    }
}

Y0u can read more about HTML to PDF Converter for Mono on the product website.

HTML to PDF Converter for .NET Core

netcore_logo.NET Core is a modular version of the .NET Framework designed to be portable across platforms for maximum code reuse and code sharing. In addition, .NET Core is open-sourced and accept contributions from the community.

.NET Core is portable across platforms and you will be able to target with .NET Core desktop Windows as well as Windows devices and phones, IOS and Android devices, Mac and Linux operating systems.

.NET Core is modular because it is released through NuGet in smaller assembly packages. Rather than one large assembly that contains most of the core functionality, .NET Core is made available as smaller feature-centric packages.

Developing a HTML to PDF Converter for .NET Core platform is chalanging because of the security and functionality restrictions imposed by the platform in order to be portable.

The HTML to PDF Converter for .NET Core solution from EvoPdf.com can be easily integrated in .NET Core applications to convert HTML documents to PDF, raster images or SVG vector images. The library is a powerful tool helping you to instantly create nicely formatted and easily maintainable PDF reports directly from existing HTML reports.

The converter offers full support for HTML5, CSS3, JavaScript, SVG, web fonts, page breaks control with CSS and from API, automatically repeated HTML table header and footer, live URLs and internal links, automatically generated hierarchical bookmarks and table of contents, automatically generated fillable PDF forms and allows you to digitally sign and password protect the generated PDF documents.

The library was designed and tested to work reliably in multithreaded environments which makes it ideal for usage in high traffic websites and services.

EVO HTML to PDF Converter for .NET Core is distributed in a Zip archive. You can follow the link below to download the software. The Zip archive contains the client library you can use in your .NET Core applications, the HTML to PDF Server for Windows and for Azure and a console demo application.

In order to use the EVO HTML to PDF Converter for .NET Core you first have to install the EVO HTML to PDF Server. The server was built on .NET library to extend its capabilities to other platforms and languages. The client library that you link in your .NET Core applications will connect to the server to convert HTML to PDF, to Image or to SVG.
EVO HTML to PDF Converter Server can run either in a Windows Service on a Windows machine or in an Azure Cloud Service deployed in Microsoft Azure cloud. You can find detailed installation and uninstallation instructions in the Readme.txt file from the root of the downloaded package.

C# Code Sample for HTML to PDF Conversion .NET Core

The EVO HTML to PDF Converter for .NET Core API allows you to convert a HTML document to PDF in just a few lines a code. The programming interface is also very rich and allows you customize the generated PDF document in various ways. The code below is copied from the demo for HTML to PDF Converter that you can find the in the Demo folder of the software Zip package.

public static void Main(string[] args)
{
    // parse argumenta
    if (!ParseArguments(args))
    {
        ShowUsage();
        return;
    }

    // convert HTML to PDF
    try
    {
        // create the HTML to PDF converter object
        HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter(serverIPAddress, serverPortNumber);

        // set license key
        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;

        // set service password if necessary
        if (serverPassword.Length > 0)
            htmlToPdfConverter.ServicePassword = serverPassword;

        // set PDF page size
        htmlToPdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;

        // set PDF page orientation
        htmlToPdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait;

        // convert the HTML page from given URL to PDF in a buffer
        byte[] pdfBytes = htmlToPdfConverter.ConvertUrl(urlToConvert);

        // write the PDF buffer in output file
        System.IO.File.WriteAllBytes("EvoHtmlToPdf.pdf", pdfBytes);
    }
    catch (Exception ex)
    {
        Console.WriteLine(String.Format("Error: {0}", ex.Message));
    }
}

 

HTML to PDF Converter for Xamarin

xamarin_logoEVO HTML to Converter for Xamarin allows you develop applications for iOS, Mac OS, Android and Windows using C# as development language. A large part of the code you write for Xamarin platform can be reused to produce native application for multiple platforms. The HTML to PDF Converter for Xamarin package you can download contains demo applications for iOS, Android and Mac OS.

EVO HTML to PDF Converter Library for Xamarin can be easily integrated in iOS, Android and Mac OS X applications to convert HTML documents to PDF, raster images or SVG vector images. The library is a powerful tool helping you to instantly create nicely formatted and easily maintainable PDF reports directly from existing HTML reports.

The converter offers full support for HTML5, CSS3, JavaScript, SVG, web fonts, page breaks control with CSS and from API, automatically repeated HTML table header and footer, live URLs and internal links, automatically generated hierarchical bookmarks and table of contents, automatically generated fillable PDF forms and allows you to digitally sign and password protect the generated PDF documents.

In order to use the EVO HTML to PDF Converter for Xamarin you first have to install the EVO HTML to PDF Server. The server was built on .NET library to extend its capabilities to other platforms and languages. The client library that you link in your Xamarin applications will connect to the server to convert HTML to PDF, to Image or to SVG.
EVO HTML to PDF Converter Server can run either in a Windows Service on a Windows machine or in an Azure Cloud Service deployed in Microsoft Azure cloud. You can find detailed installation and uninstallation instructions in the Readme.txt file from the root of the downloaded package.

The EVO HTML to PDF Converter for Xamarin API allows you to convert a HTML document to PDF in just a few lines a code. The programming interface is also very rich and allows you customize the generated PDF document in various ways. The code below is copied from the demo for HTML to PDF Converter that you can find the in the Demo folder of the software Zip package.

C# Code to Convert HTML to PDF in Xamarin for iOS Applications

private void ConvertUrlToPdf()
{
    try {
	    String serverIPAddress = serverIP.Text;
	    uint serverPortNumber = uint.Parse (serverPort.Text);

	    // create the HTML to PDF converter object
	    HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter (serverIPAddress, serverPortNumber);

	    // set license key
	    htmlToPdfConverter.LicenseKey = "4W9+bn19bn5ue2B+bn1/YH98YHd3d3c=";

	    // set service password if necessary
	    if (serverPassword.Text.Length > 0)
		    htmlToPdfConverter.ServicePassword = serverPassword.Text;

	    // set PDF page size
	    htmlToPdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;

	    // set PDF page orientation
	    htmlToPdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait;

	    // convert the HTML page from given URL to PDF in a buffer
	    byte[] pdfBytes = htmlToPdfConverter.ConvertUrl (urlToConvert.Text);

	    string documentsFolder = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments); 
	    string outPdfFile = System.IO.Path.Combine (documentsFolder, "EvoHtmlToPdf.pdf");

	    // write the PDF buffer in output file
	    System.IO.File.WriteAllBytes (outPdfFile, pdfBytes);

	    // open the PDF document in the default PDF viewer
	    UIDocumentInteractionController pdfViewer = UIDocumentInteractionController.FromUrl (Foundation.NSUrl.FromFilename (outPdfFile));
	    pdfViewer.PresentOpenInMenu (this.View.Frame, this.View, true);

    } catch (Exception ex) {
	    UIAlertView alert = new UIAlertView ();
	    alert.Title = "Error";
	    alert.AddButton ("OK");
	    alert.Message = ex.Message;
	    alert.Show ();
    }
}

You can find more details about the EVO HTML to PDF Converter for Xamarin on product webpage.

HTML to PDF Converter for WinRT and Window Phone

winrt_logoEVO HTML to Converter for WinRT and Windows Phone is a portable .NET library that can be used in Windows Store Applications for Windows and for Windows Phone.

EVO HTML to PDF Converter library for WinRT can be easily integrated in Windows Store applications to convert HTML documents to PDF, raster images or SVG vector images. The library is a powerful tool helping you to instantly create nicely formatted and easily maintainable PDF reports directly from existing HTML reports.

The converter offers full support for HTML5, CSS3, JavaScript, SVG, web fonts, page breaks control with CSS and from API, automatically repeated HTML table header and footer, live URLs and internal links, automatically generated hierarchical bookmarks and table of contents, automatically generated fillable PDF forms and allows you to digitally sign and password protect the generated PDF documents.

The library was designed and tested to work reliably in multithreaded environments which makes it ideal for usage in high traffic websites and services.

In order to use the EVO HTML to PDF Converter for WinRT and Windows Phone you first have to install the EVO HTML to PDF Server. The server was built on .NET library to extend its capabilities to other platforms and languages. The portable client library that you link in your Windows and Windows Phone applications will connect to the server to convert HTML to PDF, to Image or to SVG.

EVO HTML to PDF Converter Server can run either in a Windows Service on a Windows machine or in an Azure Cloud Service deployed in Microsoft Azure cloud. You can find detailed installation and uninstallation instructions in the Readme.txt file from the root of the downloaded package.

You can download the HTML to PDF Converter for WinRT and Windows Phone Package from product web page.

The EVO HTML to PDF Converter for WinRT API allows you to convert a HTML document to PDF in just a few lines a code. The programming interface is also very rich and allows you customize the generated PDF document in various ways. The code below is copied from the demo for HTML to PDF Converter that you can find the in the Demo folder of the software Zip package.

private async void buttonConvertUrlToPdf_Click(object sender, RoutedEventArgs e)
{
    // If another conversion is in progress then ignore current request
    bool ignoreRequest = false;
    lock(pendingConversionSync)
    {
        if (pendingConversion)
            ignoreRequest = true;
        else
        {
            msgUrlToPdfInProgress.Visibility = Windows.UI.Xaml.Visibility.Visible;
            pendingConversion = true;
        }
    }

    if (ignoreRequest)
        return;

    try
    {
        String serverIP = textBoxServerIP.Text;
        uint port = uint.Parse(textBoxServerPort.Text);

        HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter(serverIP, port);
                
        // set license key
        htmlToPdfConverter.LicenseKey = "4W9+bn19bn5ue2B+bn1/YH98YHd3d3c=";

        // set service password if necessary
        if (textBoxServicePassword.Text.Length > 0)
            htmlToPdfConverter.ServicePassword = textBoxServicePassword.Text;

        // set HTML viewer width
        htmlToPdfConverter.HtmlViewerWidth = int.Parse(textBoxHtmlViewerWidth.Text);

        // set HTML viewer height if necessary
        if (textBoxHtmlViewerHeight.Text.Length > 0)
            htmlToPdfConverter.HtmlViewerHeight = int.Parse(textBoxHtmlViewerHeight.Text);

        // set navigation timeout
        htmlToPdfConverter.NavigationTimeout = int.Parse(textBoxHtmlViewerWidth.Text);

        // set conversion delay if necessary
        if (textBoxConversionDelay.Text.Length > 0)
            htmlToPdfConverter.ConversionDelay = int.Parse(textBoxConversionDelay.Text);

        // set PDF page size
        htmlToPdfConverter.PdfDocumentOptions.PdfPageSize = SelectedPdfPageSize();

        // set PDF page orientation
        htmlToPdfConverter.PdfDocumentOptions.PdfPageOrientation = SelectedPdfPageOrientation();

        // set margins
        htmlToPdfConverter.PdfDocumentOptions.LeftMargin = int.Parse(textBoxLeftMargin.Text);
        htmlToPdfConverter.PdfDocumentOptions.RightMargin = int.Parse(textBoxRightMargin.Text);
        htmlToPdfConverter.PdfDocumentOptions.TopMargin = int.Parse(textBoxTopMargin.Text);
        htmlToPdfConverter.PdfDocumentOptions.BottomMargin = int.Parse(textBoxBottomMargin.Text);
                
        // add header
        if (checkBoxAddHeader.IsChecked != null && (bool)checkBoxAddHeader.IsChecked)
        {
            htmlToPdfConverter.PdfDocumentOptions.ShowHeader = true;
            DrawHeader(htmlToPdfConverter, true);
        }

        // add footer
        if (checkBoxAddFooter.IsChecked != null && (bool)checkBoxAddFooter.IsChecked)
        {
            htmlToPdfConverter.PdfDocumentOptions.ShowFooter = true;
            DrawFooter(htmlToPdfConverter, true, true);
        }

        string urlToConvert = textBoxUrl.Text;
        string errorMessage = null;

        // Convert the HTML page from give URL to PDF in a buffer
        byte[] pdfBytes = await Task.Run<byte[]>(() =>
        {
            byte[] resultBytes = null;
            try
            {
                resultBytes = htmlToPdfConverter.ConvertUrl(urlToConvert);
            }
            catch (Exception ex)
            {
                errorMessage = String.Format("Conversion failed. {0}", ex.Message);
                return null;
            }

            return resultBytes;
        });

        if (pdfBytes == null)
        {
            MessageDialog errorMessageDialog = new MessageDialog(errorMessage, "Conversion failed");
            await errorMessageDialog.ShowAsync();
            return;
        }

        // Save the PDF in a file
        Windows.Storage.StorageFolder installedLocation = Windows.Storage.ApplicationData.Current.LocalFolder;
        StorageFile outStorageFile = installedLocation.CreateFileAsync("EvoHtmlToPdf.pdf", CreationCollisionOption.ReplaceExisting).AsTask().Result;
        FileIO.WriteBytesAsync(outStorageFile, pdfBytes).AsTask().Wait();

        // Open the file in a PDF viewer
        await Windows.System.Launcher.LaunchFileAsync(outStorageFile);
    }
    finally
    {
        lock (pendingConversionSync)
        {
            msgUrlToPdfInProgress.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
            pendingConversion = false;
        }
    }
}

 

HTML to PDF Converter for Java

java_logoJava is for many years the preferred platform for many software projects but there are not so many good HTML to PDF Converter for this platform.

EVO HTML to PDF Converter for Java brings the power of EVO HTML to PDF Conversion technology and all its outstanding features to Java platform. You can use the library in any type of Java application on any operating system supporting Java. The library requires at least JRE 1.6 or newer to be installed on the client machine.

EVO HTML to PDF Converter library for Java can be easily integrated in Java server and desktop applications to convert HTML documents to PDF, raster images or SVG vector images. The library is a powerful tool helping you to instantly create nicely formatted and easily maintainable PDF reports directly from existing HTML reports.

The converter offers full support for HTML5, CSS3, JavaScript, SVG, web fonts, page breaks control with CSS and from API, automatically repeated HTML table header and footer, live URLs and internal links, automatically generated hierarchical bookmarks and table of contents, automatically generated fillable PDF forms and allows you to digitally sign and password protect the generated PDF documents.

The library was designed and tested to work reliably in multithreaded environments which makes it ideal for usage in high traffic websites and services.

EVO HTML to PDF Converter for Java is distributed in a Zip archive. You can download the HTML to PDF Converter for Java software from product page. The Zip archive contains the client library for Java as a JAR file for JRE 1.6 or newer, the API documentation in HTML format, the HTML to PDF Server and the demo applications for Java.

In order to use the EVO HTML to PDF Converter for Java you first have to install the EVO HTML to PDF Server. The server was built on .NET library to extend its capabilities to other platforms and languages. The JAR library that you link in your Java application will connect to the server to convert HTML to PDF, to Image or to SVG.
EVO HTML to PDF Converter Server can run either in a Windows Service on a Windows machine or in an Azure Cloud Service deployed in Microsoft Azure cloud. You can find detailed installation and uninstallation instructions in the Readme.txt file from the root of the downloaded package.

The EVO HTML to PDF Converter for Java API allows you to convert a HTML document to PDF in just a few lines a code. The programming interface is also very rich and allows you customize the generated PDF document in various ways. The code below is copied from the Getting Started demo for HTML to PDF Converter that you can find the in the samples folder of the software Zip package.

private byte[] convertHtmlToPdf(boolean convertURL) throws Exception 
{
    String serverIP = textServerIP.getText();
    int port = Integer.parseInt(textServerPort.getText());

    // create the HTML to PDF converter
    HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter(serverIP, port);

    // set license key
    htmlToPdfConverter.setLicenseKey("B4mYiJubiJiInoaYiJuZhpmahpGRkZGImg==");

    // set service password if necessary
    if (textServicePassword.getText().length() > 0)
	    htmlToPdfConverter.setServicePassword(textServicePassword.getText());

    // set HTML viewer width
    int viewerWidth = Integer.parseInt(textHtmlViewerWidth.getText());
    htmlToPdfConverter.setHtmlViewerWidth(viewerWidth);

    // set HTML viewer height if necessary
    if (textHtmlViewerHeight.getText().length() > 0) {
	    int viewerHeight = Integer.parseInt(textHtmlViewerHeight.getText());
	    htmlToPdfConverter.setHtmlViewerHeight(viewerHeight);
    }

    // set navigation timeout
    int navigationTimeout = Integer.parseInt(textHtmlViewerWidth.getText());
    htmlToPdfConverter.setNavigationTimeout(navigationTimeout);

    // set conversion delay if necessary
    if (textConversionDelay.getText().length() > 0) {
	    int conversionDelay = Integer.parseInt(textConversionDelay.getText());
	    htmlToPdfConverter.setConversionDelay(conversionDelay);
    }

    // set PDF page size
    htmlToPdfConverter.pdfDocumentOptions().setPdfPageSize(selectedPdfPageSize());

    // set PDF page orientation
    htmlToPdfConverter.pdfDocumentOptions().setPdfPageOrientation(selectedPdfPageOrientation());

    // set margins
    int leftMargin = Integer.parseInt(textLeftMargin.getText());
    htmlToPdfConverter.pdfDocumentOptions().setLeftMargin(leftMargin);

    int rightMargin = Integer.parseInt(textRightMargin.getText());
    htmlToPdfConverter.pdfDocumentOptions().setRightMargin(rightMargin);

    int topMargin = Integer.parseInt(textTopMargin.getText());
    htmlToPdfConverter.pdfDocumentOptions().setTopMargin(topMargin);

    int bottomMargin = Integer.parseInt(textBottomMargin.getText());
    htmlToPdfConverter.pdfDocumentOptions().setBottomMargin(bottomMargin);

    // add header
    if (chckbxAddHeader.isSelected()) {
	    htmlToPdfConverter.pdfDocumentOptions().setShowHeader(true);
	    drawHeader(htmlToPdfConverter, true);
    }

    // add footer
    if (chckbxAddFooter.isSelected()) {
	    htmlToPdfConverter.pdfDocumentOptions().setShowFooter(true);
	    drawFooter(htmlToPdfConverter, true, true);
    }

    byte[] outPdfBuffer = null;

    if (convertURL) {
	    // convert URL to PDF

	    String urlToConvert = textUrl.getText();

	    outPdfBuffer = htmlToPdfConverter.convertUrl(urlToConvert);
    } else {
	    // convert HTML to PDF

	    String html = textHtml.getText();
	    String baseUrl = textBaseUrl.getText();

	    outPdfBuffer = htmlToPdfConverter.convertHtml(html, baseUrl);
    }

    return outPdfBuffer;
}

 

HTML to PDF for Azure Websites


azure_logoEVO HTML to PDF Converter Library for .NET
can be used directly in web roles and worker roles of Azure Cloud Services and in applications running on Azure Virtual Machines but it cannot be used in Azure Websites directly because of the restrictions imposed by Azure App Services environment.

For Azure Websites we developed a solution consisting in a service that you can deploy as a separate Azure Worker Role and a client library that you can link directly into your Azure Website to call that service completely transparent for you. The client library API is similar to general .NET library API.

You can find more details on EVO HTML to PDF Converter for Azure Websites page.

The converter offers full support for HTML5, CSS3, JavaScript, SVG, web fonts, page breaks control with CSS and from API, automatically repeated HTML table header and footer, live URLs and internal links, automatically generated hierarchical bookmarks and table of contents, automatically generated fillable PDF forms and allows you to digitally sign and password protect the generated PDF documents.

The demo website for Azure offers sample code for the most important features of the client library. The same demo website with complete C# source code can also be found in the product package you can download from our website.

protected void convertToPdfButton_Click(object sender, EventArgs e)
{
    // Get the server IP and port
    String serverIP = textBoxServerIP.Text;
    uint serverPort = uint.Parse(textBoxServerPort.Text);

    // Create a HTML to PDF converter object with default settings
    HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter(serverIP, serverPort);
            
    // Set optional service password
    if (textBoxServicePassword.Text.Length > 0)
        htmlToPdfConverter.ServicePassword = textBoxServicePassword.Text;

    // 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 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();
}

You can also check the EVO HTML to PDF Converter for Azure Websites Live Demo where you can find C# sample code for all the library features with a short description for each feature.