【发布时间】:2017-08-30 00:57:45
【问题描述】:
我正在开发一个小工具来为 PDF 添加水印,它适用于某些 PDF,适用于某些其他的。
我正在使用 iText 库和 bouncycastle(依赖)
pom.xml:
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.6</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.49</version>
</dependency>
它在这一行(代码的第一行)崩溃:
PdfReader reader = new PdfReader(src);
使用以下 stacktrace:
Exception in thread "main" com.itextpdf.text.exceptions.InvalidPdfException: class "org.bouncycastle.asn1.ASN1Primitive"'s signer information does not match signer information of other classes in the same package
at com.itextpdf.text.pdf.PdfReader.readPdf(PdfReader.java:727)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:181)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:219)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:207)
at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:197)
... <from here it points to my code>
我做了一些 谷歌搜索,有人说问题可能是我在某处复制了这个 bouncycastle 库。
这是在使用 Maven 构建的 Spring 应用程序中。那么,这真的是图书馆的问题吗?
我正在使用 JDK 1.8。
我的尝试:
- 使用 Maven 的不同 bouncycastle 版本。
- 不同的 bouncycastle 版本(支持我的 JDK 版本)手动添加到项目中(包括 iText)。
但行为完全相同,一些 PDF 有效(总是)而另一些不(永远)。
您是否曾在使用 iText 库时遇到过类似的问题?
问题是在 PDF 文件导致代码崩溃而不是在我的项目中?
我完全被困在这里,所以任何帮助/提示将不胜感激。提前致谢。
【问题讨论】:
-
始终有效的 PDF 是那些不以任何方式使用加密的 PDF。那些不起作用的,他们需要 BouncyCastle。该错误并不是说缺少 BouncyCastle,而是说您使用的是使用一个密钥签名的 jar,以及其他未签名(最可能的原因)或使用另一个密钥签名的 jar。参见例如stackoverflow.com/questions/2877262/…
-
有时库类会添加到其他工件中。因此,可能重复的 bc 包在某个你不会怀疑的 jar 中。
-
感谢你们的帮助。当我朝着这两个方向中的任何一个方向前进时,我将进一步调查并更新。感谢 mkl 和 Bruno。
标签: java spring maven pdf itext