如何在PDF中检测字体家庭

  • 本文关键字:字体 家庭 PDF pdf fonts
  • 更新时间 :
  • 英文 :


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

因此,我尝试通过使用ImageMagick将PDF转换为图像,并分割了图像中存在的所有字母(PDF)。然后我尝试将所有分段字母与分段的Arial字体族字母分段图像进行比较。

我使用MS Word创建了所有数据集。但是Arial字体系列在不同的编辑器中看起来不同。从外观不同",我的意思是,同一字母的分段图像在不同的编辑器中具有不同的像素值。而且10pt size的字母也具有不同的字母。不同编辑器中的不同维度。因此,此方法不起作用。

关于如何执行此操作的任何建议?可能正在使用SVG文件或PS文件

我还得知,在PDF的字母中,使用bezier曲线呈现,其中每条bezier曲线均使用一些控制点和节点绘制。这些控制点是否相同,属于一个字体系列的所有字母?如果是的,则如何提取PDF中字母的控制点,因为这些可以用于检测字体家族。

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

  1. 不是真实文本的文本,而是栅格图像的一部分,
  2. pdf语法绘制的矢量文本而不使用真实字体,
  3. 使用真实字体的矢量文本。

您问题的答案取决于您面临的文本类型:

  1. 如果文本不是真实的文本,而是栅格图像的一部分,则无法提取字体信息。您需要一个OCR工具将像素转换为字符,但是您不会获得有关字体系列的任何信息。您可以尝试比较像素,但是您已经尝试过,并且发现这并不小(人们可能将当前的解决方案视为不良的解决方法/不良设计)。
  2. 您描述了使用Bézier曲线在页面上绘制的文本。虽然可以绘制这样的文本,但您找不到这样的PDF。原因很明显:每次您需要特定的字形时,假设 a ,您都需要添加语法以在页面上绘制该字形,从而导致大量冗余PDF语法。<<<<<<<<<<<<<<<<<<<<<<<</li>
  3. PDF通常与字体一起使用。使用字体词典将字体存储在PDF文件中。构成页面的语法是指使用PDF生产者可以选择的名称的该字体,但与包含对字体字典的引用的页面资源中的条目相对应。每个字体都有一个编码字符对字形的编码。在页面内容中,我们使用字符,基于这些字符,字形将在字体中选择。

您正在询问字体家庭。此信息存储在字体词典中。看看我回答一个问题的答案,检查PDF Documernt中的文本是否使用ItextSharp大胆,您会了解这样的字体词典是什么样的。

您在字体词典中看到/BaseFont条目吗?它具有诸如JOJJAH+TT116t00之类的值。在这种情况下,字体的名称是" tt116t00",但是" jojjah"是什么?这在我对问题的回答中解释了我的pdf字体名称中的多余字符?

并非所有字体都嵌入。有时,字体的名称足以让观众知道字形的外观。例如:每个观看者都应该能够渲染14个标准类型1字体。

Arial不是这些字体之一,因此,如果您想确保正确渲染Arial,则需要嵌入字体。字体词典将参考字体描述符,您会在其中找到使用线性路径,bézier曲线等绘制字形的语法。假设您需要字符 a 知道如何绘制该角色的语法。字体字典还将具有将字符 A映射到glyph a 的地图。现在,当您需要内容中的字形时,您只需使用字符 A,它将指绘制绘制字形 a 的语法。该语法仅存储在PDF中。

假设PDF具有完整的Arial字体嵌入,然后/BaseFont的值将为Arial。但是,如果我们嵌入了完整的Arial字体,则PDF会肿。Arial的字符太多了。我们不需要全部。这就是为什么我们只嵌入一个或多个子集的原因。当您在/BaseFont条目中看到6个字符,然后在+登录中登录时,您发现了一个字体子集。

可以使用不同的库来完成字体词典的/BaseFont输入。在官方的Itext站点上,我们有不同的Q&amp;,因为这说明了如何检查PDF。还有一个示例列出了PDF中使用的字体。也许这可能会有所帮助。

注意:帮助部分中的解释,更具体地说,我可以在此处询问哪些主题?书籍,工具,软件库,教程或其他场外资源对于堆栈溢出而言是副主题,因为它们倾向于吸引自以为是的答案和垃圾邮件。

我已经为您提供了有关在PDF中找到字体信息的一般信息,但是您不允许您提出问题来推荐最佳工具来执行此操作。很抱歉。

最新更新