iText PDF Concatination失败 - InvalidPDFException

时间:2016-12-06 16:13:05

标签: java itext

我正在尝试使用itext 4.2.0实用程序连接2个PDF。在少数情况下,它会在下面的代码

中抛出InvalidPDFException
PreferredColumnWidth
  

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"

1 个答案:

答案 0 :(得分:2)

  1. 没有iText 4.2.0。请扔掉它。它是一个流氓版本,并未由iText的官方开发者发布。它是一个" gork",意思是上帝真的知道里面是什么。 解决方案:丢弃iText 4.2.0并将其替换为更新的正式版本: https://github.com/itext/itextpdf/releases
  2. 您收到错误消息,指出找不到密钥trailer.not.found的实际错误消息。这意味着您使用的是未正确构建的iText jar。 jar中缺少.lng个文件,因此无法找到实际的错误消息。 解决方案:丢弃iText 4.2.0并将其替换为更新的正式版本: https://github.com/itext/itextpdf/releases
  3. trailer.not.found对应于消息"未找到预告片"。这意味着您正在尝试使用可能看起来像PDF的文件创建PdfReader,但这不是。例如:它以%PDF-开头,但没有预告片。这意味着iText会搜索文件(应以%%EOF结尾;请检查是否属于这种情况)并找到关键字startxref。换句话说:预告片丢失了。 解决方案:检查PDF是否有效。请注意,旧版本的iText无法读取使用版本PDF 1.5之后引入的功能的PDF。也许你的"非正式的" iText版本很老......
  4. 最后:\是一个转义字符。这是错误的:"c:\tmp\test.pdf"因为如果读取为" c: [tab] mp [tab] \ test.pdf"其中 [tab] 是制表符\t。您应该使用"c:/tmp/test.pdf""c:\\tmp\\test.pdf"