You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Apache POI获取已签名docx文件的签名信息?

用Apache POI获取DOCX签名信息(sig1.xml内容)

你说得没错——签名后的DOCX解压后,签名信息确实存在_xmlsignatures/sig1.xml里。用Apache POI来提取这些信息其实并不复杂,下面是具体的步骤和代码示例:

核心思路

DOCX属于OOXML格式,Apache POI的org.apache.poi.openxml4j.opc包可以直接操作OOXML的包结构,我们只需要定位到_xmlsignatures/sig1.xml这个条目,然后读取它的内容即可。

具体实现步骤

  • 第一步:引入Apache POI相关依赖(如果用Maven的话)
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.5</version> <!-- 建议用最新稳定版 -->
    </dependency>
    
  • 第二步:编写代码读取sig1.xml内容
    import org.apache.poi.openxml4j.opc.OPCPackage;
    import org.apache.poi.openxml4j.opc.PackagePart;
    import java.io.InputStream;
    import java.nio.charset.StandardCharsets;
    import org.apache.commons.io.IOUtils;
    
    public class DocxSignatureReader {
        public static void main(String[] args) {
            try (OPCPackage opcPackage = OPCPackage.open("你的签名docx文件路径.docx")) {
                // 定位到sig1.xml所在的包条目
                PackagePart sigPart = opcPackage.getPartByName("/_xmlsignatures/sig1.xml");
                if (sigPart != null) {
                    // 读取输入流并转换为字符串
                    try (InputStream is = sigPart.getInputStream()) {
                        String sigXmlContent = IOUtils.toString(is, StandardCharsets.UTF_8);
                        System.out.println("sig1.xml内容:\n" + sigXmlContent);
                        // 这里可以进一步解析XML内容,比如用DOM、SAX或者JAXB
                    }
                } else {
                    System.out.println("该DOCX文件没有签名信息");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

额外说明

  • 如果需要解析XML里的具体签名字段(比如签名者、签名时间、证书信息等),可以结合Java的XML解析工具(比如javax.xml.parsers.DocumentBuilder)来处理读取到的sigXmlContent字符串。
  • 注意要确保使用的Apache POI版本是支持OOXML签名处理的,推荐使用5.x以上的稳定版本,避免兼容性问题。

内容的提问来源于stack exchange,提问作者JDChi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:07:57