【问题标题】:com.itextpdf.text.exceptions.InvalidPdfException: Rebuild failed: Error reading string at file pointercom.itextpdf.text.exceptions.InvalidPdfException:重建失败:在文件指针处读取字符串时出错
【发布时间】:2015-02-06 05:05:58
【问题描述】:

阅读 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 方面遇到了类似的问题,我们确实解锁了。请建议

【问题讨论】:

  • 如果可能,请分享 PDF。如果没有,至少共享一个小的除了声音偏移 10891。
  • 对不起,这是机密。有什么办法抵消吗?
  • 我的意思是一小段“摘录”……智能手机键盘……叹息
  • 看来您使用的是 iText 5 或更高版本,这意味着您的客户可能也是 iText Software 的客户(如果不是,则必须披露所有使用 iText 的源代码以符合 AGPL) .要求您的客户与 iText Software 共享文档,就像他与您共享文档一样。他可以使用他的客户登录信息在我们的封闭(机密)票务系统中创建票证。收到文件后,我们会立即查看。
  • 刚刚注意到 PDF 标题详细信息,创建者日期没有右括号。所以PDF是无效的,我会要求客户在他们身边更正。谢谢大家

标签: java pdf itext


【解决方案1】:

它实际上是一个无效的 PDF。当我在文本编辑器中打开 PDF 时,我注意到标题的 CreatorDate 没有右括号。我刚刚添加了带有有效日期的右括号,例如 CreatorDate(2014 年 11 月 5 日 17:50:24),然后它就可以工作了。我要求客户在他们这边更正

【讨论】:

  • 在我的案例中也发现了同样的问题。谢谢:)
【解决方案2】:

在文本编辑器(记事本、notepad++ 等)中编辑 PDF 并简单地添加右括号。

所以下面一行:
/创建者日期(

更改为:
/创作者日期()

【讨论】:

  • 在文本编辑器中“编辑”PDF 往往会损坏 PDF。
  • 不一定。旧的 Oracle 工具(Developer 2000)使用格式错误的“/CreatorDate(”行在 PDF 中创建 PDF。我个人使用 notepad++ 编辑了数千个 PDF 以解决该问题。
  • 我说“经常”,这意味着“不一定”。话虽如此:我希望您在添加或删除某些字节时也更正交叉引用表或流:如果不这样做,您很可能会使它们不正确,从而使 PDF 损坏;即使某些 PDF 查看器可能会根据需要显示 PDF,但 PDF 仍然被损坏,这可能会在进一步处理时产生有趣的效果。
  • 是oracle报告的常见问题,以编程方式添加),解决问题。
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多