使用pdfbox解析文件内容时使用回退字体 - 会导致错误吗?

时间:2017-05-22 16:22:28

标签: pdfbox apache-tika

我使用的是使用pdfbox 2.0.3的Apache Tika 1.14。 我用它来提取文件的文本内容。在处理许多文件的生产模式中,我会记录许多语句,如下所示:

WARN  o.a.p.pdmodel.font.PDTrueTypeFont - Using fallback font 'LiberationSans' for 'TimesNewRomanPSMT'
WARN  o.a.p.pdmodel.font.PDTrueTypeFont - Using fallback font 'LiberationSans' for 'TimesNewRomanPS-BoldMT'

我对几个文件进行了比较,并将提取的文本与原始文档进行了比较,没有遗漏任何内容。

我的问题是:如果我只使用pdfbox进行文本提取,那么我可以安全地忽略此类型的语句而不会有任何风险吗?或许我应该安装丢失的字体?

感谢您的任何建议

1 个答案:

答案 0 :(得分:1)

根据我在这里找到的 https://pdfbox.apache.org/1.8/cookbook/workingwithfonts.html 他们建议安装所谓的标准14字体

由于许可要求,我们需要提供替代字体。

根据班级org.apache.pdfbox.pdmodel.font.FontMapperImpl中的代码,这些是标准14字体及其替代品:

Courier:CourierNew,CourierNewPSMT,LiberationMono,NimbusMonL-Regu
Courier-Bold:CourierNewPS-BoldMT,CourierNew-Bold,LiberationMono-Bold,NimbusMonL-Bold
Courier-Oblique:CourierNewPS-ItalicMT,CourierNew-Italic,LiberationMono-Italic,NimbusMonL-ReguObli
Courier-BoldOblique:CourierNewPS-BoldItalicMT,CourierNew-BoldItalic,LiberationMono-BoldItalic,NimbusMonL-BoldObli
Helvetica:ArialMT,Arial,LiberationSans,NimbusSanL-Regu
Helvetica-Bold:Arial-BoldMT,Arial-Bold,LiberationSans-Bold,NimbusSanL-Bold
Helvetica-Oblique:Arial-ItalicMT,Arial-Italic,Helvetica-Italic,LiberationSans-Italic,NimbusSanL-ReguItal
Helvetica-BoldOblique:Arial-BoldItalicMT,Helvetica-BoldItalic,LiberationSans-BoldItalic,NimbusSanL-BoldItal
Times-Roman:TimesNewRomanPSMT,TimesNewRoman,TimesNewRomanPS,LiberationSerif,NimbusRomNo9L-Regu
Times-Bold:TimesNewRomanPS-BoldMT,TimesNewRomanPS-Bold,TimesNewRoman-Bold,LiberationSerif-Bold,NimbusRomNo9L-Medi
Times-Italic:TimesNewRomanPS-ItalicMT,TimesNewRomanPS-Italic,TimesNewRoman-Italic,LiberationSerif-Italic,NimbusRomNo9L-ReguItal
Times-BoldItalic:TimesNewRomanPS-BoldItalicMT,TimesNewRomanPS-BoldItalic,TimesNewRoman-BoldItalic,LiberationSerif-BoldItalic,NimbusRomNo9L-MediItal
Symbol:Symbol,SymbolMT,StandardSymL
ZapfDingbats:ZapfDingbatsITC,Dingbats,MS-Gothic

据我所知,例如处理使用字体 Helvetica 的文件并且我没有安装该字体时,将使用其中一种替代字体: ArialMT Arial LiberationSans NimbusSanL-Regu 。 那很清楚。

如果我没有安装字体 Arial (不是标准14个字体之一)并且我喜欢 Arial 处理文件时使用> LiberationSans 。有没有办法配置这样的映射?

还有一件事:在版本1.8.13中我在课堂上看到:org.apache.pdfbox.pdmodel.font.FontManager 资源文件已加载:org/apache/pdfbox/resources/FontMapping.properties 这可以用来提供这样的映射。 在版本2.x中,我没有看到任何可行性。我想知道它为什么被删除了......