用 C# 将 EPUB 转换为 PDF

EPUB 是一种电子书文件格式,它提供了一种标准的数字出版格式。它由国际数字出版论坛( IDPF)创建,现在已得到许多电子阅读器和软件应用程序的支持。要利用 PDF 格式的优势,通常需要将 EPUB 转换为 PDF。PDF 文件格式完全有能力包含文本、图像、超链接、表单字段、富媒体、元数据等信息。PDF 文件可在 Adobe Acrobat Reader/Writer 和大多数现代浏览器(如 Chrome、Safari、Firefox)中打开。PDF 文件为打印而优化,是创建文档实体副本的理想选择;您还可以配置 PDF 的安全设置。

在本文中,您将找到有关将 EPUB 转换为 PDF 以及使用 PdfSaveOptionsICreateStreamProvider 参数的信息。

在线 EPUB 转换器

您可以检查 Aspose.HTML for .NET API 的功能,并实时转换 EPUB。请从本地文件系统加载 EPUB 文件,选择输出格式并运行示例。在示例中,默认设置了保存选项。您将立即收到一个单独文件的结果。

                
            

如果您想以编程方式将 EPUB 转换为 PDF,请参阅以下 C# 代码示例。

通过两行代码将 EPUB 转换为 PDF

Converter 类的静态方法主要用于将 EPUB 文件转换为各种格式。只需两行代码,您就可以在 C# 应用程序中将EPUB转换为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// Invoke the ConvertEPUB() method to convert EPUB to PDF
7Converter.ConvertEPUB(stream, new PdfSaveOptions(), Path.Combine(OutputDir, "convert-by-two-lines.pdf"));

将 EPUB 转换为 PDF

要将 EPUB 转换为 PDF,应遵循以下几个步骤:

  1. 打开现有 EPUB 文件。在示例中,我们使用 System.IO.FileStream 类的 OpenRead() 方法从指定路径的文件系统中打开并读取 EPUB 文件。
  2. 创建 PdfSaveOptions 的实例。
  3. 使用 Converter 类的 ConvertEPUB() 方法将 EPUB 保存为 PDF 文件。您需要向 ConvertEPUB() 方法传递 EPUB 文件流、PdfSaveOptions 和输出文件路径,以便将 EPUB 转换为 PDF。

下面的 C# 代码片段显示了如何使用 Aspose.HTML for .NET 将 EPUB 转换为 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);

保存选项 – PdfSaveOptions 类

使用 Aspose.HTML for .NET,您可以通过程序将 EPUB 转换为 PDF 格式,并完全控制各种转换参数。使用 PdfSaveOptions 可以调整渲染过程;您可以指定 page sizemarginsfile permissionsCSS media-type 等。

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.

要了解有关 PdfSaveOptions 的更多信息,请阅读 微调转换器 一文。

使用 PdfSaveOptions 将 EPUB 转换为 PDF

Aspose.HTML 允许使用默认或自定义保存选项将 EPUB 转换为 PDF。您应遵循以下几个步骤

  1. 打开现有 EPUB 文件
  2. 创建一个新的 PdfSaveOptions 对象,并指定所需的保存选项。
  3. 使用 ConvertEPUB() 方法将 EPUB 保存为 PDF 文件。您需要将 EPUB 文件流、PdfSaveOptions 和输出文件路径传递给 ConvertEPUB () 方法,以实现 EPUB 到 PDF 的转换。

下面的示例展示了如何使用 PdfSaveOptions,创建带有自定义保存选项的 PDF 文件:

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

在本例中,我们使用 System.IO.FileStream 类的 OpenRead() 方法打开并从指定路径的文件系统中读取源文件。PdfSaveOptions() 构造函数初始化了一个PdfSaveOptions类实例,并将其传递给ConvertEPUB()方法。ConvertEPUB()方法接收 streamoptions、输出文件路径 savePath 并执行转换操作。PdfSaveOptions类提供了大量属性,可让你完全控制各种参数,并改善EPUB到PDF的转换过程。

在上述示例中,我们使用

Aspose.HTML for .NET为渲染操作提供了多种输出格式。其中一些格式只生成一个输出文件(例如 PDFXPS),其他格式则生成多个文件(图像格式 JPGPNG等)。

输出流提供商

如果需要将文件保存在远程存储器(如云、数据库等)中,可以实现 ICreateStreamProvider接口来手动控制文件创建过程。该接口被设计为一个回调对象,用于在文档/页面开始时创建一个流(取决于输出格式),并在渲染文档/页面后释放早期创建的流。

下面的示例展示了如何在应用程序中实现和使用自己的MemoryStreamProvider

 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}

下面的代码片段演示了如何使用内存流将 EPUB 文件转换为 PDF 文件。

 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}

ConvertEPUB(Stream,PdfSaveOptions,ICreateStreamProvider)方法接收转换源、选项、MemoryStreamProvider实例(用于获取输出流),并执行转换操作。

您可以从 GitHub 下载完整的示例和数据文件。

下载 Aspose.HTML for .NET库,它能让您成功、快速、轻松地将 HTML、MHTML、EPUB、SVG 和 Markdown 文档转换为最流行的格式。

Aspose.HTML提供了一个免费的在线 EPUB到PDF转换器,高品质,方便,快捷地转换EPUB到PDF。只需上传、转换您的文件并在几秒钟内获得结果!

文本 “EPUB to PDF Converter”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.