2 回答

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個贊
我已經(jīng)通過#63011修復(fù)了原始問題,它將在 POI 4.1.0 中發(fā)布。
票的相關(guān)部分是。
有一個新的配置屬性
SignatureConfig.setAllowMultipleSignatures(true)
允許添加簽名,默認(rèn)情況下為 false 以保持向后兼容。

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個贊
在 org.apache.poi.poifs.crypt.dsig.SignatureInfo 中,有一個方法 writeDocument(Document document) 創(chuàng)建覆蓋前一個(如果有)的 sig1.xml,這就是為什么如果你多次簽署它,你只會看到最后一個簽名,盡管在 docx/xlsx 的 _xmlsignatures/_rels/origin.sigs.rels 中,您可以看到與每個簽名的關(guān)系。
如果你更換:
sigPartName = PackagingURIHelper.createPartName("/_xmlsignatures/sig1.xml");
像這樣:
SignatureInfo si = new SignatureInfo();
si.setSignatureConfig(signatureConfig);
Iterator<?> iterator = si.getSignatureParts().iterator();
int i = 1;
while (iterator.hasNext()) {
iterator.next();
i++;
}
sigPartName = PackagingURIHelper.createPartName("/_xmlsignatures/sig" + i + ".xml");
它將創(chuàng)建 sig1.xml, sig2.xml, ... 當(dāng)打開 docx/xlsx 時,所有簽名都會在那里。
添加回答
舉報