PDF To Image Converter for .NET

Winnovative PDF to Image Converter can be used in any type of .NET application to convert PDF pages to images. The integration with existing .NET applications is extremely easy and no installation is necessary. The downloaded archive contains the assembly for .NET and a demo application. The full C# source code for the demo application is available in the Samples folder. The converter produces .NET Image objects during conversion that you can save to image files or use for further processing. You can also customize the color space and resolution used during rasterization operation.

The main features of the PDF to Image Converter are enumerated below:

  • Convert PDF pages to images
  • Create thumbnails of the PDF pages
  • Customize the color space and resolution of generated images
  • Convert PDF pages to images in memory or to image files in a folder
  • Save the PDF pages images in various image formats
  • Support for password protected PDF documents
  • Convert to images only a range of PDF pages
  • Get the number of pages in a PDF document
  • Get the PDF document title, keywords, author and description
  • Does not require Adobe Reader or other third party tools
  • Support for .NET 4.0 framework and later
  • Documentation and C# samples for all the features

For a full description of the software you can check the Winnovative PDF to Image Converter for .NET web page.

C# Code Sample for PDF to Image Conversion

The code below was taken from the PDF to Image Converter demo application available for download in the PDF to Image converter archive. In this sample an instance of the PdfToImageConverter class is constructed and used to rasterize the PDF document pages to images.

private void btnConvertToImages_Click(object sender, EventArgs e)
{
    if (pdfFileTextBox.Text.Trim().Equals(String.Empty))
    {
        MessageBox.Show("Please choose a source PDF file", "Choose PDF file", MessageBoxButtons.OK);
        return;
    }

    // the source pdf file
    string pdfFileName = pdfFileTextBox.Text.Trim();

    // start page number
    int startPageNumber = int.Parse(textBoxStartPage.Text.Trim());
    // end page number
    // when it is 0 the conversion will continue up to the end of document
    int endPageNumber = 0;
    if (textBoxEndPage.Text.Trim() != String.Empty)
        endPageNumber = int.Parse(textBoxEndPage.Text.Trim());

    // create the converter object and set the user options
    PdfToImageConverter pdfToImageConverter = new PdfToImageConverter();

    pdfToImageConverter.LicenseKey = "0F5PX0tPX09fSVFPX0xOUU5NUUZGRkZfTw==";

    // set the color space of the resulted images
    pdfToImageConverter.ColorSpace = SelectedColorSpace();

    // set the resolution of the resulted images
    pdfToImageConverter.Resolution = int.Parse(textBoxResolution.Text);

    // the demo output directory
    string outputDirectory = Path.Combine(Application.StartupPath, @"DemoFiles\Output");

    Cursor = Cursors.WaitCursor;

    // set the handler to be called when a page was converted
    pdfToImageConverter.PageConvertedEvent += pdfToImageConverter_PageConvertedEvent;            
            
    try
    {
        // call the converter to raise the PageConvertedEvent event when a PDF page is converted
        // the pdfToImageConverter_PageConvertedEvent handler below will be executed for each converted PDF page
        pdfToImageConverter.ConvertPdfPagesToImageInEvent(pdfFileName, startPageNumber, endPageNumber);

        // Alternatively you can use the ConvertPdfPagesToImage() and ConvertPdfPagesToImageFile() methods
        // to convert the PDF pages to images in memory or to image files in a directory

        // uncomment the line below to convert PDF pages in memory to an array of PdfPageImage objects
        //PdfPageImage[] pdfPageImages = pdfToImageConverter.ConvertPdfPagesToImage(pdfFileName, startPageNumber, endPageNumber);

        // uncomment the lines below to convert PDF pages to image files in a directory
        //string outputDirectory = System.IO.Path.Combine(Application.StartupPath, @"DemoFiles\Output");
        //pdfToImageConverter.ConvertPdfPagesToImageFile(pdfFileName, startPageNumber, endPageNumber, outputDirectory, "pdfpage");
    }
    catch (Exception ex)
    {
        // The conversion failed
        MessageBox.Show(String.Format("An error occurred. {0}", ex.Message), "Error");
        return;
    }
    finally
    {
        // uninstall the event handler
        pdfToImageConverter.PageConvertedEvent -= pdfToImageConverter_PageConvertedEvent;

        Cursor = Cursors.Arrow;
    }

    try
    {
        System.Diagnostics.Process.Start(outputDirectory);
    }
    catch (Exception ex)
    {
        MessageBox.Show(string.Format("Cannot open output folder. {0}", ex.Message));
        return;
    }
}

/// <summary>
/// The PageConvertedEvent event handler called after when a PDF page was converted to image
/// The event is raised when the ConvertPdfPagesToImageInEvent() method is used
/// </summary>
/// <param name="args">The handler argument containing the PDF page image and page number</param>
void pdfToImageConverter_PageConvertedEvent(PageConvertedEventArgs args)
{
    // get the image object and page number from even handler argument
    Image pdfPageImageObj = args.PdfPageImage.ImageObject;
    int pageNumber = args.PdfPageImage.PageNumber;

    // save the PDF page image to a PNG file
    string outputPageImage = Path.Combine(Application.StartupPath, @"DemoFiles\Output", "pdfpage_" + pageNumber + ".png");
    pdfPageImageObj.Save(outputPageImage, ImageFormat.Png);

    args.PdfPageImage.Dispose();
}

 

 

Winnovative PDF to Text Converter for .NET

Winnovative PDF to Text Converter is a library for .NET that can be used in ASP.NET and MVC websites or in Windows Forms and WPF  desktop applications to extract the text from existing PDF documents or to search text in a PDF document. After PDF to Text conversion you get a String object in memory.

The PDF to Text Converter does not depend on Adobe Reader or on any other third party tool. The main features of the Winnovative PDF to Text converter are:

  • Extract text from PDF documents
  • Search text in PDF documents
  • Save the extracted text using various text encodings
  • Case sensitive and whole word options for text search
  • Support for password protected PDF documents
  • Extract the text or search only a range of PDF pages
  • Extract text preserving the original PDF layout
  • Extract text in PDF reading order or PDF internal order
  • Get the number of pages in a PDF document
  • Get the PDF document title, keywords, author and description
  • Does not require Adobe Reader or other third party tools
  • Support for .NET 4.0 framework and later
  • Documentation and C# samples for all the features

You can find a complete description of the Winnovative PDF to Text Converter for .NET on product web page.

C# Code Sample to Convert PDF to Text

In the C# code is taken from the demo application that comes with software package. An object of the PdfToTextConverter class is created to extract the text from an existing PDF document. The extracted text is saved in a file on disk using the UTF-8 encoding.

private void btnConvertToText_Click(object sender, EventArgs e)
{
    if (pdfFileTextBox.Text.Trim().Equals(String.Empty))
    {
        MessageBox.Show("Please choose a PDF file to convert", "Choose PDF file", MessageBoxButtons.OK);
        return;
    }

    // the pdf file to convert
    string pdfFileName = pdfFileTextBox.Text.Trim();
            
    // start page number
    int startPageNumber = int.Parse(textBoxStartPage.Text.Trim());
    // end page number
    // when it is 0 the extraction will continue up to the end of document
    int endPageNumber = 0;
    if (textBoxEndPage.Text.Trim() != String.Empty)
        endPageNumber = int.Parse(textBoxEndPage.Text.Trim());

    // the output text layout
    TextLayout textLayout = SelectedTextLayout();

    // the output text encoding
    System.Text.Encoding textEncoding = SelectedTextEncoding();

    // page breaks
    bool markPageBreaks = cbMarkPageBreaks.Checked;

    string outputFileName = System.IO.Path.Combine(Application.StartupPath, @"DemoFiles\Output", 
            System.IO.Path.GetFileNameWithoutExtension(pdfFileName) + ".txt");

    // create the converter object and set the user options
    PdfToTextConverter pdfToTextConverter = new PdfToTextConverter();

    pdfToTextConverter.LicenseKey = "C4WUhJaRhJSEkoqUhJeVipWWip2dnZ2ElA==";

    pdfToTextConverter.Layout = textLayout;
    pdfToTextConverter.MarkPageBreaks = markPageBreaks;

    Cursor = Cursors.WaitCursor;
    try
    {
        // extract text from PDF
        string extractedText = pdfToTextConverter.ConvertToText(pdfFileName, startPageNumber, endPageNumber);

        // write the resulted string into an output file 
        // in the application directory using the selected encoding
        System.IO.File.WriteAllText(outputFileName, extractedText, textEncoding);
    }
    catch (Exception ex)
    {
        MessageBox.Show(String.Format("An error occurred. {0}", ex.Message), "Error");
        return;
    }
    finally
    {
        Cursor = Cursors.Arrow;
    }


    try
    {
        System.Diagnostics.Process.Start(outputFileName);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
        return;
    }
}

 

Convert HTML to SVG Vector Images in ASP.NET and MVC with C# and VB.NET

Winnovative HTML to SVG Converter can be used in any type of .NET application to convert HTML pages to SVG vector images. The HTML to SVG Converter is part of the Winnovative HTML to PDF Converter Library for .NET and is represented by the HtmlToSvgConverter class of this library. Using the HtmlToSvgConverter class you can convert HTML pages to SVG images. SVG is currently the most used format for vector images. The vector images are preferred in many situations over the raster images because the vector images can keep their quality when zooming in.

C# Code Sample to Convert HTML to SVG in ASP.NET

In the C# code sample below is created an instance of the HtmlToSvgConverter class to convert a HTML page to an SVG vector image.

protected void convertToSvgButton_Click(object sender, EventArgs e)
{
    // Create a HTML to SVG converter object with default settings
    HtmlToSvgConverter htmlToSvgConverter = new HtmlToSvgConverter();

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

    // The buffer to receive the generated SVG document
    byte[] outSvgBuffer = null;

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

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

        // Convert a HTML string with a base URL to a SVG document in a memory buffer
        outSvgBuffer = htmlToSvgConverter.ConvertHtml(htmlString, baseUrl);
    }

    // Send the SVG as response to browser

    // Set response content type
    Response.AddHeader("Content-Type", "image/svg+xml");

    // Instruct the browser to open the SVG file as an attachment or inline
    Response.AddHeader("Content-Disposition", String.Format("attachment; filename=HTML_to_SVG.svg; size={0}", outSvgBuffer.Length.ToString()));

    // Write the SVG document buffer to HTTP response
    Response.BinaryWrite(outSvgBuffer);

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

You can also see a live demo for HTML to SVG Conversion with  C# and VB.NET code samples and a detailed description of the features.

Convert HTML to JPEG, PNG or BMP Images in ASP.NET Applications with C# and VB.NET

Winnovative 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 for .NET 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 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();
}

 

Convert HTML to PDF in ASP.NET MVC Applications with C#

Winnovative HTML to PDF Converter for .NET can be used in ASP.NET MVC applications to convert HTML pages to PDF. The HTML to PDF Converter Package you can download from product website contains a sample a sample application for ASP.NET MVC with full C# source code. Below you can find a sample code from that demo application:

[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;
}

The code for MVC is similar with the code for other .NET applications. The difference occurs when sending the resulted PDFto browser. The action of converting the HTML document  to PDF returns a FileResult object.

It is also possible to convert the current page to PDF. The C# code for this is:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

using System.IO;
using System.Text;
using System.Web.UI;

// Use Winnovative Namespace
using Winnovative;

namespace WnvHtmlToPdfMvcDemo.Controllers
{
    public class Convert_Current_PageController : Controller
    {
        public ActionResult Index()
        {
            ViewData.Add("firstName", "John");
            ViewData.Add("lastName", "Smith");
            ViewData.Add("gender", "maleRadioButton");
            ViewData.Add("haveCar", "true");
            ViewData.Add("carType", "Volvo");
            ViewData.Add("comments", "My comments\r\nLine 1\r\nLine 2");

            return View();
        }

        [HttpPost]
        public ActionResult ConvertCurrentPageToPdf(FormCollection collection)
        {
            object model = null;
            ViewDataDictionary viewData = new ViewDataDictionary(model);

            // transmit the posted data to view
            viewData.Add("firstName", collection["firstNameTextBox"]);
            viewData.Add("lastName", collection["lastNameTextBox"]);
            viewData.Add("gender", collection["gender"]);
            viewData.Add("haveCar", collection["haveCarCheckBox"]);
            viewData.Add("carType", collection["carTypeDropDownList"]);
            viewData.Add("comments", collection["commentsTextBox"]);

            // The string writer where to render the HTML code of the view
            StringWriter stringWriter = new StringWriter();

            // Render the Index view in a HTML string
            ViewEngineResult viewResult = ViewEngines.Engines.FindView(ControllerContext, "Index", null);
            ViewContext viewContext = new ViewContext(
                    ControllerContext,
                    viewResult.View,
                    viewData,
                    new TempDataDictionary(),
                    stringWriter
                    );
            viewResult.View.Render(viewContext, stringWriter);

            // Get the view HTML string
            string htmlToConvert = stringWriter.ToString();

            // Get the base URL
            String currentPageUrl = this.ControllerContext.HttpContext.Request.Url.AbsoluteUri;
            String baseUrl = currentPageUrl.Substring(0, currentPageUrl.Length - "Convert_Current_Page/ConvertCurrentPageToPdf".Length);

            // 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 = "fvDh8eDx4fHg4P/h8eLg/+Dj/+jo6Og=";

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

            // Convert the HTML string to a PDF document in a memory buffer
            byte[] outPdfBuffer = htmlToPdfConverter.ConvertHtml(htmlToConvert, baseUrl);

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

            return fileResult;
        }
    }
}

 

 

Convert HTML to PDF in .NET Applications

html-to-pdf-box-250Winnovative HTML to PDF Converter for .NET is a library that can be integrated in ASP.NET and MVC web sites, Azure Cloud Services, Windows Forms and WPF desktop applications to convert URLs, HTML strings and streams to PDF, to SVG or to images.

The converter offers full support for HTML tags, HTML5 with CSS3, SVG and Web Fonts, page breaks control, media type rules, repeating HTML table header and footer, hierarchical bookmarks, tables of contents, fillable PDF forms, HTML with page numbering in header and footer.

Winnovative HTML to PDF Converter does not need installation and does not depend on any third party tools, works both in 32-bit and 64-bit environments and xcopy deployment on the server is supported.

The library was designed and tested to work reliably in multithreaded environments and in high traffic websites.

We offer full C# and VB.NET samples for ASP.NET, MVC, Windows Forms and Azure Cloud Services in the downloaded archive both for .NET 2.0 and .NET 4.0. The licensing model is simple and royalties free.

You can use the HTML to PDF Converter for .NET as a general purpose tool for converting web pages and HTML code to PDF and images or you can use it as part of our .NET Reporting Toolkit to easily create PDF reports directly from ASP.NET pages and to benefit from the great power of ASP.NET controls.

The converter offers full support for HTML tags, HTML5 with CSS3, SVG and Web Fonts, page breaks control, media type rules, repeating HTML table header and footer, hierarchical bookmarks, tables of contents, fillable PDF forms, HTML with page numbering in header and footer.

The HTML to PDF Converter is not using a printer driver and no special settings are necessary on the server in order to get it working. The same assembly works both in 32-bit and 64-bit environments and xcopy deployment on the server is supported. The library is compatible with .NET 2.0, .NET 4.0 and later frameworks.

The library was designed and tested to work reliably in multithreaded environments and to completely release all the resources used during conversion after each conversion. This makes it suitable for usage in high traffic ASP.NET websites and services running a long period of time without interruption.

The software package you can download from website contains demo applications for ASP.NET, MVC, Windows Forms and Azure Cloud Services with full source code both in C# and VB.NET.

See All Winnovative HTML to PDF Converter Features.