【问题标题】:'class "org.bouncycastle.asn1.ASN1Primitive"'s signer information does not match signer information of other classes in the same package' using Itext'类“org.bouncycastle.asn1.ASN1Primitive”的签名者信息与同一包中其他类的签名者信息不匹配'使用Itext
【发布时间】: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


【解决方案1】:

感谢 Bruno Lowagie cmets 和相关问题以及 mkl 提示我找到了问题。

在我的构建路径中,有两个 org.bouncycastle 库,一个是我通过 Maven 添加的 (bcprov-jdk15on.jar) 和 Pivotal TC Server 使用的另一个 (com.springsource.org.bouncycastle.jce-1.46.0.jar)。

我已删除 Pivotal TC Server bouncycastle jar错误已消失。。 p>

使用 STS 我无法删除它,所以我在文件系统上找到了它,并从 Pivotal TC 预期的文件夹中移动了它。然后,该库在 STS 处消失了。

我没有删除它以防万一,只是移动到另一个目录。如果从现在开始我在使用 Pivotal TC 时遇到问题,我会更新我的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    相关资源
    最近更新 更多