如何找出哪些字体被引用,哪些embedded在PDF文档中

我们对PDF文档中的字体有一些问题。 为了解决我想要检查的问题,哪些字体实际上embedded在pdf文档中,哪些只能被引用。 有没有一个容易(和免费的便宜)的方式来做到这一点?

pdffonts命令行工具最初来自Xpdf ,现在是Poppler的一部分。

作为poppler-utils软件包的一部分,该工具在大多数Linux发行版中都可用。

示例用法和输出:

 $ pdffonts some.pdf name type emb sub uni object ID ------------------------------------ ----------------- --- --- --- --------- BAAAAA+Arial-Black TrueType yes yes yes 53 0 CAAAAA+Tahoma TrueType yes yes yes 28 0 DAAAAA+Wingdings-Regular TrueType yes yes yes 43 0 EAAAAA+Webdings TrueType yes yes yes 38 0 FAAAAA+Arial-BoldMT TrueType yes yes yes 33 0 GAAAAA+Tahoma-Bold TrueType yes yes yes 23 0 HAAAAA+OpenSymbol TrueType yes yes yes 48 0 

如果你只是想找出字体名称更简单:从terminal运行

 strings yourPDFfilepath.pdf | grep FontName 

我终于得到了一个实际上似乎embedded了字体的示例文件。

使用普通的Adobe Reader(或者如果你喜欢,可以使用Foxit)。 在生成的对话框中selectFile-> PropertiesselectFont选项卡。 你会看到一个字体列表。 embedded的将在()后面的字体名称中声明这个事实。

CAM :: PDF有一个字体记者,可作为命令行工具或库调用。 如果你运行“listfont.pl file.pdf”你得到这样的输出:

 Page 1: Name: F1.0 Type: TrueType BaseFont: NZUXSR+Impact Encoding: MacRomanEncoding Widths: yes Characters: 0-255 Embedded: yes Name: F2.0 Type: TrueType BaseFont: XSFKRA+ArialMT Encoding: MacRomanEncoding Widths: yes Characters: 0-255 Embedded: yes 

您可以使用在线字体转换器从PDF中提取字体

使用免费的iText(或iTextSharp如果你在.NET上),你可以编写一个实用工具,使用BaseFont.GetDocumentFonts方法为你提取这个信息。

阅读这个链接的代码