0
我想以編程方式簽署在Adobe Livecycle(它是XFA表單)中創建的PDF文檔。XFA表單的數字簽名
我知道iText庫用於處理PDF,但我還沒有找到任何示例如何簽署它。
也許它還不支持。你知道任何其他Java庫可以做到嗎?或者你知道如何簽名的方法嗎?
我知道,我的問題是similar to this opened question,但我不需要使用iText。
非常感謝您的幫助!
我想以編程方式簽署在Adobe Livecycle(它是XFA表單)中創建的PDF文檔。XFA表單的數字簽名
我知道iText庫用於處理PDF,但我還沒有找到任何示例如何簽署它。
也許它還不支持。你知道任何其他Java庫可以做到嗎?或者你知道如何簽名的方法嗎?
我知道,我的問題是similar to this opened question,但我不需要使用iText。
非常感謝您的幫助!
這是展示如何使用簽名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(如果我錯了,請糾正我)。
親愛的布魯諾,非常感謝您的迴應!我試過了,看起來,我在這裏一半。當我在Adobe Reader中打開我的「簽名」文檔並點擊面板「簽名」時,我看到「數據簽名」和我的標誌。但也有一個項目「無符號簽名字段」 - 根[0] .containerpage [0] .footer [0] .SignatureField1 [0]和我的簽名在這裏丟失:(。我不知道,如何找到這個字段以及如何簽名我在Adobe Livecycle中創建了一個XFA表單(來自第三方)簽名後,該文檔必須與我手動輸入的文檔相同,如果有幫助,我可以將您的PDF文檔發送給您。 – Michal
嗨,我發現當程序員使用iText並調用PdfSignatureAppearance#setVisibleSignature()時,iText期望AcroForm中的這個字段。但是我的簽名字段不存在:-(。你知道任何其他方式如何設置到簽名字段的路徑? – Michal
Acrobat在簽署XFA文檔時創建了一個AcroForm字段,並且此行爲在任何地方都沒有記錄,現在,我們已經按照規範中所述實現了XML簽名,這意味着我們在技術上能夠簽署XFA以便Acrobat/Reader將簽名識別爲「XFA簽名」 o找出我們是否以及如何簽名,使簽名完全「綠色」(例如,簽字後沒有未簽字的變更),需要進一步調查。由於這超出了我們可以提供的免費支持(花費時間和資源,並且沒有規範),因此您在這裏不會得到答案。 –