从 PDF 文件中提取 CropBox 作为 MediaBox 并保留原始字体

Posted

技术标签:

【中文标题】从 PDF 文件中提取 CropBox 作为 MediaBox 并保留原始字体【英文标题】:Extract CropBox as MediaBox from PDF file and leave original fonts 【发布时间】:2017-04-27 07:09:33 【问题描述】:

我试图在这里找到答案并使用 GhosScript,但我无法成功。

所以,我有一个定义了 CropBox 和 MediaBox 的 PDF 文件。 CropBox/MediaBox 比率因页面而异(尤其是在标题页和文档的其余部分之间)。 我想要实现的是从每个页面中提取 CropBox 并使用它的 MediaBox eqal to CropBox 呈现新的 PDF。基本上,我想将所有页面修剪为 Cropbox,并在每个页面上让 MediaBox 与此 CropBox 相等。

我可以使用 ghostscript 或任何其他命令行工具吗?

编辑,

我终于设法使用 Ghostscript 实现这一目标:

gs -dUseCropBox -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=out.pdf in.pdf

但在转换过程中,我收到如下消息:

Page 74 Substituting font Helvetica for KAENAW+Helvetica.

这是否意味着对于简单的裁剪操作,我确实需要在我的系统中安装原始 pdf 使用的所有字体?它是ghostscript的工作原理吗?我认为 pdf 不需要“重新渲染”,但这将是对内部尺寸数据的一些操作。

【问题讨论】:

【参考方案1】:

如果没有看到您的文件,就无法确定发生了什么。

您的原始文件很可能不包含 Helvetica 的嵌入式副本(尽管它当然应该是它的子集!)。 PDF 文件不允许包含“base 14”字体,其中包括 Helvetica,可能您的文件不包含,因此 Ghostscript 使用自己的 Helvetica 版本,这就是缺少 base 14 字体时应该发生的情况,您可以将它们排除在外,因为保证所有 PDF 使用者都拥有它们。

Ghostscript 的 pdfwrite 设备不会(通常有例外)渲染 PDF 文件,但我认为 EmbedAllFonts 的默认设置是 true,因此 pdfwrite 设备将使用它创建的 PDF 文件中嵌入 Helvetica 的副本自己的副本这样做。

如果您在某处发布文件,我可以看看。您还应该确保您使用的是当前版本的 Gho 脚本。

【讨论】:

以上是关于从 PDF 文件中提取 CropBox 作为 MediaBox 并保留原始字体的主要内容,如果未能解决你的问题,请参考以下文章

如何从 PDF 中提取嵌入字体作为有效字体文件?

使用 Ghostscript 将 PDF 呈现为 PNG 时,请遵守 PDF 中的 MediaBox/CropBox

如何从Java中提取PDF文件中的表格数据

从pdf中提取数据到表格中[关闭]

使用Java和IText,如何从PDF中提取AcroForm字段名称?

从pdf文件中提取特定数据