如何确定 pdf 文档中单词的字体系列和字体大小?

Posted

技术标签:

【中文标题】如何确定 pdf 文档中单词的字体系列和字体大小?【英文标题】:How do I figure out the font family and the font size of the words in a pdf document? 【发布时间】:2011-02-16 16:28:37 【问题描述】:

如何确定 pdf 文档中文字的字体系列和字体大小?我们实际上是在尝试使用 iText 以编程方式生成 pdf 文档,但我们不确定如何找出需要生成的原始文档的字体系列和字体大小。文档属性似乎不包含此信息

【问题讨论】:

该问题的解决方案tex.stackexchange.com/q/1401/164050 对我也很有用。 【参考方案1】:

字体存储在目录中(我想在字体类型的子目录中)。如果您将 pdf 作为文本文件打开,您应该能够找到目录条目(它们分别以“>”开头和结尾。

在一个简单的 pdf 文件中,我发现了以下内容:

<</Type/Font/BaseFont/Helvetica-Bold/Subtype/Type1/Encoding/WinAnsiEncoding>>

因此搜索前缀应该对您有所帮助(在某些 pdf 文件中, 组件,但 '/Type /Font' 应该没问题)。

当然,这是一个手动过程,而您可能更喜欢自动过程。

另一方面,我们有时使用identifont 或what the font 来查找给我们带来问题的不常见字体(徽标字体)。

问候 纪尧姆

编辑:以下代码将查找页面中的所有字体。简而言之,您在每个页面的字典中搜索子字典“资源”,然后搜索子字典“字体”。后面的每个条目都是一个字体字典,描述一种字体。

 PdfReader reader = new PdfReader(
   new FileInputStream(new File("file.pdf")));
 int nbmax = reader.getNumberOfPages();
 System.out.println("nb pages " + nbmax);

 for (int i = 1; i <= nbmax; i++) 
    System.out.println("----------------------------------------");
    System.out.println("Page " + i);
    PdfDictionary dico = reader.getPageN(i);
    PdfDictionary ressource = dico.getAsDict(PdfName.RESOURCES);
    PdfDictionary font = ressource.getAsDict(PdfName.FONT);
    // we got the page fonts
    Set keys = font.getKeys();
    Iterator it = keys.iterator();
    while (it.hasNext()) 
       PdfName name = (PdfName) it.next();
       PdfDictionary fontdict = font.getAsDict(name);
       PdfObject typeFont = fontdict.getDirectObject(PdfName.SUBTYPE);
       PdfObject baseFont = fontdict.getDirectObject(PdfName.BASEFONT);               
       System.out.println(baseFont.toString());              
    
 

名称(以下代码中的变量“名称”)是文本中用于更改字体的名称。在 PDF 中,您必须在文本旁边找到它。下面的数字是尺寸。以这里为例,它是 12 号的。(对不起,这部分仍然没有代码)。

BT 
/F13  12  Tf 
288  720  Td 
the text to find  Tj 
ET

【讨论】:

在这里查看 PDF,我总是看到 /TT1 1 Tf 是一个相当简单的纯文本 PDF,但字体比大小 1 大很多。我猜你也必须结合之前的转换,但我还没有找到一个好的方法来做到这一点,除了实现渲染器。【参考方案2】:

根据 PDF 的不同,如果没有概述,您可以在 Adobe Illustrator 中打开它,双击文本并选择其中一些以查看它的字体系列、大小、等等

如果文本有轮廓,则使用 PATRY 建议的在线工具之一找出字体。

祝你好运

【讨论】:

【参考方案3】:

如果您有 Adob​​e Acrobat,您可以看到里面的字体并检查对象和文本流。我在http://pdf.jpedal.org/java-pdf-blog/bid/10479/Viewing-PDF-objects写了一篇关于此的博客文章

【讨论】:

以上是关于如何确定 pdf 文档中单词的字体系列和字体大小?的主要内容,如果未能解决你的问题,请参考以下文章

PDF文件怎么修改字体大小

如何在绘图中指定字体大小(用于 PDF 输出)?

更改 iFrame 的字体大小和字体系列

PDF Formfield 字体大小:默认外观与外观流

wps字体大小设置在哪

如何更改数据表中的导出 PDF 字体大小?