在 Java 中添加数字签名或对 PDF 进行数字签署

Aspose.PDF for Java 支持通过多种签名流程 PdfFileSignature。

使用证书对象对 PDF 进行签名

  1. 创建 PdfFileSignature 对象并绑定源 PDF 文档。
  2. 创建 PKCS7 签名对象并配置签名选项。
  3. 通过以下方式对 PDF 文档应用签名 PdfFileSignature。
  4. 保存更新后的 PDF 文档。
public static void signPdfWithCertificateObject(Path inputFile, Path certificateFile, Path outputFile) {
    PdfFileSignature pdfSignature = new PdfFileSignature();
    try {
        pdfSignature.bindPdf(inputFile.toString());
        pdfSignature.sign(1, false, signatureRectangle(), createPkcs7(certificateFile, "Document approval"));
        pdfSignature.save(outputFile.toString());
    } finally {
        pdfSignature.close();
    }
}

这种方法构建了一个 PKCS7 首先是签名对象,然后将其应用于第 1 页。

使用基本证书参数对 PDF 进行签名

  1. 创建 PdfFileSignature 对象并绑定源 PDF 文档。
  2. 配置签名示例所需的证书参数。
  3. 通过以下方式对 PDF 文档应用签名 PdfFileSignature。
  4. 保存更新后的 PDF 文档。
public static void signPdfWithBasicParameters(Path inputFile, Path certificateFile, Path outputFile) {
    PdfFileSignature pdfSignature = new PdfFileSignature();
    try {
        pdfSignature.bindPdf(inputFile.toString());
        pdfSignature.setCertificate(certificateFile.toString(), CERTIFICATE_PASSWORD);
        pdfSignature.sign(1, "Document approval", "qa@example.com", "New York, USA", false, signatureRectangle());
        pdfSignature.save(outputFile.toString());
    } finally {
        pdfSignature.close();
    }
}

使用 DocMDP 对 PDF 进行认证

当您需要认证级别的限制时,请使用文档修改检测与防止签名:

  1. 创建 PdfFileSignature 对象并绑定源 PDF 文档。
  2. 创建 DocMDPSignature 对象并配置 DocMDPAccessPermissions 签名选项。
  3. 应用认证签名并保存更新后的 PDF 文档。
public static void certifyPdfWithMdpSignature(Path inputFile, Path certificateFile, Path outputFile) {
    PdfFileSignature pdfSignature = new PdfFileSignature();
    try {
        pdfSignature.bindPdf(inputFile.toString());
        DocMDPSignature signature = new DocMDPSignature(
                createPkcs7(certificateFile, "Certified for form filling and signing"),
                DocMDPAccessPermissions.FillingInForms);
        pdfSignature.certify(1, "Certified for form filling and signing", "security@example.com",
                "New York, USA", true, signatureRectangle(), signature);
        pdfSignature.save(outputFile.toString());
    } finally {
        pdfSignature.close();
    }
}