iText与PDF 1.6的兼容性

时间:2018-09-20 12:16:49

标签: itext

我发现如果尝试使用iText(版本5.1.1)打开现有的1.6 PDF,则会出错。如果我将相同的PDF转换为1.5,就可以阅读。

我试图找出由于处理了哪个版本的iText PDF 1.6而无法找到信息。 任何想法? 谢谢!

编辑:这里是堆栈:

Caused by: java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1OctetString
    at com.itextpdf.text.pdf.PdfEncryption.<init>(PdfEncryption.java:147)
    at com.itextpdf.text.pdf.PdfReader.readDecryptedDocObj(PdfReader.java:775)
    at com.itextpdf.text.pdf.PdfReader.readDocObj(PdfReader.java:1152)
    at com.itextpdf.text.pdf.PdfReader.readPdf(PdfReader.java:512)
    at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:172)

执行行时发生错误:

final PdfReader reader = new PdfReader(file.getAbsolutePath());

1 个答案:

答案 0 :(得分:1)

您的问题具有误导性,因为您提出了错误的指控。您声称您使用的iText版本不支持PDF 1.6。

但是,您在问题的编辑版本中添加的错误消息显示了真正的原因:

Caused by: java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1OctetString

我在Acrobat Reader中打开了您在注释中共享的PDF,这就是我所看到的:

enter image description here

您可以清楚地阅读:

  

文档的安全性方法限制了可以对文档执行的操作。要删除安全限制,请将“安全方法”设置为“无安全性”。

这正是您将符合PDF 1.6的原始PDF转换为符合PDF 1.5的文档时所做的。如果您删除了安全限制并将文件保留为PDF 1.6文档,则不会发生此问题。

这样说。您无需删除安全限制。您可以通过向java.lang.NoClassDefFoundError添加正确版本的BouncyCastle库来解决CLASSPATH。您可能需要按照以下说明将unethicalreading变量更改为trueHow to read PDFs created with an unknown random owner password?