IRONSOFTWAREHOME

JavaでPDFをデジタル署名する方法

Curtis Chau
Curtis Chau
Updated: 2026年6月16日

IronPDFを使用してJavaでPDFにデジタル署名することにより、ドキュメントの正当性を確認し、無許可の変更を検出する暗号署名を適用できます。 IronPDF は、PFX証明書ベースの署名を任意のPDFに添付し、可視の署名画像を設定し、PdfCertificationLevel でPDF認証レベルを制御し、長期署名の有効性のためにタイムスタンプ認証局サーバーに接続する PdfSignature をサポートしています。

クイックスタート: JavaでPDFにデジタル署名する
  1. MavenまたはGradleを介してJava用のIronPDFをインストールする
  2. License.setLicenseKey() でライセンスキーを設定します
  3. PdfDocument.fromFile() でPDFをロードします
  4. PFX証明書ファイルとパスワードでPdfSignature を作成します
  5. signDigitalSignature() で署名を適用します
  6. saveAs() で署名済みのPDFを保存します
  1. 1Install IronPDF with Maven Central Repository

    > mvn install

  2. 2このコード スニペットをコピーして実行します。

    //: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
  3. 3実際の環境でテストするためにデプロイする

    今日プロジェクトで IronPDF を使い始めましょう無料トライアル
    arrow pointer

デジタル署名は、PDFドキュメントにプライベートキーと証明書に関連付けられた暗号化関連を提供します。 受取人がAdobe Acrobatやその他の適合ビューアで署名済みPDFを開くと、アプリケーションは証明書チェーンが信頼された認証局に遡ることを確認し、署名後にドキュメントの内容が変更されていないことを検証します。 この認証と整合性の組み合わせにより、契約書、請求書、規制書類、改ざん証拠が問題となる任意の文書にとってデジタル署名は不可欠です。

PDF署名には、承認署名とオーサー(認定)署名の2種類があります。 承認署名は、ある時点での署名者の承認を記録します。複数の当事者が連続して承認署名を追加しても、以前の署名が無効になることはありません。 certify() で適用された認証署名は、PdfCertificationLevel に応じてドキュメントをロックし、署名者をドキュメントの著者としてマークします。 認定署名は、ドキュメントの最初の署名である必要があり、その後の署名者が行える変更(許される場合)は制御されます。

IronPDF は、一貫した PdfSignature と PdfDocument に基づいた API を介して、両方の署名タイプを処理します。 初期セットアップ、依存関係の構成、およびライセンスキーの指示については、スタートアップ概要を参照してください。

始める前に何が必要ですか?

IronPDFによるPDF署名を行う前に次の前提条件を確認してください:

  • Java 8以降:IronPDFはJDK8以上のバージョンを必要とします。
  • IronPDF for Java:依存関係をビルドファイルに追加してください。最新バージョンはMaven Centralで確認できます。
  • 有効なライセンスキー: License.setLicenseKey() を使用してアプリケーションの起動時にキーを設定します。 設定の詳細については、ライセンスキーガイドをご覧ください。
  • PFX または P12 証明書ファイル:これはプライベートキーと公開証明書をPKCS#12形式で含むパスワード保護されたアーカイブです。 自己署名証明書は開発およびテストに適しています; 本番ドキュメントで外部受取人に信頼される必要がある場合、DigiCert、Comodo、GlobalSignなどの認定機関によって発行された証明書を使用してください。

完全な依存関係のセットアップとプロジェクト構成についてはスタートアップ概要を参照してください。

PDFにデジタル署名を適用する方法は?

PdfSignature コンストラクタは、PFX証明書のファイルパスとそのパスワードを取ります。 一度構築されたら、3つのセッターメソッドを使用してオプションのメタデータを添付できます:

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

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

署名画像は暗号保護を置き換えはしません; グラフィカルなスタンプと基礎となる証明書は署名済みの出力の一部として残ります。 署名画像にはPNGとJPEGフォーマットがサポートされています。

特定の許可レベルでPDFを認定する方法は?

PDFを認定することは、承認署名の追加とは異なります。 pdf.certify(PdfSignature, PdfCertificationLevel) を呼び出すとき、ドキュメントの著者として署名し、後続のユーザーによる許可される変更の種類を指定します。 認定されたPDFは、Adobe Acrobatで青いリボンまたは類似の信頼指標を表示し、受取人にそのドキュメントが確認されたソースから来ていることを知らせます。

IronPDF は、PdfCertificationLevel enum を通じて 3つの認証レベルを提供します:

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

NO_CHANGES_ALLOWED で認証されると、PDFを変更しようとすると認証署名が壊れ、PDFビューアが警告を表示します。 認定されたドキュメントが後続の受領者によって記入または注釈が必要な場合は、FORM_FILLING または FORM_FILLING_AND_ANNOTATIONS を選択します。

デジタル署名にタイムスタンプを追加する方法は?

タイムスタンプ機関(TSA)サーバーは、PDFに署名と共に埋め込まれる暗号署名の時刻トークンを提供します。 このタイムスタンプは、署名者のローカルクロックとは無関係に署名が適用された時刻を証明します。 長期的な有効性はタイムスタンプに依存します:署名証明書が期限切れになった後でも、信頼されたタイムスタンプは検証者が署名が証明書がまだ有効な間に作成されたことを確認することを可能にします。

タイムスタンプを有効にするには、署名前に PdfSignature オブジェクトに 2つのプロパティを設定します:

  • setTimestampHashAlgorithm(PdfHashAlgorithm): タイムスタンプトークンを計算する際に使用するハッシュアルゴリズムを指定します。 PdfHashAlgorithm.SHA256 は標準の選択です。
  • setTimestampUrl(String): タイムスタンプトークンを発行するTSAサーバーのHTTPまたはHTTPSエンドポイント。

テストおよび低容量の本番使用のために複数のTSAサーバーが無償で利用可能です。 https://freetsa.org/tsr と http://timestamp.digicert.com は一般的に使用される2つのエンドポイントです。

//: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にデジタル署名をする方法は?

PdfDocument.fromFile()を使用してPDFを読み込み、PFX証明書ファイルへのパスとそのパスワードを使用してPdfSignatureを作成し、signDigitalSignature(signature)を呼び出し、pdf.saveAs()で保存します。

IronPDFにおけるsignDigitalSignature()とcertify()の違いは何ですか?

signDigitalSignature()は、1人の署名者の承認を記録する承認署名を追加します。複数の承認署名を順番に追加できます。certify()は、ドキュメントの最初にある必要がある作者署名を追加し、後続の署名者が行える変更を制御するPdfCertificationLevelを設定します。

Javaで署名済みPDFに可視署名画像を追加するにはどうすればいいですか?

FileInputStreamとして画像ファイルを開き、signature.setSignatureImage(imageStream)に渡してからsignDigitalSignature()を呼び出します。画像は、ページ上の暗号署名と共に署名フィールドに埋め込まれます。

IronPDFがサポートするPDF認証レベルは何ですか?

IronPDFは、PdfCertificationLevel列挙型を介して3つのレベルをサポートします。NO_CHANGES_ALLOWEDはドキュメントを完全にロックし、FORM_FILLINGはフォームフィールド入力のみを許可し、FORM_FILLING_AND_ANNOTATIONSは構造的な編集を防ぎながらフォームフィールドと注釈を許可します。

Javaでデジタル署名にタイムスタンプを追加するにはどうすればよいですか?

PdfSignatureにsignature.setTimestampHashAlgorithm(PdfHashAlgorithm.SHA256)とsignature.setTimestampUrl("https://freetsa.org/tsr")を設定してからsignDigitalSignature()を呼び出します。IronPDFはTSAサーバーに接続し、署名済みPDFにタイムスタンプトークンを埋め込みます。

IronPDFがPDF署名に必要とする証明書ファイル形式は何ですか?

IronPDFはPFXまたはP12証明書ファイルが必要です。これは、プライベートキーと公開証明書を含むPKCS#12アーカイブです。自己署名証明書は開発用に機能します。実運用には、DigiCertやGlobalSignのような信頼できる認証局から証明書を取得してください。

JavaでIronPDFを使用してPDFにデジタル署名をするための前提条件は何ですか?

Java 8以上が必要で、MavenまたはGradle経由で追加されたIronPDF依存関係を持ち、有効なライセンスキーがLicense.setLicenseKey()で設定され、PFXまたはP12証明書ファイルとそのパスワードが必要です。

How do I certify a document with no changes allowed using IronPDF?

To certify a document with no changes allowed, construct a PdfSignature, set any required metadata, and call pdf.certify() with the PdfCertificationLevel.NO_CHANGES_ALLOWED parameter before applying any approval signatures.

What are the benefits of using digital signatures on PDFs with IronPDF?

Digital signatures ensure the authenticity and integrity of a document by creating a cryptographic identity tied to a private key. They are ideal for contracts, invoices, and legal documents, where tamper evidence and verification are crucial.

What next steps are recommended after setting up digital signatures with IronPDF?

After setting up digital signatures, consider exploring related IronPDF functionalities, such as creating and filling PDF forms, adding annotations, and merging PDFs to enhance your Java PDF workflow.

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

...
詳しく読む

準備はできましたか?

バージョン:2026.6リリースされたばかり

あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。
PDFのため for Java Mavenライブラリ
Mavenでインストール

バージョン: 2026.6

<dependency>
   <groupId>com.ironsoftware</groupId>
   <artifactId>ironpdf</artifactId>
   <version>2026.6.1</version>
</dependency>
https://central.sonatype.com/artifact/com.ironsoftware/ironpdf/2026.6.1
or
Java PDF JAR
JAR をダウンロード

バージョン: 2026.6

Manually install into your project

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

OR
bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。
PDFのため for Java Mavenライブラリ
Mavenでインストール

バージョン: 2026.6

<dependency>
   <groupId>com.ironsoftware</groupId>
   <artifactId>ironpdf</artifactId>
   <version>2026.6.1</version>
</dependency>
https://central.sonatype.com/artifact/com.ironsoftware/ironpdf/2026.6.1
or
Java PDF JAR
JAR をダウンロード

バージョン: 2026.6

Manually install into your project