Java에서 PDF에 디지털 서명하는 방법

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF를 사용하여 Java에서 PDF에 디지털 서명하는 것은 문서 진위성을 검증하고 무단 변경을 감지하는 암호화 서명을 적용할 수 있게 해줍니다. IronPDF는 모든 PDF에 PFX 인증서 기반 서명을 첨부하고, 서명 이미지를 설정하며, PdfCertificationLevel로 PDF 인증 레벨을 제어하고, TSA 서버에 연결하여 장기 서명 유효성을 보장하는 PdfSignature를 지원합니다.

빠른 시작: Java에서 PDF에 디지털 서명하기

  1. IronPDF for Java를 Maven 또는 Gradle을 통해 설치하세요
  2. License.setLicenseKey()로 라이센스 키를 설정하세요.
  3. PdfDocument.fromFile()로 PDF를 로드하세요.
  4. PFX 인증서 파일과 비밀번호로 PdfSignature를 생성하세요.
  5. signDigitalSignature()로 서명을 적용하세요.
  6. 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"));
    }
}
JAVA

디지털 서명은 PDF 문서에 개인 키와 인증서에 연계된 암호화 신원을 부여합니다. 수신자가 Adobe Acrobat 또는 호환 뷰어에서 서명된 PDF를 열 때, 애플리케이션은 인증서 체인이 신뢰할 수 있는 권한으로 되돌아가고, 서명 이후 문서 내용이 변경되지 않았음을 검증합니다. 이러한 인증 및 무결성의 결합으로 인해 디지털 서명은 계약서, 청구서, 규제 제출물 및 무단 변조 증거가 중요한 모든 문서에 필수적입니다.

PDF 서명은 승인 서명과 작성자(인증) 서명 두 가지 범주로 나뉩니다. 승인 서명은 한 시점에 한 서명자의 승인을 기록합니다; 여러 당사자가 순서대로 승인 서명을 추가할 수 있으며, 이전 서명을 무효화하지 않습니다. certify()로 적용된 인증 서명은 문서를 PdfCertificationLevel에 따라 잠그고 서명자를 문서 저자로 표시합니다. 인증 서명은 문서의 첫 번째 서명이 되어야 하며, 이후 서명자가 허용할 수 있는 변경 사항을 제어합니다.

IronPDF는 PdfSignaturePdfDocument 주위에 구축된 일관된 API를 통해 두 가지 유형의 서명을 처리합니다. 초기 설정, 종속성 구성 및 라이선스 키 설명서는 시작 가이드 개요를 참조하세요.

시작하기 전에 무엇이 필요합니까?

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 뷰어의 서명 속성 패널에 나타나며, 규정 준수를 위한 유용한 감사 기록을 작성합니다. 암호화 서명을 내장하기 위해 로드된 PdfDocumentsignDigitalSignature(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"));
    }
}
JAVA

signDigitalSignature()가 완료되면 PDF는 문서 내용을 PFX 파일의 개인 키로 서명된 암호화 해시를 포함합니다. 이 시점 이후 파일에 수정이 가해지면 서명이 무효화됩니다.

Icon Quote related to PDF에 디지털 서명을 적용하려면 어떻게 하나요?

이 종류의 라이브러리 중 가장 좋아하는 것은 IronPDF입니다. PDF 파일을 빠르고 효율적으로 조작할 수 있습니다. 또한 PDF/A 형식으로 내보내기 및 PDF 문서의 디지털 서명과 같은 많은 유용한 기능을 가지고 있습니다.

Milan Jovanovic related to PDF에 디지털 서명을 적용하려면 어떻게 하나요?

Milan Jovanovic

마이크로소프트 MVP

사례 연구 보기
Icon Quote related to PDF에 디지털 서명을 적용하려면 어떻게 하나요?

IronOCR 덕분에 연간 $40,000를 수동 프로세싱에서 절약하고 생산성을 높이며 고부가가치 작업에 자원을 활용할 수 있습니다. 강력히 추천합니다.

Brent Matzelle related to PDF에 디지털 서명을 적용하려면 어떻게 하나요?

브렌트 마첼

최고 기술 책임자, OPYN

사례 연구 보기
Icon Quote related to PDF에 디지털 서명을 적용하려면 어떻게 하나요?

IronSuite는 우리의 운영에서 중요한 역할을 합니다. 이것들은 사업 전반에 걸쳐 효율성을 높이는 도구로, 평면도 생성 및 재고 관리 개선을 포함합니다.

David Jones related to PDF에 디지털 서명을 적용하려면 어떻게 하나요?

데이비드 존스

리드 소프트웨어 엔지니어, Agorus Build

사례 연구 보기

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"));
    }
}
JAVA

서명 이미지는 암호화 보호를 대체하지 않습니다; 그래픽 스탬프와 기본 인증서 모두 서명된 출력의 일부로 남아있습니다. 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"));
    }
}
JAVA

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/tsrhttp://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"));
    }
}
JAVA

TSA가 서명 시점에 접근할 수 없는 경우, IronPDF는 예외를 던집니다; 프로덕션에 배포하기 전에 네트워크 액세스와 TSA 엔드포인트 URL을 확인하세요. 고량 생산 워크플로를 처리할 때, 가동 시간 및 처리량 보장을 확보하기 위해 상업적인 TSA 구독을 고려하세요.

Java에서 PDF를 디지털 서명하는 다음 단계는 무엇인가요?

IronPDF의 PdfSignature 클래스는 PDF 서명 요구 사항의 전체 범위를 다룹니다: 인증 메타데이터와 함께 승인 서명, 보이는 그래픽 스탬프, 액세스 제어 수준과 함께하는 PDF 인증, TSA로 뒷받침된 타임스탬프로 장기적인 유효성을 보장합니다. 서명 외의 PDF 워크플로를 확장하려면 다음의 관련 리소스를 탐색하세요:

무료 체험을 시작하세요 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 인증서 파일이 필요합니다.

Darrius Serrant
풀스택 소프트웨어 엔지니어 (웹 운영)

다리우스 세런트는 마이애미 대학교에서 컴퓨터 과학 학사 학위를 받았으며, Iron Software에서 풀 스택 웹 운영 마케팅 엔지니어로 근무하고 있습니다. 어린 시절부터 코딩에 매료되었던 그는 컴퓨팅이 신비로우면서도 접근하기 쉬운 분야라고 생각했고, 창의력과 문제 해결 능력을 발휘하기에 완벽한 매체라고 여겼습니다.

Iron Software에서 다리우스는 새로운 것을 만들고 복잡한 개념을 단순화하여 더 쉽게 이해할 수 있도록 하는 것을 즐깁니다. 그는 사내 개발자로서 학생들을 가르치는 데에도 자원하여 차세대 인재들과 전문 지식을 공유하고 있습니다.

다리우스에게 있어 그의 일은 가치 있고 실질적인 영향을 미치기 때문에 보람 있는 일입니다.

시작할 준비 되셨나요?
버전: 2026.6 방금 출시
Still Scrolling Icon

아직도 스크롤하고 계신가요?

빠른 증거를 원하시나요?
샘플을 실행하세요 HTML이 PDF로 변환되는 것을 지켜보세요.