Convert HTML to PDF in C#

In this guide, you will find information on how to convert an HTML document into a Portable Document Format (PDF) file format using Aspose.HTML for .NET library. We are going to cover in detail how to convert HTML to PDF using the ConvertHTML() methods of the Converter class, and how to apply PdfSaveOptions and ICreateStreamProvider parameters.

To continue following this tutorial, you should install and configure the Aspose.HTML for .NET library in your C# project. Our code examples help you to convert HTML to PDF and generate PDF files using the C# library.

HTML to PDF by a single line of code

HTML to PDF conversion is very popular. To perform this feature, Aspose.HTML for .NET offer the static methods of the Converter class as an understandable and straightforward way to convert HTML code into a PDF file literally with a single line of code!

1// Invoke the ConvertHTML() method to convert HTML to PDF
2Converter.ConvertHTML(@"<h1>Convert HTML to PDF!</h1>", ".", new PdfSaveOptions(), Path.Combine(OutputDir, "convert-with-single-line.pdf"));

Online HTML Converter

You can check the Aspose.HTML API functionality and convert HTML in real-time. Please load HTML from the local file system, select the output format and run the example. In the example, the save options are set by default. You will immediately receive the result as a separate file.

                
            

If you want to convert HTML to PDF programmatically, please see the following C# code examples.

Convert HTML to PDF in C#

Any HTML to PDF conversion you want to perform involves loading an HTML document and saving it in PDF format. You can load HTML from a file, HTML code, stream, or URL (see the Creating an HTML Document article). It can be different scenarios but it can be made with a few required steps:

  1. Load an HTML file using one of HTMLDocument() constructors of the HTMLDocument class. In the example, we use HTMLDocument(string) constructor that initializes an HTML document from a file.
  2. Create a new PdfSaveOptions object.
  3. Use the ConvertHTML() method of the Converter class to save HTML as a PDF file. You need to pass the HTMLDocument, PdfSaveOptions, and output file path to the ConvertHTML() method to convert HTML to PDF.

In order to continue in this guide, we will need some HTML file to work with. Here is a sample HTML file we will use in the next C# example – spring.html. If you open it in your browser, you should see:

Text “The figure illustrates the spring.html file”

Please take a look over the following C# code snippet that shows the HTML to PDF conversion process for the spring.html file.

 1// Prepare a path to a source HTML file
 2string documentPath = Path.Combine(DataDir, "spring.html");
 3
 4// Prepare a path to save the converted file
 5string savePath = Path.Combine(OutputDir, "spring-output.pdf");
 6
 7// Initialize an HTML document from the file
 8using var document = new HTMLDocument(documentPath);
 9
10// Initialize PdfSaveOptions 
11var options = new PdfSaveOptions();
12
13// Convert HTML to PDF
14Converter.ConvertHTML(document, options, savePath);

Save Options

The PDF creation functionality can be enhanced with save options per your needs. Aspose.HTML allows converting HTML to PDF using default or custom save options. PdfSaveOptions usage enables you to customize the rendering process; you can specify the page size, margins, file permissions, Css, etc.

PropertyDescription
JpegQualitySpecifies the quality of JPEG compression for images. The default value is 95.
CssGets a CssOptions object which is used for configuration of CSS properties processing.
DocumentInfoThis property contains information about the output PDF document.
BackgroundColorThis property sets the color that will fill the background of every page. By default, this property is Transparent.
PageSetupThis property gets a page setup object and uses it for configuration output page-set.
HorizontalResolutionSets horizontal resolution for output images in pixels per inch. The default value is 300 dpi.
VerticalResolutionSets vertical resolution for output images in pixels per inch. The default value is 300 dpi.
EncryptionThis property gets or sets encryption details. If it is not set, then no encryption will be performed.

To learn more about PdfSaveOptions, please read the Fine-Tuning Converters article. You can download the complete examples and data files from GitHub.

Convert HTML to PDF in C# using PdfSaveOptions

With Aspose.HTML, you can convert files programmatically with full control over a wide range of conversion parameters. To convert HTML to PDF with PdfSaveOptions specifying, you should follow a few steps:

  1. Load an HTML file using one of the HTMLDocument() constructors of the HTMLDocument class.
  2. Create a new PdfSaveOptions object and specify the required properties. The PdfSaveOptions class provides numerous properties that give you full control over a wide range of parameters and improve the process of converting HTML to PDF format.
  3. Use the ConvertHTML() method of the Converter class to save HTML as a PDF file. The ConvertHTML() method takes the document, options, output file path savePath and performs the conversion operation.

The following example shows how to use PdfSaveOptions and create a PDF file with custom save options:

 1// Prepare a path to a source HTML file
 2string documentPath = Path.Combine(DataDir, "drawing.html");
 3
 4// Prepare a path to save the converted file
 5string savePath = Path.Combine(OutputDir, "drawing-options.pdf");
 6
 7// Initialize an HTML document from the file
 8using var document = new HTMLDocument(documentPath);
 9
10// Initialize PdfSaveOptions. Set up the page-size 600x300 pixels, margins, resolutions and change the background color to AliceBlue 
11var options = new PdfSaveOptions()
12{                
13    HorizontalResolution = 200,
14    VerticalResolution = 200,
15    BackgroundColor = System.Drawing.Color.AliceBlue,
16    JpegQuality = 100
17};
18options.PageSetup.AnyPage = new Page(new Aspose.Html.Drawing.Size(600, 300), new Margin(20, 10, 10, 10));           
19
20// Convert HTML to PDF
21Converter.ConvertHTML(document, options, savePath);

In the above example, we use:

Converting HTML to PDF can be flexibly customized to get the desired result. In the following articles, you will find answers to popular questions concerning HTML to PDF conversion:

Output Stream Providers

If it is required to save files in the remote storage (e.g., cloud, database, etc.) you can implement ICreateStreamProvider interface to have manual control over the file creating process. This interface is designed as a callback object to create a stream at the beginning of the document/page (depending on the output format) and release the early created stream after rendering the document/page.

Aspose.HTML C# library allows realizing the MemoryStreamProvider class as a custom implementation of the ICreateStreamProvider interface. The MemoryStreamProvider class provides C# MemoryStream objects as output streams for writing data, which can be stored in memory as a stream:

 1class MemoryStreamProvider : Aspose.Html.IO.ICreateStreamProvider
 2{
 3    // List of MemoryStream objects created during the document rendering
 4    public List<MemoryStream> Streams { get; } = new List<MemoryStream>();
 5
 6    public Stream GetStream(string name, string extension)
 7    {
 8        // This method is called when only one output stream is required, for instance for XPS, PDF or TIFF formats
 9        MemoryStream result = new MemoryStream();
10        Streams.Add(result);
11        return result;
12    }
13
14    public Stream GetStream(string name, string extension, int page)
15    {
16        // This method is called when the creation of multiple output streams are required. For instance, during the rendering HTML to list of image files (JPG, PNG, etc.)
17        MemoryStream result = new MemoryStream();
18        Streams.Add(result);
19        return result;
20    }
21
22    public void ReleaseStream(Stream stream)
23    {
24        // Here you can release the stream filled with data and, for instance, flush it to the hard-drive
25    }
26
27    public void Dispose()
28    {
29        // Releasing resources
30        foreach (var stream in Streams)
31            stream.Dispose();
32    }
33}

Aspose.HTML for .NET provides various types of output formats for rendering operations. Some of these formats produce a single output file (for instance, PDF, XPS), while others create multiple files (Image formats JPG, PNG, etc.).

The following C# code demonstrates how to use the MemoryStreamProvider class and the Aspose.HTML for .NET library to convert HTML to PDF and save the result to a file.

 1// Create an instance of MemoryStreamProvider
 2using var streamProvider = new MemoryStreamProvider();
 3
 4// Initialize an HTML document
 5using var document = new HTMLDocument(@"<h1>Convert HTML to PDF File Format!</h1>", ".");
 6
 7// Convert HTML to PDF using the MemoryStreamProvider
 8Converter.ConvertHTML(document, new PdfSaveOptions(), streamProvider);
 9
10// Get access to the memory stream that contains the result data
11var memory = streamProvider.Streams.First();
12memory.Seek(0, SeekOrigin.Begin);
13
14// Flush the result data to the output file
15using (FileStream fs = File.Create(Path.Combine(OutputDir, "stream-provider.pdf")))
16{
17    memory.CopyTo(fs);
18}

You can download the complete examples and data files from GitHub.

Download the Aspose.HTML for .NET library, which allows you to successfully, quickly, and easily convert your HTML, MHTML, EPUB, SVG, and Markdown documents to the most popular formats.

Aspose.HTML offers a free online HTML to PDF Converter that converts HTML to PDF with high quality, easy and fast. Just upload, convert your files and get the result in a few seconds!

Text “HTML to PDF Converter”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.