PDFのデジタル署名を使用すると、関係者と共有する前にドキュメントを保護できます。デジタル署名されたPDFドキュメントのコンテンツの偽造は、簡単に検出および検証できます。プログラムでPDFドキュメントにデジタル署名するために、Javaを使用してPDFにデジタル署名を追加および検証する方法を紹介します。 PDFのデジタル署名に関連する次のシナリオについて説明します。

PDFにデジタル署名するJavaライブラリ

PDFでのデジタル署名の追加と検証には、Aspose.PDF for Javaを使用します。 Aspose.PDF for Javaを使用すると、他のPDF操作機能に加えて、PDFのデジタル署名をシームレスに追加および検証できます。 APIのJARをダウンロードするか、Mavenベースのアプリケーションにインストールすることができます。

リポジトリ:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

依存:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-pdf</artifactId>
    <version>20.6</version>
</dependency>

Javaを使用してPDFにデジタル署名を追加する

以下は、Aspose.PDFforJavaを使用してPDFドキュメントにデジタル署名を追加する手順です。

  • Documentクラスのインスタンスを作成し、PDFドキュメントのパスで初期化します。
  • PdfFileSignatureクラスを初期化し、それにDocumentオブジェクトを渡します。
  • PKCS7クラスのインスタンスを作成し、証明書のパスとパスワードを使用して初期化します。
  • MDPシグニチャタイプのDocMDPSignatureクラスを初期化します。
  • Rectangleを定義して、ドキュメントのページに署名を配置します。
  • PdfFileSignature.Certify()メソッドを使用してPDFドキュメントにデジタル署名します。
  • PdfFileSignature.Save()メソッドを使用して署名されたPDFを保存します。

次のコードサンプルは、Javaを使用してPDFにデジタル署名する方法を示しています。

// Documentオブジェクトを作成する
Document doc = new Document("input.pdf");
PdfFileSignature signature = new PdfFileSignature(doc);
PKCS7 pkcs = new PKCS7("certificate.pfx", "1234567890"); // Use PKCS7/PKCS7Detached objects
DocMDPSignature docMdpSignature = new DocMDPSignature(pkcs, DocMDPAccessPermissions.FillingInForms);
Rectangle rect = new Rectangle(100, 600, 400, 100);
// 署名の外観を設定する
signature.setSignatureAppearance("aspose-logo.png"); 
// 3つの署名タイプのいずれかを作成します
signature.certify(1, "Signature Reason", "Contact", "Location", true, rect, docMdpSignature);
// デジタル署名されたPDFファイルを保存する
signature.save("Digitally Signed PDF.pdf");

Javaを使用してタイムスタンプサーバーでPDFにデジタル署名する

Aspose.PDF for Javaでは、TimeStampサーバーを使用してPDFにデジタル署名を追加することもできます。 TimestampSettingsクラスはこの目的で使用されます。次のコードサンプルは、Javaを使用してTimeStampサーバーでPDFにデジタル署名を追加する方法を示しています。

// Documentオブジェクトを作成する
Document doc = new Document("input.pdf");
PdfFileSignature signature = new PdfFileSignature(doc);
PKCS7 pkcs = new PKCS7("certificate.pfx", "1234567890"); // Use PKCS7/PKCS7Detached objects
TimestampSettings timestampSettings = new TimestampSettings("https:\\your_timestamp_settings", "user:password"); // User/Password can be omitted
pkcs.setTimestampSettings(timestampSettings); 
Rectangle rect = new Rectangle(100, 600, 400, 100);
// 署名の外観を設定する
signature.setSignatureAppearance("aspose-logo.png"); 
// 3つの署名タイプのいずれかを作成します
signature.sign(1, "Signature Reason", "Contact", "Location", true, rect, pkcs);
// デジタル署名されたPDFファイルを保存する
signature.save("Digitally Signed PDF.pdf");

Javaを使用してPDFのデジタル署名を確認する

デジタル署名されたPDFを受け取ると、その署名を非常に簡単に確認できます。以下は、デジタル署名されたPDFを確認する手順です。

次のコードサンプルは、Javaを使用してデジタル署名されたPDFドキュメントを検証する方法を示しています。

// PDFファイルの署名を作成する
PdfFileSignature pdfSign = new PdfFileSignature();
// PDFをバインド
pdfSign.bindPdf("Digitally Signed PDF.pdf");
// 署名名を使用して署名を確認する
if (pdfSign.verifySigned("Signature1"))
{
	if (pdfSign.isCertified()) // Certified?
	{
		if (pdfSign.getAccessPermissions() == DocMDPAccessPermissions.FillingInForms) // Get access permission
		{
			// 何かをする
		}
	} 
}

結論

この記事では、Javaを使用してPDFにデジタル署名を追加する方法を学習しました。さらに、デジタル署名されたPDFファイルを数ステップで検証する方法を見てきました。 ドキュメントGitHubでホストされているソースコードサンプルを使用して、JavaPDFAPIの詳細を学ぶことができます。

関連項目