Java 获取PDF文档中的数字签名信息

2025-10-29 20:12:23

1、两种导入方法,任选其一即可:

1. 手动导入jar:在eiceblue中文官网下载Spire.PDF for Java的包,解压到指定路径,将lib文件夹里的spire.pdf.jar文件手动导入java程序。

2. maven仓库导入:需要配置pom.xml文件,指定maven仓库路径及spire.pdf.jar的依赖,如下:

<repositories>

        <repository>

            <id>com.e-iceblue</id>

            <url>http://repo.e-iceblue.cn/repository/maven-public/</url>

        </repository>

</repositories>

<dependencies>

    <dependency>

        <groupId> e-iceblue </groupId>

        <artifactId>spire.pdf</artifactId>

        <version>3.11.6</version>

    </dependency>

</dependencies>

完成配置后,导入jar。

2、jar文件导入效果:

Java 获取PDF文档中的数字签名信息

1、import com.spire.pdf.*;


import com.spire.pdf.security.PdfSignature;
import com.spire.pdf.widget.PdfFormFieldWidgetCollection;
import com.spire.pdf.widget.PdfFormWidget;
import com.spire.pdf.widget.PdfSignatureFieldWidget;


public class GetSignature {
   public static void main(String[] args) {
       //创建PdfDocument实例
       PdfDocument pdf = new PdfDocument();
       //加载含有签名的PDF文件
       pdf.loadFromFile("AddSignature.pdf");


       //获取域集合
       PdfFormWidget pdfFormWidget = (PdfFormWidget) pdf.getForm();
       PdfFormFieldWidgetCollection pdfFormFieldWidgetCollection = pdfFormWidget.getFieldsWidget();


       //遍历域
       for (int i = 0; i < pdfFormFieldWidgetCollection.getCount(); i++) {
           //判定是否为签名域
           if (pdfFormFieldWidgetCollection.get(i) instanceof PdfSignatureFieldWidget) {
               //获取签名域
               PdfSignatureFieldWidget signatureFieldWidget = (PdfSignatureFieldWidget) pdfFormFieldWidgetCollection.get(i);
               //获取签名
               PdfSignature signature = signatureFieldWidget.getSignature();
               String location = signature.getLocationInfo();
               String reason = signature.getReason();
               String data = signature.getDate().toString();
               String name = signature.getSignatureName();


               System.out.println("签名位置信息:"+ location +"\n"+
                       "签名原因:" + reason +"\n"+
                       "签名日期:"+ data +"\n"+
                       "签名人:"+ name +"\n"+
                       "文档中的签名坐标:X = "+ signatureFieldWidget.getLocation().getX()+ "  Y = "+ signatureFieldWidget.getLocation().getY()
                      );
           }
       }
   }
}

2、签名信息获取结果:

Java 获取PDF文档中的数字签名信息

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢