Convert EPUB to PDF | C#

EPUB is an e-book file format that provides a standard digital publication format. It is created by International Digital Publishing Forum (IDPF), and now it is supported by many e-readers and software applications. EPUB to PDF conversion is often required to take advantage of PDF format. PDF file format has full capability to contain information like text, images, hyperlinks, form-fields, rich media, metadata, etc. PDF files can be opened in Adobe Acrobat Reader/Writer and most modern browsers like Chrome, Safari, Firefox. They are optimized for printing, and they are ideal for creating physical copies of your documents; you can also configure the security settings for PDF.

In this article, you find information about converting EPUB to PDF and using PdfSaveOptions and ICreateStreamProvider parameters.

Online EPUB Converter

You can check the Aspose.HTML API functionality and convert EPUB in real-time. Please load an EPUB file 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.

Code example in C# to convert document formats
Input file
Upload a file you want to convert
Output format
Select the target format

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

EPUB to PDF by two lines of code

The static methods of the Converter class are primarily used as the easiest way to convert an EPUB file into various formats. You can convert EPUB to PDF in your C# application literally with two lines of code!

using System.IO;
using Aspose.Html.Converters;
using Aspose.Html.Saving;
...
     // Open an existing EPUB file for reading
     using var stream = File.OpenRead(DataDir + "input.epub");

     // Invoke the ConvertEPUB method to convert EPUB to PDF           
     Converter.ConvertEPUB(stream, new PdfSaveOptions(), Path.Combine(OutputDir, "convert-by-two-lines.pdf"));

Convert EPUB to PDF

Using Converter.ConvertEPUB methods is the most common way to convert EPUB files into various formats. To convert EPUB to PDF, you should follow a few steps:

  1. Open an existing EPUB file. In the example, we use the OpenRead() method of System.IO.FileStream class to open and read an EPUB file from the file system at the specified path.
  2. Create an instance of PdfSaveOptions.
  3. Use the ConvertEPUB() method of the Converter class to save EPUB as a PDF file. You need to pass the EPUB file stream, PdfSaveOptions, and output file path to the ConvertEPUB() method to convert EPUB to PDF.

The following C# code snippet shows how to convert EPUB to PDF using Aspose.HTML for .NET:

using System.IO;
using Aspose.Html.Converters;
using Aspose.Html.Saving;
...
     // Open an existing EPUB file for reading
     using var stream = File.OpenRead(DataDir + "input.epub");

     // Prepare a path to save the converted file 
     string savePath = Path.Combine(OutputDir, "input-output1.pdf");
    
     // Create an instance of PdfSaveOptions
     var options = new PdfSaveOptions();
    
     // Call the ConvertEPUB method to convert EPUB to PDF
     Converter.ConvertEPUB(stream, options, savePath); 

Save Options

With Aspose.HTML, you can convert EPUB to PDF format programmatically with full control over a wide range of conversion parameters. PdfSaveOptions usage enables you to tune the rendering process; you can specify the page size, margins, file permissions, CSS media-type, etc.

Property Description
JpegQuality Specifies the quality of JPEG compression for images. The default value is 95.
Css Gets a CssOptions object which is used for configuration of CSS properties processing.
DocumentInfo This property contains information about the output PDF document.
BackgroundColor This property sets the color that will fill the background of every page. By default, this property is Transparent.
PageSetup This property gets a page setup object and uses it for configuration output page-set.
HorizontalResolution Sets horizontal resolution for output images in pixels per inch. The default value is 300 dpi.
VerticalResolution Sets vertical resolution for output images in pixels per inch. The default value is 300 dpi.
Encryption This property gets or sets encryption details. If it is not set, then no encryption will be performed.

Convert EPUB to PDF using PdfSaveOptions

Aspose.HTML allows converting EPUB to PDF using default or custom save options. You should follow a few steps:

  1. Open an existing EPUB file.
  2. Create a new PdfSaveOptions object and specify the required save options.
  3. Use the ConvertEPUB() method to save EPUB as a PDF file. You need to pass the EPUB file stream, PdfSaveOptions, and output file path to the ConvertEPUB () method for EPUB to PDF conversion.

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

using System.IO;
using Aspose.Html;
using Aspose.Html.Converters;
using Aspose.Html.Saving;
using System.Drawing;
using Aspose.Html.Drawing;
...
    // Open an existing EPUB file for reading
    using var stream = File.OpenRead(DataDir + "input.epub");

    // Prepare a path to save the converted file 
    string savePath = Path.Combine(OutputDir, "input-options.pdf");
    
    // Create an instance of PdfSaveOptions. Set up the page-size and change the background color to AliceBlue 
    var options = new PdfSaveOptions()
    {
        PageSetup =
            {
                AnyPage = new Page()
                {
                    Size = new Aspose.Html.Drawing.Size(Length.FromPixels(1000), Length.FromPixels(1000))
                }
            },
        BackgroundColor = Color.AliceBlue
    };
    
    // Call the ConvertEPUB method to convert EPUB to PDF
    Converter.ConvertEPUB(stream, options, savePath); 

In the example, we use the OpenRead() method of System.IO.FileStream class to open and read source files from the file system at the specified path. The PdfSaveOptions() constructor initializes an instance of the PdfSaveOptions class that is passed to ConvertEPUB() method. The ConvertEPUB() method takes the stream, options, output file path savePath and performs the conversion operation. The PdfSaveOptions class provides numerous properties that give you full control over a wide range of parameters and improve the process of EPUB to PDF conversion.

In the above example, we use:

  • BackgroundColor property that specifies the color that the background will be filled in. The default BackgroundColor is Transparent;
  • PageSetup property that specifies the page size in pixels.

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), others create multiple files (Image formats JPEG, PNG, etc.).

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.

The example below shows how to implement and use your own MemoryStreamProvider in the application:

using System.IO;
using System.Collections.Generic;
...
    class MemoryStreamProvider : Aspose.Html.IO.ICreateStreamProvider
    {
        // List of MemoryStream objects created during the document rendering
        public List<MemoryStream> Streams { get; } = new List<MemoryStream>();

        public Stream GetStream(string name, string extension)
        {
            // This method is called when only one output stream is required, for instance for XPS, PDF or TIFF formats.
            MemoryStream result = new MemoryStream();
            Streams.Add(result);
            return result;
        }
    
        public Stream GetStream(string name, string extension, int page)
        {
            // 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.)
            MemoryStream result = new MemoryStream();
            Streams.Add(result);
            return result;
        }
    
        public void ReleaseStream(Stream stream)
        {
            //  Here you can release the stream filled with data and, for instance, flush it to the hard-drive
        }
    
        public void Dispose()
        {
            // Releasing resources
            foreach (var stream in Streams)
                stream.Dispose();
        }
    }
using System.IO;
using Aspose.Html;
using System.Linq;
using Aspose.Html.Converters;
using Aspose.Html.Saving;
...
    // Create an instance of MemoryStreamProvider
    using var streamProvider = new MemoryStreamProvider();

    // Open an existing EPUB file for reading
    using var stream = File.OpenRead(DataDir + "input.epub");
    
    // Prepare a path to save the converted file 
    string savePath = Path.Combine(OutputDir, "stream-provider.pdf");
    
    // Convert EPUB to PDF by using the MemoryStreamProvider class
    Converter.ConvertEPUB(stream, new PdfSaveOptions(), streamProvider);
    
    // Get access to the memory stream that contains the result data
    var memory = streamProvider.Streams.First();
    memory.Seek(0, SeekOrigin.Begin);
    
    // Flush the result data to the output file
    using (FileStream fs = File.Create(savePath))
    {
        memory.CopyTo(fs);
    }

The ConvertEPUB(Stream, PdfSaveOptions, ICreateStreamProvider) method takes the conversion source, options, instance of MemoryStreamProvider, which will be used to get an output stream, and performs the conversion operation.

Text “Banner EPUB to PDF Converter”