Convert EPUB to PDF in C#

To convert EPUB to PDF in C#, open the EPUB file as a stream, create PdfSaveOptions, and call Converter.ConvertEPUB() with the stream, options, and output path or stream provider.

EPUB is a digital publication format used for e-books and structured reading content. PDF is often preferred for printing, archiving, sharing, browser viewing, document workflows, and permission-controlled output. Aspose.HTML for .NET converts EPUB to PDF with default settings or custom PdfSaveOptions for page setup, background color, image quality, document metadata, and encryption.

Before running the examples, install and configure Aspose.HTML for .NET in your project. The complete C# example project is available in the Aspose.HTML for .NET GitHub repository.

Convert EPUB to PDF with Two Lines of C#

The static Converter class provides the shortest path from an EPUB file stream to a PDF file. The example below opens an EPUB file and converts it to PDF with default PdfSaveOptions.

1// Convert EPUB to PDF using C#
2
3// Open an existing EPUB file for reading
4using FileStream stream = File.OpenRead(DataDir + "input.epub");
5
6// Invoke the ConvertEPUB() method to convert EPUB to PDF
7Converter.ConvertEPUB(stream, new PdfSaveOptions(), Path.Combine(OutputDir, "convert-by-two-lines.pdf"));

Use this pattern when the default PDF output is enough. For custom page setup, background color, image quality, or output streams, use the workflows below.

Convert an EPUB File to PDF in C#

A typical file-based conversion uses a readable EPUB file stream, a PdfSaveOptions object, and Converter.ConvertEPUB(). The conversion writes a PDF file to the specified output path.

The workflow is:

  1. Open the EPUB file with File.OpenRead() or another readable stream.
  2. Create a PdfSaveOptions instance.
  3. Call Converter.ConvertEPUB(stream, options, savePath) to write the PDF file.

The following C# code converts an EPUB file to PDF.

 1// Convert EPUB to PDF using C#
 2
 3// Open an existing EPUB file for reading
 4using FileStream stream = File.OpenRead(DataDir + "input.epub");
 5
 6// Prepare a path to save the converted file 
 7string savePath = Path.Combine(OutputDir, "input-output.pdf");
 8
 9// Create an instance of the PdfSaveOptions class
10PdfSaveOptions options = new PdfSaveOptions();
11
12// Call the ConvertEPUB() method to convert EPUB to PDF
13Converter.ConvertEPUB(stream, options, savePath);

Short EPUB to PDF Recipes

Customize EPUB to PDF with PdfSaveOptions

Use PdfSaveOptions when the output PDF needs custom rendering settings. The options object is passed to ConvertEPUB() and controls how EPUB content is rendered to PDF.

OptionUse it to control
JpegQualityJPEG compression quality for images in the PDF output. The default value is 95.
CssCSS processing behavior through CssOptions.
DocumentInfoMetadata for the generated PDF document.
BackgroundColorThe color used to fill the page background. The default value is transparent.
PageSetupPage size, margins, and page layout settings.
HorizontalResolution and VerticalResolutionOutput resolution values used by the rendering process. The default value is 300 dpi for each property.
EncryptionPDF encryption settings when the output must be protected. If it is not set, no encryption is performed.

The following example creates a PDF file with custom PdfSaveOptions.

 1// Convert EPUB to PDF in C# with custom settings
 2
 3// Open an existing EPUB file for reading
 4using FileStream stream = File.OpenRead(DataDir + "input.epub");
 5
 6// Prepare a path to save the converted file 
 7string savePath = Path.Combine(OutputDir, "input-options.pdf");
 8
 9// Create an instance of PdfSaveOptions. Set up the page-size and change the background color to AliceBlue 
10PdfSaveOptions options = new PdfSaveOptions()
11{
12    PageSetup =
13        {
14            AnyPage = new Page()
15            {
16                Size = new Aspose.Html.Drawing.Size(Length.FromPixels(1000), Length.FromPixels(1000))
17            }
18        },
19    BackgroundColor = System.Drawing.Color.AliceBlue
20};
21
22// Call the ConvertEPUB() method to convert EPUB to PDF
23Converter.ConvertEPUB(stream, options, savePath);

In this example, PdfSaveOptions is passed to Converter.ConvertEPUB() together with the EPUB stream and output path. The sample configures page setup and background color for the generated PDF document.

Related PDF Workflows

Save EPUB to PDF with an Output Stream Provider

Use ICreateStreamProvider when the conversion output should be written through streams instead of only to a file path. This is useful for memory-based workflows, remote storage, databases, and services that decide where the rendered output is stored.

The MemoryStreamProvider class below implements ICreateStreamProvider and keeps generated streams in memory.

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

Some output formats produce one file, such as PDF, XPS, and DOCX. Image formats such as JPG or PNG can produce multiple output streams when the rendered document has multiple pages.

The following example converts EPUB to PDF with MemoryStreamProvider.

 1// Convert EPUB to PDF in C# using memory stream
 2
 3// Create an instance of MemoryStreamProvider
 4using MemoryStreamProvider streamProvider = new MemoryStreamProvider();
 5
 6// Open an existing EPUB file for reading
 7using FileStream stream = File.OpenRead(DataDir + "input.epub");
 8
 9// Prepare a path to save the converted file 
10string savePath = Path.Combine(OutputDir, "stream-provider.pdf");
11
12// Convert EPUB to PDF by using the MemoryStreamProvider class
13Converter.ConvertEPUB(stream, new PdfSaveOptions(), streamProvider);
14
15// Get access to the memory stream that contains the result data
16MemoryStream memory = streamProvider.Streams.First();
17memory.Seek(0, SeekOrigin.Begin);
18
19// Flush the result data to the output file
20using (FileStream fs = File.Create(savePath))
21{
22    memory.CopyTo(fs);
23}

The ConvertEPUB(Stream, PdfSaveOptions, ICreateStreamProvider) overload takes the EPUB source stream, PDF save options, and a stream provider used to create the output stream.

Related EPUB Conversion Guides

Other Platforms

Try Online EPUB to PDF Conversion

                
            

Use the online EPUB to PDF Converter for quick manual conversion. Use Aspose.HTML for .NET when EPUB to PDF conversion must run inside a C# application, service, or document pipeline.

EPUB to PDF Converter