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

Java com.itextpdf.text.exceptions.InvalidPdfException:重建失败:读取文件指针处的字符串时出错,java,pdf,itext,Java,Pdf,Itext,阅读PDF文件时出现以下异常。它在Acrobat reader中打开得很好。我在另一个问题中读到,虽然它是在acrobat中打开的,但没有必要通过iText打开,因为PDF包含错误,他建议修复PDF。但是文件来自客户端,他们可以打开Acrobat,所以我必须修复它,或者在Acrobat中显示错误或警告 com.itextpdf.text.exceptions.InvalidPdfException: Rebuild failed: Error reading string at file poi

阅读PDF文件时出现以下异常。它在Acrobat reader中打开得很好。我在另一个问题中读到,虽然它是在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
%PDF-1.1
10 obj
>
endobj
30 obj
>
endobj
70 obj
流动
英国电信
  • 有什么方法可以让客户看到PDF有错误吗?通过Acrobat或其他软件,而不是Java例外
  • 是否有办法绕过此错误并继续?对于安全PDF,我们也遇到了类似的问题,我们确实解锁了。请建议

  • 它实际上是一个无效的PDF文件。当我在文本编辑器中打开PDF时,我注意到页眉中有CreatorDate,但没有右括号。我刚刚添加了一个带有有效日期的括号,如CreatorDate(2014年11月5日17:50:24),然后它就可以工作了。我要求客户在文本编辑器(记事本、记事本++等)中对PDF文件进行修改,只需添加一个右括号即可

    因此,下面一行:
    /创作者国(

    更改为:

    /CreatorDate()

    如果可能,请共享PDF。如果没有,至少共享一个小的,除了声音偏移10891。对不起,这是机密。还有什么可以进行偏移吗?我是说一个小的“摘录”…智能手机键盘…您似乎正在使用iText 5或更高版本,这意味着您的客户可能也是iText软件的客户(如果不是,则必须披露使用iText的所有源代码以符合AGPL)。要求您的客户以与您共享文档的方式与iText软件共享文档。他可以使用其客户登录在我们的封闭(机密)数据库中创建票据票务系统。一旦我们收到文件,我们会看一看。刚刚注意到PDF标题的详细信息,创建者日期没有右括号。因此PDF无效,我将要求客户在他们身边更正。感谢所有人发现我的情况也是一样的问题。谢谢:)“编辑”文本编辑器中的PDF通常会损坏PDF。不一定。旧的Oracle tools(Developer 2000)在PDF中使用格式不正确的“/CreatorDate”(“行)创建PDF。我个人使用notepad++编辑了数千个PDF来解决这个问题。我说“更多时候”,这意味着“不一定”。尽管如此,我还是希望您在添加或删除某些字节时也能更正交叉引用表或流:如果不这样做,您很可能会将其呈现为不正确的,从而使PDF成为损坏的PDF;即使某些PDF查看器可能会根据需要显示PDF,PDF仍然会损坏,这可能会在进一步处理时产生有趣的效果。这是oracle reports的一个常见问题,请按编程方式添加)解决此问题。