Java에서 PDF의 서명 정보 추출
Contents
[
Hide
]
PDF 문서에 이미 존재하는 서명을 검사하고 관리하려면 PdfFileSignature를 사용하세요.
서명 정보 읽기
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();
}
}