Java에서 PDF에 디지털 서명하는 방법
IronPDF를 사용하여 Java에서 PDF에 디지털 서명하는 것은 문서 진위성을 검증하고 무단 변경을 감지하는 암호화 서명을 적용할 수 있게 해줍니다. IronPDF는 모든 PDF에 PFX 인증서 기반 서명을 첨부하고, 서명 이미지를 설정하며, PdfCertificationLevel로 PDF 인증 레벨을 제어하고, TSA 서버에 연결하여 장기 서명 유효성을 보장하는 PdfSignature를 지원합니다.
빠른 시작: Java에서 PDF에 디지털 서명하기
- IronPDF for Java를 Maven 또는 Gradle을 통해 설치하세요
License.setLicenseKey()로 라이센스 키를 설정하세요.PdfDocument.fromFile()로 PDF를 로드하세요.- PFX 인증서 파일과 비밀번호로
PdfSignature를 생성하세요. signDigitalSignature()로 서명을 적용하세요.saveAs()로 서명된 PDF를 저장하세요.
:title=Quickstart
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/how-to-digitally-sign-pdfs-java-tutorial/quickstart.java
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.signature.PdfSignature;
public class Main {
public static void main(String[] args) throws IOException {
// Set the IronPDF license key
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load an existing PDF document
PdfDocument pdf = PdfDocument.fromFile(Path.of("document.pdf"));
// Create a PdfSignature using a PFX certificate file and its password
PdfSignature signature = new PdfSignature("certificate.pfx", "password123");
// Set signature metadata for audit trails
signature.setSigningContact("John Smith");
signature.setSigningLocation("New York");
signature.setSigningReason("Document Approval");
// Apply the digital signature to the PDF
pdf.signDigitalSignature(signature);
// Save the signed PDF to a new file
pdf.saveAs(Path.of("signed.pdf"));
}
}
:title=Quickstart
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/how-to-digitally-sign-pdfs-java-tutorial/quickstart.java
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.signature.PdfSignature;
public class Main {
public static void main(String[] args) throws IOException {
// Set the IronPDF license key
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load an existing PDF document
PdfDocument pdf = PdfDocument.fromFile(Path.of("document.pdf"));
// Create a PdfSignature using a PFX certificate file and its password
PdfSignature signature = new PdfSignature("certificate.pfx", "password123");
// Set signature metadata for audit trails
signature.setSigningContact("John Smith");
signature.setSigningLocation("New York");
signature.setSigningReason("Document Approval");
// Apply the digital signature to the PDF
pdf.signDigitalSignature(signature);
// Save the signed PDF to a new file
pdf.saveAs(Path.of("signed.pdf"));
}
}
디지털 서명은 PDF 문서에 개인 키와 인증서에 연계된 암호화 신원을 부여합니다. 수신자가 Adobe Acrobat 또는 호환 뷰어에서 서명된 PDF를 열 때, 애플리케이션은 인증서 체인이 신뢰할 수 있는 권한으로 되돌아가고, 서명 이후 문서 내용이 변경되지 않았음을 검증합니다. 이러한 인증 및 무결성의 결합으로 인해 디지털 서명은 계약서, 청구서, 규제 제출물 및 무단 변조 증거가 중요한 모든 문서에 필수적입니다.
PDF 서명은 승인 서명과 작성자(인증) 서명 두 가지 범주로 나뉩니다. 승인 서명은 한 시점에 한 서명자의 승인을 기록합니다; 여러 당사자가 순서대로 승인 서명을 추가할 수 있으며, 이전 서명을 무효화하지 않습니다. certify()로 적용된 인증 서명은 문서를 PdfCertificationLevel에 따라 잠그고 서명자를 문서 저자로 표시합니다. 인증 서명은 문서의 첫 번째 서명이 되어야 하며, 이후 서명자가 허용할 수 있는 변경 사항을 제어합니다.
IronPDF는 PdfSignature와 PdfDocument 주위에 구축된 일관된 API를 통해 두 가지 유형의 서명을 처리합니다. 초기 설정, 종속성 구성 및 라이선스 키 설명서는 시작 가이드 개요를 참조하세요.
Java에서 PDF에 디지털 서명하는 방법
- 디지털 서명을 위한 IronPDF Java 라이브러리 설치
- PdfDocument 클래스를 사용하여 PDF를 로드합니다
- PFX 인증서 파일과 비밀번호를 사용하여 PdfSignature를 생성합니다
- 선택적으로
setSignatureImage로 가시적 서명 이미지를 설정합니다 signDigitalSignature로 서명을 적용합니다certify와PdfCertificationLevel로 PDF를 인증합니다saveAs로 서명된 PDF를 저장합니다
시작하기 전에 무엇이 필요합니까?
IronPDF를 사용하여 PDF에 서명하기 전에 다음 필수 조건을 확인하세요:
- Java 8 이상: IronPDF는 버전 8 이상의 JDK가 필요합니다.
- IronPDF for Java: 종속성을 빌드 파일에 추가합니다. 최신 버전은 Maven Central에서 확인하세요.
- 유효한 라이센스 키:
License.setLicenseKey()로 애플리케이션 시작 시 키를 설정하세요. 설정 세부정보는 라이선스 키 설명서를 참조하세요. - PFX 또는 P12 인증서 파일: 이는 PKCS#12 형식의 개인 키와 공개 인증서를 포함하는 비밀번호로 보호된 아카이브입니다. 자체 서명 인증서는 개발 및 테스트에 적합합니다; 외부 수신자가 신뢰해야 하는 프로덕션 문서의 경우 DigiCert, Comodo, GlobalSign과 같은 인정된 인증 기관(CA)이 발급한 인증서를 사용하세요.
전체 종속성 설정 및 프로젝트 구성은 시작 가이드 개요를 참조하세요.
PDF에 디지털 서명을 적용하려면 어떻게 하나요?
PdfSignature 생성자는 PFX 인증서의 파일 경로와 비밀번호를 받습니다. 생성된 후 세 가지 setter 메서드를 통해 선택적 메타데이터를 첨부할 수 있습니다:
setSigningContact(String): 서명자의 이름이나 이메일setSigningLocation(String): 서명자의 물리적 또는 조직적 위치setSigningReason(String): 문서가 서명되는 이유에 대한 짧은 설명
이 필드는 PDF 뷰어의 서명 속성 패널에 나타나며, 규정 준수를 위한 유용한 감사 기록을 작성합니다. 암호화 서명을 내장하기 위해 로드된 PdfDocument에 signDigitalSignature(PdfSignature)를 호출한 후 saveAs()로 결과를 저장하세요.
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/how-to-digitally-sign-pdfs-java-tutorial/apply-signature.java
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.signature.PdfSignature;
public class Main {
public static void main(String[] args) throws IOException {
// Set the IronPDF license key
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load the PDF to sign
PdfDocument pdf = PdfDocument.fromFile(Path.of("contract.pdf"));
// Construct the PdfSignature with the certificate path and password
PdfSignature signature = new PdfSignature("certificate.pfx", "password123");
// Set metadata that will appear in the signature properties panel
signature.setSigningContact("Jane Doe");
signature.setSigningLocation("Austin, TX");
signature.setSigningReason("Contract Approval");
// Embed the digital signature in the PDF
pdf.signDigitalSignature(signature);
// Save the signed document
pdf.saveAs(Path.of("contract-signed.pdf"));
}
}
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/how-to-digitally-sign-pdfs-java-tutorial/apply-signature.java
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.signature.PdfSignature;
public class Main {
public static void main(String[] args) throws IOException {
// Set the IronPDF license key
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load the PDF to sign
PdfDocument pdf = PdfDocument.fromFile(Path.of("contract.pdf"));
// Construct the PdfSignature with the certificate path and password
PdfSignature signature = new PdfSignature("certificate.pfx", "password123");
// Set metadata that will appear in the signature properties panel
signature.setSigningContact("Jane Doe");
signature.setSigningLocation("Austin, TX");
signature.setSigningReason("Contract Approval");
// Embed the digital signature in the PDF
pdf.signDigitalSignature(signature);
// Save the signed document
pdf.saveAs(Path.of("contract-signed.pdf"));
}
}
signDigitalSignature()가 완료되면 PDF는 문서 내용을 PFX 파일의 개인 키로 서명된 암호화 해시를 포함합니다. 이 시점 이후 파일에 수정이 가해지면 서명이 무효화됩니다.
PDF에 가시적 서명 이미지를 추가하려면 어떻게 하나요?
가시적 서명 이미지는 서명 필드의 위치에서 PDF 페이지에 그래픽 표현을 직접 배치합니다. 이는 스캔된 손글씨 서명, 회사 스탬프, 로고를 표시하여, PDF 리더의 서명 패널로 검사할 때뿐만 아니라 인쇄하거나 볼 때 문서에 서명이 있는 것처럼 보일 수 있도록 자주 사용됩니다.
보이는 이미지를 추가하려면 이미지 파일을 FileInputStream로 열고, PdfSignature.setSignatureImage(InputStream)에 전달한 후 signDigitalSignature()를 호출하세요. 이미지는 페이지의 서명 필드 내에 임베드됩니다.
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/how-to-digitally-sign-pdfs-java-tutorial/visible-signature-image.java
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.signature.PdfSignature;
public class Main {
public static void main(String[] args) throws IOException {
// Set the IronPDF license key
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load the PDF document to sign
PdfDocument pdf = PdfDocument.fromFile(Path.of("agreement.pdf"));
// Build the PdfSignature from a PFX certificate
PdfSignature signature = new PdfSignature("certificate.pfx", "password123");
// Set signing metadata
signature.setSigningContact("Alice Johnson");
signature.setSigningLocation("Chicago, IL");
signature.setSigningReason("Agreement Authorization");
// Open the signature image file and attach it to the signature
FileInputStream imageStream = new FileInputStream("signature.png");
signature.setSignatureImage(imageStream);
// Apply the digital signature with the visible image to the PDF
pdf.signDigitalSignature(signature);
// Save the signed PDF with the visible signature image embedded
pdf.saveAs(Path.of("agreement-signed.pdf"));
}
}
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/how-to-digitally-sign-pdfs-java-tutorial/visible-signature-image.java
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.signature.PdfSignature;
public class Main {
public static void main(String[] args) throws IOException {
// Set the IronPDF license key
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load the PDF document to sign
PdfDocument pdf = PdfDocument.fromFile(Path.of("agreement.pdf"));
// Build the PdfSignature from a PFX certificate
PdfSignature signature = new PdfSignature("certificate.pfx", "password123");
// Set signing metadata
signature.setSigningContact("Alice Johnson");
signature.setSigningLocation("Chicago, IL");
signature.setSigningReason("Agreement Authorization");
// Open the signature image file and attach it to the signature
FileInputStream imageStream = new FileInputStream("signature.png");
signature.setSignatureImage(imageStream);
// Apply the digital signature with the visible image to the PDF
pdf.signDigitalSignature(signature);
// Save the signed PDF with the visible signature image embedded
pdf.saveAs(Path.of("agreement-signed.pdf"));
}
}
서명 이미지는 암호화 보호를 대체하지 않습니다; 그래픽 스탬프와 기본 인증서 모두 서명된 출력의 일부로 남아있습니다. PNG 및 JPEG 형식이 서명 이미지에 대해 지원됩니다.
특정 권한 수준으로 PDF를 인증하려면 어떻게 하나요?
PDF를 인증하는 것은 승인 서명을 추가하는 것과 다릅니다. pdf.certify(PdfSignature, PdfCertificationLevel)를 호출하면 문서 작성자로서 서명하고, 이후 사용자가 허용할 변경 유형을 지정합니다. 인증된 PDF는 Adobe Acrobat에서 파란 리본 또는 유사한 신뢰 표시기를 표시하여 수신자에게 문서가 확인된 출처에서 전달되었음을 알립니다.
IronPDF는 PdfCertificationLevel 열거형을 통해 세 가지 인증 레벨을 제공합니다:
PdfCertificationLevel.NO_CHANGES_ALLOWED: 문서가 인증 후 완전히 잠깁니다. 더 이상의 수정을 허용하지 않습니다.PdfCertificationLevel.FORM_FILLING: 수신자는 양식 필드를 채울 수 있지만, 주석, 주해 또는 기타 변경은 추가할 수 없습니다.PdfCertificationLevel.FORM_FILLING_AND_ANNOTATIONS: 수신자는 양식 필드를 채우고 주 주해를 추가할 수 있지만, 구조적 변경은 여전히 금지됩니다.
인증 서명은 문서의 첫 번째 서명이 되어야 하므로, 다른 당사자의 승인을 받기 전에 certify()를 호출하세요.
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/how-to-digitally-sign-pdfs-java-tutorial/certify-pdf.java
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.signature.PdfCertificationLevel;
import com.ironsoftware.ironpdf.signature.PdfSignature;
public class Main {
public static void main(String[] args) throws IOException {
// Set the IronPDF license key
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load the PDF that will be certified
PdfDocument pdf = PdfDocument.fromFile(Path.of("report.pdf"));
// Create the PdfSignature from the author's certificate
PdfSignature signature = new PdfSignature("author-certificate.pfx", "password123");
// Set author metadata for the certification signature
signature.setSigningContact("Legal Department");
signature.setSigningLocation("San Francisco, CA");
signature.setSigningReason("Official Publication");
// Certify the document with NO_CHANGES_ALLOWED to lock it completely
// Use FORM_FILLING to allow form field input after certification
// Use FORM_FILLING_AND_ANNOTATIONS to also permit annotations
pdf.certify(signature, PdfCertificationLevel.NO_CHANGES_ALLOWED);
// Save the certified PDF
pdf.saveAs(Path.of("report-certified.pdf"));
}
}
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/how-to-digitally-sign-pdfs-java-tutorial/certify-pdf.java
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.signature.PdfCertificationLevel;
import com.ironsoftware.ironpdf.signature.PdfSignature;
public class Main {
public static void main(String[] args) throws IOException {
// Set the IronPDF license key
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load the PDF that will be certified
PdfDocument pdf = PdfDocument.fromFile(Path.of("report.pdf"));
// Create the PdfSignature from the author's certificate
PdfSignature signature = new PdfSignature("author-certificate.pfx", "password123");
// Set author metadata for the certification signature
signature.setSigningContact("Legal Department");
signature.setSigningLocation("San Francisco, CA");
signature.setSigningReason("Official Publication");
// Certify the document with NO_CHANGES_ALLOWED to lock it completely
// Use FORM_FILLING to allow form field input after certification
// Use FORM_FILLING_AND_ANNOTATIONS to also permit annotations
pdf.certify(signature, PdfCertificationLevel.NO_CHANGES_ALLOWED);
// Save the certified PDF
pdf.saveAs(Path.of("report-certified.pdf"));
}
}
NO_CHANGES_ALLOWED로 인증된 후, PDF를 수정하려는 모든 시도는 인증 서명을 깨뜨리며 PDF 뷰어는 경고를 표시할 것입니다. 인증된 문서를 하류 수신자가 작성하거나 주석을 추가해야 할 때, 작성자의 인증을 무효화하지 않으려면 FORM_FILLING 또는 FORM_FILLING_AND_ANNOTATIONS를 선택하세요.
디지털 서명에 타임스탬프를 추가하려면 어떻게 하나요?
타임스탬프 권한 기관(TSA) 서버는 PDF의 서명 옆에 포함되는 암호화 서명된 시간 토큰을 제공합니다. 이 타임스탬프는 서명이 적용된 시점을 서명자의 로컬 시계와 독립적으로 증명합니다. 장기 유효성은 타임스탬프에 의존합니다: 서명 인증서가 만료된 후에도 신뢰할 수 있는 타임스탬프를 사용하면 검증자가 서명이 인증서가 여전히 유효할 때 만들어졌음을 확인할 수 있습니다.
타임스탬프를 활성화하려면 서명 전에 PdfSignature 객체에 두 가지 속성을 설정하세요.
setTimestampHashAlgorithm(PdfHashAlgorithm): 타임스탬프 토큰을 계산할 때 사용할 해싱 알고리즘을 지정합니다.PdfHashAlgorithm.SHA256는 표준 선택입니다.setTimestampUrl(String): 타임스탬프 토큰을 발급할 TSA 서버의 HTTP 또는 HTTPS 엔드포인트.
여러 TSA 서버가 테스트 및 저량 생산 사용을 위해 무료로 제공됩니다. https://freetsa.org/tsr와 http://timestamp.digicert.com는 일반적으로 사용되는 두 엔드포인트입니다.
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/how-to-digitally-sign-pdfs-java-tutorial/timestamp-signature.java
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.signature.PdfHashAlgorithm;
import com.ironsoftware.ironpdf.signature.PdfSignature;
public class Main {
public static void main(String[] args) throws IOException {
// Set the IronPDF license key
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load the PDF to sign with a timestamp
PdfDocument pdf = PdfDocument.fromFile(Path.of("invoice.pdf"));
// Construct the PdfSignature from the certificate file
PdfSignature signature = new PdfSignature("certificate.pfx", "password123");
// Set signature metadata
signature.setSigningContact("Finance Team");
signature.setSigningLocation("Seattle, WA");
signature.setSigningReason("Invoice Authorization");
// Configure the timestamp: set the hash algorithm and TSA endpoint
signature.setTimestampHashAlgorithm(PdfHashAlgorithm.SHA256);
signature.setTimestampUrl("https://freetsa.org/tsr");
// Apply the digital signature; IronPDF will contact the TSA to obtain
// and embed a timestamp token alongside the cryptographic signature
pdf.signDigitalSignature(signature);
// Save the timestamped, signed PDF
pdf.saveAs(Path.of("invoice-signed-timestamped.pdf"));
}
}
//:path=/static-assets/ironpdf-java/content-code-examples/how-to/how-to-digitally-sign-pdfs-java-tutorial/timestamp-signature.java
import java.io.IOException;
import java.nio.file.Path;
import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.signature.PdfHashAlgorithm;
import com.ironsoftware.ironpdf.signature.PdfSignature;
public class Main {
public static void main(String[] args) throws IOException {
// Set the IronPDF license key
License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");
// Load the PDF to sign with a timestamp
PdfDocument pdf = PdfDocument.fromFile(Path.of("invoice.pdf"));
// Construct the PdfSignature from the certificate file
PdfSignature signature = new PdfSignature("certificate.pfx", "password123");
// Set signature metadata
signature.setSigningContact("Finance Team");
signature.setSigningLocation("Seattle, WA");
signature.setSigningReason("Invoice Authorization");
// Configure the timestamp: set the hash algorithm and TSA endpoint
signature.setTimestampHashAlgorithm(PdfHashAlgorithm.SHA256);
signature.setTimestampUrl("https://freetsa.org/tsr");
// Apply the digital signature; IronPDF will contact the TSA to obtain
// and embed a timestamp token alongside the cryptographic signature
pdf.signDigitalSignature(signature);
// Save the timestamped, signed PDF
pdf.saveAs(Path.of("invoice-signed-timestamped.pdf"));
}
}
TSA가 서명 시점에 접근할 수 없는 경우, IronPDF는 예외를 던집니다; 프로덕션에 배포하기 전에 네트워크 액세스와 TSA 엔드포인트 URL을 확인하세요. 고량 생산 워크플로를 처리할 때, 가동 시간 및 처리량 보장을 확보하기 위해 상업적인 TSA 구독을 고려하세요.
Java에서 PDF를 디지털 서명하는 다음 단계는 무엇인가요?
IronPDF의 PdfSignature 클래스는 PDF 서명 요구 사항의 전체 범위를 다룹니다: 인증 메타데이터와 함께 승인 서명, 보이는 그래픽 스탬프, 액세스 제어 수준과 함께하는 PDF 인증, TSA로 뒷받침된 타임스탬프로 장기적인 유효성을 보장합니다. 서명 외의 PDF 워크플로를 확장하려면 다음의 관련 리소스를 탐색하세요:
- Java에서 PDF Formular 만들기: PDF가 인증된 후 작성할 수 있는 양식 필드를 만듭니다.
- Java에서 PDF Formular 채우기: 기존 PDF 문서에서 양식 필드를 프로그래밍적으로 채웁니다.
- Java에서 PDF에 주석 추가하기: 특정 페이지 위치에 댓글, 강조 표시 및 주석을 첨부합니다.
- Java에서 PDF 병합하기: 단일 인증 서명을 적용하기 전에 여러 문서를 결합합니다.
- IronPDF for Java 예제: 전체 IronPDF Java API를 포괄하는 코드 샘플을 복사하여 붙여넣습니다.
무료 체험을 시작하세요 Java PDF 워크플로에 디지털 서명을 추가하세요. 프로덕션 사용을 위한 라이선스를 구매하려면, 라이선스 옵션 보기.
자주 묻는 질문
Java에서 IronPDF로 PDF를 디지털 서명하는 방법은?
PDF를 PdfDocument.fromFile()로 불러온 뒤, PFX 인증서 파일 경로와 비밀번호를 사용하여 PdfSignature를 생성합니다. setSigningContact(), setSigningLocation(), setSigningReason()로 메타데이터를 옵션으로 설정한 후, pdf.signDigitalSignature(signature)를 호출하고 pdf.saveAs()로 저장합니다.
IronPDF에서 signDigitalSignature()와 certify()의 차이점은 무엇인가요?
signDigitalSignature()는 한 명의 서명자의 승인을 기록하는 승인 서명을 추가합니다. 여러 승인 서명을 순차적으로 추가할 수 있습니다. certify()는 문서의 첫 번째로 있어야 하는 저자 서명을 추가하며, 후속 서명자가 할 수 있는 변경을 제어하는 PdfCertificationLevel을 설정합니다.
Java에서 서명된 PDF에 시각적 서명 이미지를 추가하는 방법은?
FileInputStream으로 이미지 파일을 열고 signature.setSignatureImage(imageStream)에 전달한 다음 signDigitalSignature()를 호출합니다. 이미지는 페이지에 있는 암호화 서명과 함께 서명 필드에 포함됩니다.
IronPDF는 어떤 PDF 인증 수준을 지원하나요?
IronPDF는 PdfCertificationLevel 열거형을 통해 세 가지 수준을 지원합니다: NO_CHANGES_ALLOWED는 문서를 완전히 잠그고, FORM_FILLING은 폼 필드 입력만 허용하며, FORM_FILLING_AND_ANNOTATIONS는 구조적 수정 없이 폼 필드 및 주석을 허용합니다.
Java에서 디지털 서명에 타임스탬프를 추가하는 방법은?
signDigitalSignature()를 호출하기 전에 signature.setTimestampHashAlgorithm(PdfHashAlgorithm.SHA256)과 signature.setTimestampUrl("https://freetsa.org/tsr")을 PdfSignature에 설정하세요. IronPDF는 TSA 서버에 접속하여 서명된 PDF에 타임스탬프 토큰을 포함시킵니다.
PDF 서명에 필요한 인증서 파일 형식은 무엇인가요?
IronPDF는 비공개 키와 공개 인증서를 포함하는 PKCS#12 아카이브, PFX 또는 P12 인증서 파일이 필요합니다. 개발 시에는 자체 서명한 인증서를 사용할 수 있으며, 상용 환경에서는 DigiCert나 GlobalSign과 같은 신뢰할 수 있는 인증 기관에서 인증서를 얻어야 합니다.
Java에서 IronPDF를 사용하여 PDF를 디지털 서명하기 위한 사전 조건은 무엇인가요?
Java 8 이상, Maven 또는 Gradle을 통해 추가된 IronPDF 의존성, License.setLicenseKey()로 설정된 유효한 라이선스 키, 비밀번호가 있는 PFX 또는 P12 인증서 파일이 필요합니다.


