PDFのデジタル署名を使用すると、関係者と共有する前にドキュメントを保護できます。デジタル署名されたPDFドキュメントのコンテンツの偽造は、簡単に検出および検証できます。プログラムでPDFドキュメントにデジタル署名するために、Javaを使用してPDFにデジタル署名を追加および検証する方法を紹介します。 PDFのデジタル署名に関連する次のシナリオについて説明します。
- PDFにデジタル署名するJavaライブラリ
- Javaを使用してPDFにデジタル署名を追加する
- Javaを使用してタイムスタンプサーバーでPDFにデジタル署名する
- Javaを使用して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を確認する手順です。
- PdfFileSignatureクラスのインスタンスを作成します。
- PdfFileSigntature.bindPdf(string)メソッドを使用してPDFファイルをバインドします。
- PdfFileSignature.verifySigned()メソッドを使用して、署名の有効性を確認します。
次のコードサンプルは、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の詳細を学ぶことができます。