Java 加载错误的PDF时捕获PDFBox警告

Java 加载错误的PDF时捕获PDFBox警告,java,pdfbox,Java,Pdfbox,使用PDFBox加载PDF时,如果PDF错误,则会收到日志级别的警告: PDDocument doc = PDDocument.load (new File (filename)); 例如,这可能导致控制台上出现以下输出: Dez 08, 2020 9:14:41 AM org.apache.pdfbox.pdfparser.COSParser validateStreamLength WARNING: The end of the stream doesn't point to t

使用PDFBox加载PDF时,如果PDF错误,则会收到日志级别的警告:

    PDDocument doc = PDDocument.load (new File (filename));
例如,这可能导致控制台上出现以下输出:

Dez 08, 2020 9:14:41 AM org.apache.pdfbox.pdfparser.COSParser validateStreamLength 
WARNING: The end of the stream doesn't point to the correct offset, using workaround to read the stream, stream start position: 3141, length: 1674, expected end position: 4815
显然,pdf在内容流中有一些错误,但它确实加载到
doc
。但是,是否可以使用PDFBox以编程方式捕获此警告?是否存在一些属性,用于在加载文档后告诉您有关警告的信息


我已经尝试过了,但这会检查PDF/A的遵从性,这会导致更多的消息。

尝试解析器的非宽容模式。此代码来自ShowSignature.java示例:

RandomAccessBufferedFileInputStream raFile=新的RandomAccessBufferedFileInputStream(文件);
//如果文件不太大,也可以将PDF下载到字节数组中
//使用IOUtils.toByteArray()并将RandomAccessBuffer()对象传递给
//PDFParser构造函数。
PDFParser parser=新的PDFParser(raFile);
解析器.setLenient(false);
parser.parse();
PDDocument document=parser.getPDDocument();

尝试解析器的非宽容模式。此代码来自ShowSignature.java示例:

RandomAccessBufferedFileInputStream raFile=新的RandomAccessBufferedFileInputStream(文件);
//如果文件不太大,也可以将PDF下载到字节数组中
//使用IOUtils.toByteArray()并将RandomAccessBuffer()对象传递给
//PDFParser构造函数。
PDFParser parser=新的PDFParser(raFile);
解析器.setLenient(false);
parser.parse();
PDDocument document=parser.getPDDocument();