如何在PDF中检测字体系列?

时间:2016-06-24 09:50:21

标签: pdf fonts

我有一个包含许多字体的pdf,检查它是否包含属于Arial字体系列的字体的最佳方法是什么? 这有可能用任何语言吗?
我找不到任何可以做到这一点的图书馆或语言。

所以,我尝试使用ImageMagick将pdf转换为图像并对图像中存在的所有字母进行分割(pdf)。然后我尝试将所有分割的字母表与arial字体系列字母表的分段图像进行比较,这些图像工作正常。

我使用MS Word创建了所有数据集。但是arial字体系列在不同的编辑器中看起来不同。“看起来不同”,我的意思是相同字母的分段图像在不同的编辑器中具有不同的像素值。并且10pt大小的字母表也有不同编辑器中的不同维度。所以,这种方法不起作用。

有关如何执行此操作的任何建议?可能正在使用svg文件或ps文件

我还了解到,在pdf中,使用贝塞尔曲线渲染字母表,其中每个贝塞尔曲线使用一些控制点和节点绘制。 这些控制点是否属于一个字体系列的所有字母表相同?如果是,如何在pdf中提取字母表的控制点,因为这些可用于检测字体系列。

1 个答案:

答案 0 :(得分:1)

您的文档中可以有三种类型的文字:

  1. 不是真实文字的文字,而是光栅图像的一部分,
  2. 不使用真实字体的PDF语法绘制的矢量文本
  3. 使用真实字体的矢量文本。
  4. 您的问题的答案取决于您遇到的文字类型:

    1. 如果文本不是真实文本,而是光栅图像的一部分,则无法提取字体信息。您需要一个OCR工具将像素转换为字符,但您不会获得有关字体系列的任何信息。您可以尝试比较像素,但您已经尝试过,并且您已经发现这不是微不足道的(人们可能会认为您当前的解决方案是一种糟糕的解决方法/糟糕的设计)。
    2. 您可以使用Bézier曲线描述在页面上绘制的文本。虽然,可以像这样绘制文本,但是你找不到很多像这样绘制的PDF。原因很明显:每当你需要一个特定的字形时,让我们说 A ,你需要添加语法来在页面上绘制该字形,从而导致大量冗余的PDF语法。 / LI>
    3. PDF通常使用字体。使用字体字典将字体存储在PDF文件中。组成页面的语法是指使用可由PDF生产者选择的名称的字体,但它与页面资源中包含对字体字典的引用的条目相对应。每种字体都有一个编码映射字符到字形。在页面内容中,我们使用字符,基于这些字符,将以字体选择字形。
    4. 您在询问字体系列。该信息存储在字体字典中。看看我对问题What are the ways of checking if piece of text in PDF documernt is bold using iTextSharp的回答,你就会知道这样的字体字典是什么样的。

      您是否在字体词典中看到/BaseFont条目?它具有JOJJAH+TT116t00等值。在这种情况下,字体的名称是“TT116t00”,但什么是“JOJJAH”?我在回答问题What are the extra characters in the font name of my PDF?

      时解释了这一点

      并非所有字体都嵌入了。有时,字体的名称足以让观众知道字形的样子。例如:每个观众应该能够呈现14种标准类型1字体

      Arial不是这些字体之一,因此如果您想确保正确呈现Arial,则需要嵌入该字体。字体字典将引用字体描述符,您可以在其中找到使用线性路径,Bézier曲线等绘制字形的语法。假设您需要字符 A ,那么字体描述符将包含一些字体描述符知道如何绘制该字符的语法。字体字典还将具有将字符A映射到字形 A 的地图。现在,当您在内容中需要该字形时,您可以使用字符A,这将引用绘制字形 A 的语法。该语法仅存储在PDF中一次。

      假设PDF嵌入了完整的Arial字体,那么/BaseFont的值将为Arial。但是,如果我们嵌入完整的Arial字体,PDF将会膨胀。 Arial中的字符太多了;我们并不需要它们。这就是我们只嵌入一个或多个子集的原因。当您在+条目中看到6个字符后跟/BaseFont符号时,您发现了一个字体子集。

      获取字体字典的/BaseFont条目可以使用不同的库来完成。在官方的iText网站上,我们有不同的Q& As解释如何Inspect a PDF。还有一个lists the fonts used in a PDF的例子。也许这会有所帮助。

      注意:,如帮助部分所述,更具体地说,在页面What topics can I ask about here?上,您会发现规则#4:要求我们推荐或查找图书的问题,工具,软件库,教程或其他场外资源都是Stack Overflow的主题,因为它们往往会吸引见解答案和垃圾邮件。

      我已经向您提供了有关在PDF中查找字体信息的位置的一般信息,但是您不能提出问题来推荐最佳工具来执行此操作。对不起。