【问题标题】:PDFs: Extracting text associated with font (linux)PDF:提取与字体相关的文本(linux)
【发布时间】:2018-08-23 21:47:51
【问题描述】:

我试图解决的一般问题是确定大量 PDF 中有多少文本与不同的字体相关联。我知道我可以使用 pdftotext 和带有 pdffonts 的字体信息从 PDF 中提取文本,但我不知道如何将它们链接在一起。我有 100,000 多个 PDF 需要处理,所以需要一些我可以编程的东西(我不介意商业解决方案)。

【问题讨论】:

  • 我不是要光顾,但你试过用谷歌搜索吗?

标签: pdf fonts text-extraction


【解决方案1】:

PDFTron PDFNet SDK可以提取所有图形操作,包括文本对象,包括正在使用的字体的链接。

从 ElementReader 示例开始,您可以获得每个文本元素的字体。 https://www.pdftron.com/documentation/samples?platforms=windows#elementreader https://www.pdftron.com/api/PDFNet/?topic=html/T_pdftron_PDF_Font.htm

【讨论】:

  • 感谢您提供此信息。我最终使用了 PDFTron 附带的带有 XML 输出和样式的 pdf2text 工具(pdf2text -f xml --xml_output_styles)。这包含每行文本的字体信息,然后我可以对其进行量化。
【解决方案2】:

Adobe PDF Library - 我公司销售的产品 - 可以做到这一点。

这是示例代码的一部分:

// This callback function is called fpr each PDWord object.
ACCB1 ASBool ACCB2 WordEnumProc(PDWordFinder wfObj, PDWord pdWord, ASInt32 pgNum, void* clientData)
{
    char str[128];
    char fontname[100];

    // get word text
    PDWordGetString(pdWord, str, sizeof(str));

    // get the font name
    PDStyle style = PDWordGetNthCharStyle(wfObj, pdWord, 0);
    PDFont wordFont = PDStyleGetFont(style);
    PDFontGetName(wordFont, fontname, sizeof(fontname));

    printf("%s  [%s]\n", str, fontname);

    return true;
}

这是输出示例:

...
Chapter  [Arial,Bold]
2:  [Arial,Bold]
Overview  [Arial,Bold]
27  [Arial]
...
This  [TimesNewRoman]
book  [TimesNewRoman]
describes  [TimesNewRoman]
the  [TimesNewRoman]
Portable  [TimesNewRoman]
Document  [TimesNewRoman]
Format  [TimesNewRoman]
...

【讨论】:

    猜你喜欢
    • 2013-09-23
    • 2016-01-29
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    相关资源
    最近更新 更多