2 回答
TA贡献1860条经验 获得超9个赞
我已经通过#63011修复了原始问题,它将在 POI 4.1.0 中发布。
票的相关部分是。
有一个新的配置属性
SignatureConfig.setAllowMultipleSignatures(true)
允许添加签名,默认情况下为 false 以保持向后兼容。
TA贡献1155条经验 获得超0个赞
在 org.apache.poi.poifs.crypt.dsig.SignatureInfo 中,有一个方法 writeDocument(Document document) 创建覆盖前一个(如果有)的 sig1.xml,这就是为什么如果你多次签署它,你只会看到最后一个签名,尽管在 docx/xlsx 的 _xmlsignatures/_rels/origin.sigs.rels 中,您可以看到与每个签名的关系。
如果你更换:
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");
它将创建 sig1.xml, sig2.xml, ... 当打开 docx/xlsx 时,所有签名都会在那里。
添加回答
举报