我使用过poppler-utils 等工具来获取有关 PDF 文档的信息qpdf
。pdfinfo
然而,我正在寻找一种方法来获取更具体的信息,例如边距宽度、使用的字体系列等,pdfinfo
但我没有得到这些信息,qpdf
.qpdf
不过,有一个--json
选项可以将 PDF 转换为其 JSON 表示形式。我对 JSON 只是稍微熟悉一点,但我找不到任何名为“Margin”或“Font-Family”的属性。像这样的信息甚至以 PDF 格式记录吗?
我不确定这个问题是否适合这个板或 StackOverflow,因为如果有编程方法来提取这些信息(如 C 或 Python 库),我也愿意使用这些方法。有什么建议么?
我的主要目标是能够复制文档中的所有边距/字体信息(假设它们是一致的并且是由 TeX 或 LaTeX 等程序制作的),这样我就可以重现它们的确切样式。现在,我必须使用我的 PDF 查看器提供的工具,使用光标来使用坐标计算边距(或任何类型的长度),至于字体,我必须猜测它们。
答案1
不过,我正在寻找一种方法来获取更具体的信息,例如边距宽度
PDF 格式基本上描述了在页面上放置字形(“字母”)的位置(除其他事项外,但这只是大部分)。您可以自己处理此信息并从中计算边距,或者您可以将其渲染为ghostscript
图像并处理以恢复边距,但“边距是多少”本身并不在 PDF 中。不过,有边界框信息。
使用的字体系列
该信息可能会或可能不会在 PDF 中 - 字体被命名,但字体可以作为一个整体包含在内,如果命名是使用生成的名称自动进行的,则将很难识别字体。
因为如果有编程方式来提取这些信息(例如 C 或 Python 库),我也愿意使用它们。
看一下多普夫夫它带有一个库和一个 CLI 工具mutool
。您可以使用它来解压缩 PDF 内的流,然后您可以在编辑器中打开生成的文件。 PDF规范是例如这里。
我的主要目标是能够复制文档中的所有边距/字体信息(假设它们是一致的并且是由 TeX 或 LaTeX 等程序制作的),这样我就可以重现它们的确切样式。
这将是极其困难的,除非 LaTeX 源代码通过特定的工具链进行处理,并使用特定的 PDF 样式。如果您知道来源是 LaTeX,那么您可能会很幸运地识别出字体。