PDFBox 2.0.25 java.io.IOException:未知的目录对象 c='>' cInt=62 peek='>' peekInt=62 位于偏移量 26096 (起始偏移量:26096)

问题描述 投票:0回答:2

我使用 PDFBox 版本 2.0.25 出现错误

java.io.IOException:未知的目录对象 c='>' cInt=62 peek='>' peekInt=62 位于偏移量 26096(起始偏移量:26096)

行错误代码是

PDDocument doc = PDDocument.load(inputFile);

尝试打开文档,一些参考尝试

PDDocument doc = PDDocument.loadNonSeq(inputFile);

但是 PDFBox 版本 2.0.25 没有这样的函数 'loadNonSeq'

完整日志错误

java.io.IOException: Unknown dir object c='>' cInt=62 peek='>' peekInt=62 at offset 26096 (start offset: 26096)
        at org.apache.pdfbox.pdfparser.BaseParser.parseDirObject(BaseParser.java:913)
        at org.apache.pdfbox.pdfparser.BaseParser.parseCOSDictionaryValue(BaseParser.java:154)
        at org.apache.pdfbox.pdfparser.BaseParser.parseCOSDictionaryNameValuePair(BaseParser.java:288)
        at org.apache.pdfbox.pdfparser.BaseParser.parseCOSDictionary(BaseParser.java:218)
        at org.apache.pdfbox.pdfparser.BaseParser.parseDirObject(BaseParser.java:857)
        at org.apache.pdfbox.pdfparser.COSParser.parseFileObject(COSParser.java:907)
        at org.apache.pdfbox.pdfparser.COSParser.parseObjectDynamically(COSParser.java:876)
        at org.apache.pdfbox.pdfparser.COSParser.parseObjectDynamically(COSParser.java:796)
        at org.apache.pdfbox.pdfparser.COSParser.parseDictObjects(COSParser.java:756)
        at org.apache.pdfbox.pdfparser.PDFParser.initialParse(PDFParser.java:187)
        at org.apache.pdfbox.pdfparser.PDFParser.parse(PDFParser.java:226)
        at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1105)
        at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1088)
        at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:1047)
        at org.apache.pdfbox.pdmodel.PDDocument.load(PDDocument.java:995)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

有什么建议吗?谢谢你

java pdfbox
2个回答
0
投票

CMS 签名应该是十六进制值,所以我已经发表了评论。请在下面找到。即使我也通过下面的评论解决了同样的问题

byte[] cmsSignature = Base64.decodeBase64(signedHash);
RandomAccessFile raf = new RandomAccessFile(inputFile, "rw");
raf.seek(offset);
raf.write(Hex.getBytes(cmsSignature));
// raf.write(cmsSignature);
raf.close();

0
投票

使用 3.0.1 版本帮助我摆脱了这个异常(即使在最新版本 2.0.30 中我也遇到了一些文档)。

更新时请查看迁移指南(https://pdfbox.apache.org/3.0/migration.html),因为例如你必须使用

Loader.loadPDF
而不是
PDDocument.load

© www.soinside.com 2019 - 2024. All rights reserved.