이미지 및 서명 정보 추출
서명 필드에서 이미지 추출
Aspose.PDF for Java는 SignatureField 클래스를 사용하여 PDF 파일에 디지털 서명을 추가하는 기능을 지원하며, 문서에 서명할 때 SignatureAppearance에 대한 이미지를 설정할 수도 있습니다. 이제 이 API는 서명 필드와 연관된 이미지뿐만 아니라 서명 정보를 추출할 수 있는 기능도 제공합니다.
서명 정보를 추출하기 위해 우리는 SignatureField 클래스에 ExtractImage 메서드를 도입했습니다. 다음은 SignatureField 객체에서 이미지를 추출하는 단계들을 보여주는 코드 스니펫입니다:
public class ExampleExtractImageAndSignature {
private static String _dataDir = "/home/aspose/pdf-examples/Samples/Secure-Sign/";
public static void ExtractingImageFromSignatureField() {
Document pdfDocument = new Document(_dataDir + "ExtractingImage.pdf");
int i = 0;
try {
for (WidgetAnnotation field : pdfDocument.getForm()) {
SignatureField sf = (SignatureField) field;
if (sf != null) {
FileOutputStream output = new FileOutputStream(_dataDir + "im" + i + ".jpeg");
InputStream tempStream = sf.extractImage();
byte[] b = new byte[tempStream.available()];
tempStream.read(b);
output.write(b);
output.close();
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (pdfDocument != null)
pdfDocument.dispose();
}
}
서명 이미지 교체
때때로 PDF 파일 안에 이미 존재하는 서명 필드의 이미지만 교체해야 하는 요구사항이 있을 수 있습니다. 이 요구사항을 충족하기 위해서는 먼저 PDF 파일 안의 양식 필드를 검색하고, 서명 필드를 식별한 다음 서명 필드의 치수(사각형 치수)를 얻은 후 동일한 치수에 이미지를 스탬프해야 합니다.
서명 정보 추출
Aspose.PDF for Java는 SignatureField 클래스를 사용하여 PDF 파일에 디지털 서명을 할 수 있는 기능을 지원합니다. 현재 우리는 인증서의 유효성을 확인할 수 있지만 전체 인증서를 추출할 수는 없습니다. 추출할 수 있는 정보는 공개 키, 지문, 발급자 등이 있습니다.
서명 정보를 추출하기 위해 SignatureField 클래스에 ExtractCertificate 메서드를 도입했습니다. 다음은 SignatureField 객체에서 인증서를 추출하는 단계를 보여주는 코드 조각입니다:
public static void ExtractSignatureInformation() throws IOException {
String input = _dataDir + "ExtractSignatureInfo.pdf";
Document pdfDocument = new Document(input);
for (WidgetAnnotation field : pdfDocument.getForm()) {
SignatureField sf = (SignatureField) field;
if (sf != null) {
InputStream cerStream = sf.extractCertificate();
if (cerStream != null) {
byte[] buffer = new byte[cerStream.available()];
cerStream.read(buffer);
File targetFile = new File(_dataDir+"targetFile.cer");
OutputStream outStream = new FileOutputStream(targetFile);
outStream.write(buffer);
outStream.close();
}
}
}
}
}