我正在尝试使用itext 4.2.0实用程序连接2个PDF。在少数情况下,它会在下面的代码
中抛出InvalidPDFExceptionPreferredColumnWidth
com.itextpdf.text.exceptions.InvalidPdfException:未找到任何消息 trailer.not.found at com.itextpdf.text.pdf.PdfReader.rebuildXref(未知来源)at com.itextpdf.text.pdf.PdfReader.readPdf(未知来源)at com.itextpdf.text.pdf.PdfReader。(未知来源)at com.itextpdf.text.pdf.PdfReader。(未知来源)
这个PDF是有效的 - 我在文本编辑器中打开它并确保它具有%PDF以及建议的%EOF here
更新
iText版本是2.1.7。 jar被错误地命名为4.2.0。
提到的路径(" c:\ tmp \ test.pdf")是示例一。我们发送的是" c:/tmp/test.pdf"
答案 0 :(得分:2)
trailer.not.found
的实际错误消息。这意味着您使用的是未正确构建的iText jar。 jar中缺少.lng
个文件,因此无法找到实际的错误消息。 解决方案:丢弃iText 4.2.0并将其替换为更新的正式版本: https://github.com/itext/itextpdf/releases trailer.not.found
对应于消息"未找到预告片"。这意味着您正在尝试使用可能看起来像PDF的文件创建PdfReader
,但这不是。例如:它以%PDF-
开头,但没有预告片。这意味着iText会搜索文件(应以%%EOF
结尾;请检查是否属于这种情况)并找到关键字startxref
。换句话说:预告片丢失了。 解决方案:检查PDF是否有效。请注意,旧版本的iText无法读取使用版本PDF 1.5之后引入的功能的PDF。也许你的"非正式的" iText版本很老...... \
是一个转义字符。这是错误的:"c:\tmp\test.pdf"
因为如果读取为" c: [tab] mp [tab] \ test.pdf"其中 [tab] 是制表符\t
。您应该使用"c:/tmp/test.pdf"
或"c:\\tmp\\test.pdf"
。