【发布时间】:2019-12-10 02:37:44
【问题描述】:
从 PDF 文档中读取页面时出现错误。此页面包含一个条形码,它是
使用字体(AAAAAC+Code3de9)完成。此错误仅在我使用 renderImage 函数时出现。
我用的是2.0.17版本的pdfbox-app。
*déc. 02, 2019 9:34:13 AM org.apache.pdfbox.pdmodel.font.PDCIDFontType2 <init>
AVERTISSEMENT: Could not read embedded OTF for font AAAAAC+Code3de9
java.io.IOException: Illegal seek position: 2483278652
at org.apache.fontbox.ttf.MemoryTTFDataStream.seek(MemoryTTFDataStream.java:164)
at org.apache.fontbox.ttf.TrueTypeFont.readTable(TrueTypeFont.java:352)
at org.apache.fontbox.ttf.TTFParser.parseTables(TTFParser.java:173)
at org.apache.fontbox.ttf.TTFParser.parse(TTFParser.java:150)
at org.apache.fontbox.ttf.OTFParser.parse(OTFParser.java:79)
at org.apache.fontbox.ttf.OTFParser.parse(OTFParser.java:27)
at org.apache.fontbox.ttf.TTFParser.parse(TTFParser.java:106)
at org.apache.fontbox.ttf.OTFParser.parse(OTFParser.java:73)
at org.apache.pdfbox.pdmodel.font.PDCIDFontType2.<init>(PDCIDFontType2.java:112)
at org.apache.pdfbox.pdmodel.font.PDCIDFontType2.<init>(PDCIDFontType2.java:65)
at org.apache.pdfbox.pdmodel.font.PDFontFactory.createDescendantFont(PDFontFactory.java:139)
at org.apache.pdfbox.pdmodel.font.PDType0Font.<init>(PDType0Font.java:192)
at org.apache.pdfbox.pdmodel.font.PDFontFactory.createFont(PDFontFactory.java:97)
at org.apache.pdfbox.pdmodel.PDResources.getFont(PDResources.java:146)
at org.apache.pdfbox.contentstream.operator.text.SetFontAndSize.process(SetFontAndSize.java:61)
at org.apache.pdfbox.contentstream.PDFStreamEngine.processOperator(PDFStreamEngine.java:872)
at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:506)
at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:480)
at org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:153)
at org.apache.pdfbox.rendering.PageDrawer.drawPage(PageDrawer.java:268)
at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:321)
at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:243)
at org.apache.pdfbox.rendering.PDFRenderer.renderImage(PDFRenderer.java:203)
at patrick.mart1.impose.ImposeKosmedias$1.run(ImposeKosmedias.java:370)
déc. 02, 2019 9:34:13 AM org.apache.pdfbox.pdmodel.font.PDCIDFontType2 findFontOrSubstitute
AVERTISSEMENT: Using fallback font LiberationSans for CID-keyed TrueType font AAAAAC+Code3de9*
非常感谢您的帮助
【问题讨论】:
-
请分享 PDF。这要么是 PDFBox 错误,要么是损坏的嵌入字体。
-
这里是带有条形码的 PDF 页面的链接 [PDF Doc] (com121.fr/projets/lmai/page-kosmedias-24.pdf)
-
该 PDF 显示在 PDFDebugger 中。我查看了字体资源,发现一个损坏的字体 (F2) 具有相似的名称和异常。我提取了字体,它真的坏了。 DTL OTMaster 3.7 light 拒绝加载它。要么你得到了错误的文件,要么文件被替换了(根据它今天创建的元数据)。可见的条形码是图像,而不是字形。
-
我已经从一个完整的文档(24 pg)中提取了这个页面,所以如果条形码是一个图像,我如何在使用 renderImage 函数显示之前从所有文档中删除这个损坏的字体?跨度>
-
如果您从其他页面中删除该字体 使用该字体,那么您将收到更多错误,因为该字体(使用该字体的位置)现在已丢失。您可以尝试通过扩展 RemoveAllText.java 示例来选择性地删除该特定文本。 (事实上,它会删除所有文本。您可以通过仅从具有特定名称的字体中删除文本来改进它)。当然这是有风险的。