在 Java 中从 PDF 提取签名信息
Contents
[
Hide
]
使用 PdfFileSignature 检查并管理 PDF 文档中已存在的签名。
读取签名信息
- 创建 PdfFileSignature 对象并绑定源 PDF 文档。
- 访问文档签名名称并配置示例所需的签名检查流程。
- 从 PdfFileSignature 对象读取并验证签名信息。
- 读取返回的值,或继续进行下一步处理。
public static void getSignatureInformation(Path inputFile) {
PdfFileSignature pdfSignature = new PdfFileSignature();
try {
pdfSignature.bindPdf(inputFile.toString());
SignatureName signatureName = pdfSignature.getSignatureNames().get_Item(0);
System.out.println("Signature Names: " + pdfSignature.getSignNames());
System.out.println("Signer: " + pdfSignature.getSignerName(signatureName));
System.out.println("Date: " + pdfSignature.getDateTime(signatureName));
System.out.println("Reason: " + pdfSignature.getReason(signatureName));
System.out.println("Location: " + pdfSignature.getLocation(signatureName));
} finally {
pdfSignature.close();
}
}
验证签名
- 创建 PdfFileSignature 对象并绑定源 PDF 文档。
- 访问文档签名名称并配置示例所需的验证流程。
- 从 PdfFileSignature 对象读取并验证签名信息。
public static void verifyPdfSignature(Path inputFile) {
PdfFileSignature pdfSignature = new PdfFileSignature();
try {
pdfSignature.bindPdf(inputFile.toString());
SignatureName signatureName = pdfSignature.getSignatureNames().get_Item(0);
System.out.println("Signature '" + signatureName + "' is valid: "
+ pdfSignature.verifySignature(signatureName));
System.out.println("Signature covers whole document: "
+ pdfSignature.coversWholeDocument(signatureName));
} finally {
pdfSignature.close();
}
}
提取签名证书
- 创建 PdfFileSignature 对象并绑定源 PDF 文档。
- 获取证书提取所需的文档签名名称。
- 写入提取的输出或检查返回的值 PdfFileSignature 对象。
public static void extractSignatureCertificate(Path inputFile, Path outputFile) throws Exception {
PdfFileSignature pdfSignature = new PdfFileSignature();
try {
pdfSignature.bindPdf(inputFile.toString());
SignatureName signatureName = pdfSignature.getSignatureNames().get_Item(0);
try (InputStream inputStream = pdfSignature.extractCertificate(signatureName);
OutputStream outputStream = Files.newOutputStream(outputFile)) {
inputStream.transferTo(outputStream);
}
} finally {
pdfSignature.close();
}
}