PDFBox错误无法加载字体文件

时间:2018-03-07 21:06:59

标签: linux fonts pdfbox

我不确定它是否是PDFBox问题。但提到它可能有助于理解我的问题。

所以我收到了很多来自PDFBox的警告:

WARN  No Unicode mapping for a37 (37) in font TCBLZV+LCIRCLE10

这是百分之一。

所以我决定添加LCRICLE10字体和警告列表中提到的其他字体。

以下是我下载的字体:

以下是我收到的PDFBox错误:

5517 ERROR Could not load font file: /home/$USER/.fonts/bakoma/pfb/eurb9.pfb
5518 java.io.IOException: Found Token[kind=NAME, text=dup] but expected INTEGER
5519    at org.apache.fontbox.type1.Type1Parser.read(Type1Parser.java:812)
5520    at org.apache.fontbox.type1.Type1Parser.readEncoding(Type1Parser.java:226)
5521    at org.apache.fontbox.type1.Type1Parser.parseASCII(Type1Parser.java:135)
5522    at org.apache.fontbox.type1.Type1Parser.parse(Type1Parser.java:61)
5523    at org.apache.fontbox.type1.Type1Font.createWithPFB(Type1Font.java:56)
5524    at org.apache.pdfbox.pdmodel.font.FileSystemFontProvider.addType1Font(FileSystemFontProvider.java:646)
5525    at org.apache.pdfbox.pdmodel.font.FileSystemFontProvider.scanFonts(FileSystemFontProvider.java:255)
5526    at org.apache.pdfbox.pdmodel.font.FileSystemFontProvider.<init>(FileSystemFontProvider.java:225)
5527    at org.apache.pdfbox.pdmodel.font.FontMapperImpl$DefaultFontProvider.<clinit>(FontMapperImpl.java:130)
5528    at org.apache.pdfbox.pdmodel.font.FontMapperImpl.getProvider(FontMapperImpl.java:149)
5529    at org.apache.pdfbox.pdmodel.font.FontMapperImpl.findFont(FontMapperImpl.java:413)
5530    at org.apache.pdfbox.pdmodel.font.FontMapperImpl.findFontBoxFont(FontMapperImpl.java:376)
5531    at org.apache.pdfbox.pdmodel.font.FontMapperImpl.getFontBoxFont(FontMapperImpl.java:350)
5532    at org.apache.pdfbox.pdmodel.font.PDType1Font.<init>(PDType1Font.java:146)
5533    at org.apache.pdfbox.pdmodel.font.PDType1Font.<clinit>(PDType1Font.java:79)
5534    at org.apache.pdfbox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:62)
5535    at org.apache.pdfbox.pdmodel.PDResources.getFont(PDResources.java:143)
5536    at org.apache.pdfbox.contentstream.operator.text.SetFontAndSize.process(SetFontAndSize.java:60)
5537    at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:838)
5538    at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:495)
5539    at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:469)
5540    at org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:150)
5541    at org.apache.pdfbox.text.LegacyPDFStreamEngine.processPage(LegacyPDFStreamEngine.java:139)
5542    at org.apache.pdfbox.text.PDFTextStripper.processPage(PDFTextStripper.java:391)
5543    at org.apache.tika.parser.pdf.PDF2XHTML.processPage(PDF2XHTML.java:147)
5544    at org.apache.pdfbox.text.PDFTextStripper.processPages(PDFTextStripper.java:319)
5545    at org.apache.pdfbox.text.PDFTextStripper.writeText(PDFTextStripper.java:266)
5546    at org.apache.tika.parser.pdf.PDF2XHTML.process(PDF2XHTML.java:117)
5547    at org.apache.tika.parser.pdf.PDFParser.parse(PDFParser.java:168)
5548    at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:280)
5549    at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:280)
5550    at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:143)
5551    at org.apache.tika.cli.TikaCLI$OutputType.process(TikaCLI.java:205)
5552    at org.apache.tika.cli.TikaCLI.process(TikaCLI.java:486)
5553    at org.apache.tika.cli.TikaCLI.main(TikaCLI.java:145)

这是许多其他人中的一个。

这是小清单:

ERROR Could not load font file: /home/$USER/.fonts/bakoma/pfb/eufm6.pfb
ERROR Could not load font file: /home/$USER/.fonts/bakoma/pfb/euex9.pfb
ERROR Could not load font file: /home/$USER/.fonts/bakoma/pfb/eusm10.pfb
ERROR Could not load font file: /home/$USER/.fonts/bakoma/pfb/cmmi7.pfb
ERROR Could not load font file: /home/$USER/.fonts/bakoma/pfb/msam6.pfb

他们似乎都来自:.fonts/bakoma/pfb/

当我使用FireFox时,我看到了这一点:

enter image description here

我从〜/ .fonts /中删除了字体并清除了字体缓存,现在一切都恢复了正常。

1 个答案:

答案 0 :(得分:1)

“WARN No Unicode mapping”消息仅在您进行文本提取时才相关,即由于缺少unicode映射,您的文本将不包含该字形。 “TCBLZV + LCIRCLE10”表示嵌入式字体子集,因此无论如何添加字体都无济于事。另见: https://pdfbox.apache.org/2.0/faq.html#notext

所以你真正的问题在那里结束,加载字体不会变得更好,除非你遇到非嵌入字体的问题。

错误“找到令牌[kind = NAME,text = dup]但预期的INTEGER”表示解析类型1字体时出错。这可能是字体中的语法错误,也可能是PDFBox类型1字体解析器中的错误。我宁愿怀疑后者,因为类型1字体基于PostScript,而PDFBox解析器只能识别它的一部分。

更新:我查看了eurb9.pfb字体。这就像我怀疑的那样,字体的ASCII部分有一个计算(“dup dup 161 10 getinterval 0 exch putinterval dup dup 173 23 getinterval 10 exch putinterval dup dup 127 exch 196 get put readonly def”)我们无法解析它。我们自己的类型1解析器只能解析不计算的元素。 (这仍然涵盖了99%的type1字体)