数字签名的XFA表格

我想以编程方式签署在Adobe Livecycle(它是XFA表单)中创建的PDF文档 .

我知道用于操纵PDF的iText库,但我还没有找到任何如何签名的例子 .

也许它还没有得到支持 . 你知道其他任何Java库吗?或者你知道如何签名吗?

我知道,我的问题是similar to this opened question,但我不需要使用iText .

非常感谢您的帮助!

回答(1)

2 years ago

这是一个小例子,展示了如何使用XmlDSig进行签名:

PdfReader reader =new  PdfReader(src);
FileOutputStream os =new  FileOutputStream(dest);
PdfStamper stamper = PdfStamper.createXmlSignature(reader, os);
XmlSignatureAppearance appearance = stamper.getXmlSignatureAppearance();
appearance.setXmlLocator(new  XfaXmlLocator(stamper));
appearance.setXpathConstructor(new XfaXpathConstructor(XfaXpathConstructor.XdpPackage.Datasets));
ExternalSignature signature =new  PrivateKeySignature(pk, digestAlgorithm,"BC");
//use signXmlDSig or signXades
MakeXmlSignature.signXmlDSig(appearance, signature, chain);

您也可以使用XAdES进行签名,但之后您将无法在Adobe软件中验证签名,因为我认为Adobe不支持XAdES(如果我错了,请纠正我) .