转换为 PDF 时指定渲染选项

PDF格式是一种固定页面格式,在用户中非常流行,并受到各种应用程序的广泛支持,因为PDF文档在任何设备上看起来都是一样的。因此,转换为 PDF 是 Aspose.Words 的一个重要功能。

PDF 是一种复杂的格式。将文档转换为 PDF 的过程中需要几个阶段的计算,包括布局计算。由于这些阶段包括复杂的计算,因此非常耗时。此外,PDF 格式本身相当复杂。它具有特定的文件结构、图形模型和字体嵌入。此外,它还具有一些复杂的输出功能,例如文档结构标签、加密、数字签名和可编辑表单。

Aspose.Words 布局引擎模仿 Microsoft Word 页面布局引擎的工作方式。因此,Aspose.Words 使 PDF 输出文档看起来尽可能接近您在 Microsoft Word 中看到的内容。有时需要指定其他选项,这可能会影响将文档保存为 PDF 格式的结果。这些选项可以通过使用 PdfSaveOptions 类来指定,其中包含确定 PDF 输出如何显示的属性。

下面提供了一些使用 PdfSaveOptions 的示例。

创建带有可填写表格的 PDF 文档

还可以将可填写的表单从 Microsoft Word 文档导出到输出 PDF,其中包含可填写的表单而不是纯文本。使用 preserve_form_fields 属性将文档另存为具有可填写表单的 PDF。

请注意,与 Microsoft Word 相比,PDF 格式的可编辑表单选项数量有限,例如文本框、组合框和复选框。 Microsoft Word有更多类型的表单,例如日历日期选择器。一般来说,完全模仿 PDF 中的 Microsoft Word 行为是不可能的。因此,在某些复杂的情况下,PDF 输出可能与您在 Microsoft Word 中看到的不同。

下面的代码示例展示了如何将文档另存为 PDF,其中包含具有指定 Jpeg 压缩和质量的可填写表单:

导出文档结构和自定义属性

export_document_structure 属性使您能够将文档结构导出为 PDF 输出。

PDF 逻辑结构工具提供了一种将有关文档内容结构的信息合并到 PDF 文件中的机制。 Aspose.Words 保留有关 Microsoft Word 文档结构的信息,例如段落、列表、表格、脚注/尾注等。

以下示例演示如何将文档保存为 PDF 格式,并保留文档结构:

Aspose.Words 还允许您将文档自定义属性导出到 PDF,如以下示例所示:

从输出 PDF 中的书签和标题导出大纲

如果要将书签导出为输出 PDF 中的轮廓,可以使用 default_bookmarks_outline_level 属性。此属性指定文档大纲中显示 Microsoft Word 书签的默认级别。如果文档的页眉/页脚中包含书签,您可以将 header_footer_bookmarks_export_mode 属性设置为 HeaderFooterBookmarksExportMode.FIRSTHeaderFooterBookmarksExportMode.ALL,以指定它们在输出 PDF 中的导出方式。当 header_footer_bookmarks_export_mode 的值为 HeaderFooterBookmarksExportMode.NONE 时,不会导出页眉/页脚中的书签。

下面的代码示例显示了如何从节的第一个页眉/页脚导出书签:

本例的输出PDF如下所示:

specify-rendering-options-when-converting-to-pdf_1

header_footer_bookmarks_export_mode 设置为 HeaderFooterBookmarksExportMode.FIRST 并且文档具有偶数和奇数页眉/页脚或不同的首页页眉/页脚时,将为节中的第一个唯一页眉/页脚导出书签。

您还可以使用 headings_outline_levels 属性导出输出 PDF 中的标题。该属性指定文档大纲中包含多少级标题。

下面的代码示例展示了如何导出三个级别的标题:

该示例的输出 PDF 如下所示:

specify-rendering-options-when-converting-to-pdf_2

缩小图像采样以减小文档大小

Aspose.Words 提供了使用 downsample_options 属性对图像进行下采样的功能,以减小输出 PDF 的大小。默认情况下,downsample_images 属性中启用下采样。

请注意,还可以在 resolution 属性中设置特定分辨率,或在 resolution_threshold 属性中设置分辨率阈值。在第二种情况下,如果图像分辨率小于阈值,则不会应用下采样。

下面的代码示例显示如何更改输出 PDF 文档中图像的分辨率:

分辨率是根据页面上的实际图像尺寸计算的。

以 Adobe PDF 格式嵌入字体

Aspose.Words 还使您能够控制如何将字体嵌入到生成的 PDF 文档中。字体需要嵌入到任何 Adobe PDF 文档中,以确保文档可以在任何机器上正确呈现(请参阅 使用 TrueType 字体 部分中有关字体呈现的更多详细信息)。默认情况下,Aspose.Words 将文档中使用的字体子集嵌入到生成的 PDF 中。在这种情况下,仅将文档中使用的 glyph(字符)保存到 PDF 中。

何时使用完整字体以及何时进行子集化

有一种方法可以指定 Aspose.Words 嵌入完整字体的选项。下表描述了更多详细信息以及每种设置的一些优点和缺点。

嵌入字体模式 优点 缺点
Full 当您想稍后通过添加或修改文本来编辑生成的 PDF 时很有用。所有字体都包含在内,因此所有 glyph 都存在。 由于某些字体很大(几兆字节),因此在不进行子集化的情况下嵌入它们可能会导致输出文件很大。
Subset 如果您想保持较小的输出文件大小,子集化非常有用。

用户无法在输出 PDF 文档中使用子集字体完全添加或编辑文本。这是因为并非该字体的所有 glyph 都存在。

如果多个 PDF 使用子集字体保存并组合在一起,则组合后的 PDF 文档的字体可能包含许多不必要的子集。

|

在 PDF 中嵌入完整字体

embed_full_fonts 属性使您能够指定 Aspose.Words 如何将字体嵌入到输出 PDF 文档中。

  • 要将完整字体嵌入到输出 PDF 文档中,请将 embed_full_fonts 设置为 True
  • 要在保存为 PDF 时对字体进行子集化,请将 embed_full_fonts 设置为 False

以下示例演示了如何在输出 PDF 文档中嵌入完整字体:

以下示例演示如何将 Aspose.Words 设置为输出 PDF 中的字体子集:

如何控制嵌入核心字体和 Windows 标准字体

核心字体和 Windows 标准字体是"标准"字体集,通常存在于目标计算机上或由文档阅读器提供,因此不需要嵌入到输出 PDF 中。通过不嵌入这些字体,您可以减小渲染的 PDF 文档的大小,同时保持可移植性。

Aspose.Words 提供了选择如何将字体导出为 PDF 的选项。您可以选择将核心字体和标准字体嵌入到输出 PDF 中,或者跳过嵌入它们并在目标计算机上使用标准核心 PDF 字体或系统字体。使用这些选项之一通常会导致 Aspose.Words 生成的 PDF 文档的文件大小显着减小。

嵌入核心字体

可以使用 use_core_fonts 属性启用或禁用嵌入 Core 字体的选项。当设置为 true 时,以下最流行的"True Type"字体(Base 14 字体)不会嵌入到输出 PDF 文档中:

  • Arial
  • Times New Roman
  • Courier New
  • Symbol

这些字体将替换为相应的核心 Type 1 字体,这些字体由阅读器在打开 PDF 时提供。

下面提供的示例展示了如何设置 Aspose.Words 以避免嵌入核心字体并让读者用 PDF Type 1 字体替换它们:

由于 PDF 查看器在任何受支持的平台上提供核心字体,因此当需要更高的文档可移植性时,此选项也很有用。但是,核心字体可能看起来与系统字体不同。

嵌入系统字体

可以使用 font_embedding_mode 启用或禁用此选项。当此属性设置为 PdfFontEmbeddingMode.EMBED_NONSTANDARD 时,“Arial"和"Times New Roman"true 类型字体不会嵌入到 PDF 文档中。在这种情况下,客户端查看器依赖于客户端操作系统上安装的字体。当 font_embedding_mode 属性设置为 PdfFontEmbeddingMode.EMBED_NONE 时,Aspose.Words 不嵌入任何字体。

下面的示例显示如何设置 Aspose.Words 以跳过将 Arial 和 Times New Roman 字体嵌入到 PDF 文档中:

当您希望在同一平台上查看文档并保留输出 PDF 中字体的精确外观时,此模式非常有用。