使用Java和iText为PDF添加时间戳的问题

时间:2011-04-28 09:10:00

标签: java timestamp itext

我正在编写一个应用程序,用于使用iText和Java对PDF进行签名和时间戳。 因为我们(在斯洛文尼亚)有不同的方法从我们的TSA获取时间戳(通过Web服务,使用证书和密码)我不能使用iText中的那些方法。我有一个Perl脚本。   那么..我可以如何编写代码的哪些部分,或者将时间戳和摘要(从Web服务响应中)写入PDF?

2 个答案:

答案 0 :(得分:1)

如果我完全按照您的要求进行操作,我就不会这样做,但听起来您想要调整为PDF签名报告的日期。

假设您使用PdfStamper对文档进行签名,请在创建签名后尝试

pdfStamper.getSignatureAppearence().setSignDate(calendar)

其中calendar是您使用时间戳Web服务的响应创建的Calendar实例。

让iText包含TSA信息以及签名更复杂一些。它有点超出我的知识领域,但根据我的理解,你需要使用外部生成的证书,大多数人都是使用BouncyCastle。

这个discussion有一个如何做的例子。在获取加密证书时,您最终希望使用TSAClientBouncyCastle。此page还有一个替代示例,包括OCSP信息。

如果你得到了解决方案,请添加你的解决方案,以便在stackoverflow上有更权威的答案。

答案 1 :(得分:0)

这是一个例子

http://itextpdf.sourceforge.net/howtosign.html#signtsocspjava

你必须替换

   sap.setCrypto(null, chain, null, PdfSignatureAppearance.SELF_SIGNED);

sap.setCrypto(pk, chain, null, PdfSignatureAppearance.WINCER_SIGNED);

并放置这些正确版本的库

- org.bouncycastle -> bcprov-jdk16 1.40
- org.bouncycastle -> bctsp-jdk16 1.38