com.itextpdf.text.exceptions.InvalidPdfException:重建失败:读取文件指针处的字符串时出错

时间:2015-02-06 05:05:58

标签: java pdf itext

在阅读PDF时获得以下异常。它在Acrobat阅读器中打开很好。我在另一个问题中读到,尽管它在acrobat中打开,但没有必要通过iText打开,因为PDF包含错误,他建议修复PDF。但该文件来自客户端,他们可以打开Acrobat,所以要么我必须修复它或在Acrobat中显示错误或警告。

com.itextpdf.text.exceptions.InvalidPdfException: Rebuild failed: Error reading string at file pointer 10891; Original message: Error reading string at file pointer 10891
at com.itextpdf.text.pdf.PdfReader.readPdf(PdfReader.java:655)

PDF文件摘录

%PDF-1.1
1 0 obj
<<
/Creator (Developer 2000)
/CreatorDate (
/Author (Oracle Reports)
/Producer (Oracle PDF driver)
/Title (con5010I412014141258.pdf)
>>
endobj
3 0 obj
<<
/Type /Pages
/Kids 4 0 R
/Count 5 0 R
>>
endobj
7 0 obj
<</Length 8 0 R>>
stream
BT
  1. 有什么办法可以向客户表明PDF有错误吗?通过Acrobat或其他软件而不是Java例外。
  2. 有办法绕过这个错误并继续吗?我们遇到了类似的安全PDF问题,我们确实解锁了。请建议

3 个答案:

答案 0 :(得分:4)

它实际上是一个无效的PDF。当我在文本编辑器中打开PDF时,我注意到标题中的CreatorDate具有紧密括号。我刚刚添加了有效日期的近距离括号,比如这个CreatorDate(2014年11月5日17:50:24)然后它有效。我请客户在他们身边纠正

答案 1 :(得分:0)

在文本编辑器(记事本,记事本++等)中编辑PDF,只需添加一个右括号。

以下一行:
/ CreatorDate(

更改为:
/ CreatorDate()

答案 2 :(得分:-1)

就我而言,它允许我使用打印来修复文件。

(打印的文件基本上是文件的二进制/图像,丢失了很多信息/元数据)

enter image description here