Java PDF数字签名(一) - 添加数字签名

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/Eiceblue/article/details/83381031

这篇文章将介绍如何在Java应用程序中给PDF文档添加数字签名。

使用工具:

Free Spire.PDF for JAVA

步骤:

1.创建一个Java project,并添加一个class SignPDF.JAVA

2.下载Free Spire.PDF for JAVA并解压缩,然后从lib文件夹下,导入Spire.Pdf.jar包和Spire.Common.jar包到程序中

3.SignPDF.JAVA中添加代码:

import com.spire.ms.System.DateTime;
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImage;
import com.spire.pdf.security.GraphicMode;
import com.spire.pdf.security.PdfCertificate;
import com.spire.pdf.security.PdfCertificationFlags;
import com.spire.pdf.security.PdfSignature;
import java.awt.geom.Rectangle2D;

public class SignPDF {
    public static void main(String[] args){
        //加载PDF文档并获取第一页
        PdfDocument doc = new PdfDocument();
        doc.loadFromFile("Input.pdf");
        PdfPageBase page = doc.getPages().get(0);

        Rectangle2D.Float rec = new Rectangle2D.Float(100, 450, 310, 100);

        //Load pfx文件
        PdfCertificate certificate = new PdfCertificate("gary.pfx", "e-iceblue");

        //添加数字签名
        PdfSignature signature = new PdfSignature(doc, page, certificate, "signature1", rec);

        //设置签名详细信息
        PdfImage img = PdfImage.fromFile("E-iceblueLogo.png");
        signature.setSignImageSource(img);
        signature.setNameLabel("Signer:  ");
        signature.setName("Gary");
        signature.setContactInfoLabel("ContactInfo:  ");
        signature.setContactInfo("[email protected]");
        signature.setDateLabel("Date:  ");
        signature.setDate(DateTime.getToday());
        signature.setLocationInfoLabel("Location:  ");
        signature.setLocationInfo("Chengdu");
        signature.setReasonLabel("Reason:  ");
        signature.setReason("The certificate of this document.");
        signature.setDistinguishedNameLabel("DL:  ");
        signature.setDistinguishedName(signature.getCertificate().get_IssuerName().getName());
        signature.setGraphicMode(GraphicMode.Sign_Image_And_Sign_Detail);
        signature.setDocumentPermissions(PdfCertificationFlags.Allow_Form_Fill);
        signature.setCertificated(true);

        //保存文件
        doc.saveToFile("SimpleSign.pdf", FileFormat.PDF);
    }
}

结果文件:

 

猜你喜欢

转载自blog.csdn.net/Eiceblue/article/details/83381031