返回

如何在 Android PDFDocument 中禁用 PDF 字体嵌入?

Android

在 Android PDFDocument 中禁用 PDF 字体嵌入

问题:大尺寸 PDF

创建包含少量文本的小型 PDF 时,你可能会惊讶地发现它们仍然相当大(约 230kB)。这是由于 PDF 包含了字体。

根源:嵌入的字体

PDF 文件的大尺寸通常是由包含的字体引起的。每个字体都包含一组字符的轮廓和元数据,这会增加文件的整体大小。

解决方案:禁用字体嵌入

虽然原生 PDFDocument 库不提供直接禁用字体嵌入的方法,但我们可以通过以下解决方法来实现类似的效果:

使用系统字体

Android 提供了一组系统字体,可供所有应用程序使用。这些字体预先安装在设备上,因此无需将它们嵌入 PDF 文件中。

要使用系统字体,请在创建 PdfDocument 时使用 setSystemFontsEnabled 方法:

PdfDocument document = new PdfDocument();
document.setSystemFontsEnabled(true);

这将指示 PDFDocument 使用系统字体,而不是将字体嵌入到文件中。

缺点:

  • 字体有限:系统字体数量有限,这可能会限制你对字体选择的控制。
  • 兼容性问题:某些系统字体可能不适用于所有设备,这可能会导致在不同设备上显示 PDF 时出现差异。

替代方案:

除了使用系统字体之外,你还可以考虑以下替代解决方案:

  • 使用第三方库: 有许多第三方库可以帮助你创建 PDF,它们可能提供禁用字体嵌入的选项。
  • 使用图像: 将文本转换为图像并将其嵌入 PDF 文件。这可以有效减少文件大小,但会降低文本的可编辑性和可搜索性。
  • 手动删除字体: 可以使用 PDF 编辑器手动删除嵌入在 PDF 文件中的字体。但是,此方法可能需要一些技术知识,并且可能会降低 PDF 的兼容性。

结论

虽然原生 PDFDocument 库不提供直接禁用字体嵌入的方法,但通过使用系统字体或探索其他替代方案,可以实现类似的效果。根据你的特定要求,选择最合适的解决方案很重要。

常见问题解答

Q:为什么 PDF 文件中包含字体会增加其大小?
A:每个字体包含一组字符的轮廓和元数据,这会增加文件的整体大小。

Q:如何使用系统字体禁用 PDF 中的字体嵌入?
A:在创建 PdfDocument 时使用 setSystemFontsEnabled 方法:

PdfDocument document = new PdfDocument();
document.setSystemFontsEnabled(true);

Q:有哪些第三方库可以帮助我禁用字体嵌入?
A:有很多第三方库可以帮助你创建 PDF,它们可能提供禁用字体嵌入的选项。

Q:使用图像嵌入文本有哪些缺点?
A:使用图像嵌入文本可以减少文件大小,但会降低文本的可编辑性和可搜索性。

Q:手动删除 PDF 中的嵌入字体有什么风险?
A:手动删除 PDF 中的嵌入字体可能需要技术知识,并且可能会降低 PDF 的兼容性。