【问题标题】:Java: Signing a PDF with an existig pfx-certificateJava:使用现有 pfx 证书签署 PDF
【发布时间】:2020-03-21 22:01:18
【问题描述】:

我想我的问题很简单。我在研究中发现的所有线程的答案都很简短,听起来像“DAT SO EZ LUK HEER NAP:链接”。我尝试了这些链接,它们都是 404 。所以我将自己暴露在另一次公开处决中,并会尝试此线程百万次。

我正在使用 PDFBox 2.0.17,我正在尝试使用现有的 pfx 证书签署 PDF 文件。这几乎就是一切。通过 pdf-Creator 和其他东西打印文件,我自己得到了一些非常恶心的解决方案,但必须有一个更流畅、更好的解决方案。

我会非常感谢每一个非 404 链接,并且会接受任何形式的公开羞辱。

最好的问候, YXCD

P.S.:当然,我找到了 PDFone 和其他提供商之类的解决方案。但我正在努力做到这一点而不会让自己破产..

【问题讨论】:

  • 您看过原始 PDFBox 示例 CreateSignatureCreateVisibleSignatureCreateVisibleSignature here 吗?它们依赖于 PKCS12 文件,因此您可能必须使用在回答 this question 时解释的一种方法将您的 pfx 转换为 pkcs12。
  • 考虑克隆整个 PDFBox 示例项目并使用 maven(或 maven IDE 集成)来处理这些示例。这样您将获得正确的依赖版本。
  • 在使用 maven 开发的库时,我总是使用 maven。 IE。大多数时候。通常这样可以快速开始
  • 最好是您提及您遇到的错误。 CreateSignature 类确实存在,但它在示例子项目中。尝试下载源代码,解压缩,用你的 IDE 打开它并查看那里。理论上 CreateSignature 代码应该可以直接工作,你需要添加命令行参数。
  • 作为命令行参数,您可以使用(在 Windows 上)args = new String[]{"XXXXXXX\\PDFBox reactor\\examples\\src\\test\\resources\\org\\ apache\\pdfbox\\examples\\signature\\keystore.p12", "123456", "YOURFILE.pdf"};

标签: java pdf certificate pdfbox signature


【解决方案1】:

好的,总结一下..

我在这里的经验是 PDFBox 有一些非常精确的依赖关系,当它们稍微超出版本时会抛出异常。我通过首先重新加载整个 PDFBox-Files 然后下载每个依赖项的确切版本来解决每个问题,如 PDFBox 版本中列出的。使用较新的版本会引发异常。

最后,我采用了 CreateSignature-Example 并根据我的需要重写了它。然后一切都完美而顺利。

感谢@mkl 和@TilmanHausherr 的cmets 并给了我正确的指导。

【讨论】:

  • 一些非常精确的依赖关系,当它们稍微超出版本时会抛出异常 - 如果你有 bouncycastle 的想法,那么是的,你应该使用与你的 pdfbox 版本已经被编译了。但这不是一个 pdfbox 问题,而是一个 bouncycastle 问题,有时它们将主要的 api 更改隐藏在较小的版本更改之后。
猜你喜欢
  • 2014-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-08
  • 2018-11-30
  • 2017-05-29
  • 1970-01-01
  • 2017-11-28
相关资源
最近更新 更多