デジタル技術の急速な発展に伴い、多くの企業が情報を電子的に作成、保存、送信するようになっています。電子ドキュメントの信頼性と真正性を確保するために、デジタル署名が広く利用されています。本記事では、Spire.PDF for Java を使用して PDF に見えるデジタル署名または見えないデジタル署名を追加する方法、およびデジタル署名を削除する方法について解説します。 PDF に見えないデジタル署名を追加する PDF に見えるデジタル署名を追加する PDF からデジタル署名を削除する Spire.PDF for Java をインストールします まず、Spire.PDF for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。 <repositories> <repository> <id>com.e-iceblue</id> <name>e-iceblue</name> <url> https://repo.e-iceblue.com/nexus/content/groups/public/</url> </repository> </repositories> <dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.pdf</artifactId> <version>10.11.2</version> </dependency> </dependencies> PDF に見えないデジタル署名を追加する 以下は、Spire.PDF for Java を使用して PDF に見えないデジタル署名を追加する手順です。 PdfDocument オブジェクトを作成します。 PdfDocument.loadFromFile() メソッドを使用して PDF ファイルを読み込みます。 PdfCertificate オブジェクトを初期化し、pfx 証明書ファイルを読み込みます。 PdfSignature オブジェクトを証明書に基づいて作成します。 PdfSignature.setDocumentPermissions() メソッドを使用してドキュメントの権限を設定します。 PdfDocument.saveToFile() メソッドを使用してドキュメントを保存します。 Java import com.spire.pdf.PdfDocument; import com.spire.pdf.security.PdfCertificate; import com.spire.pdf.security.PdfCertificationFlags; import com.spire.pdf.security.PdfSignature; public class AddInvisibleSignature { public static void main(String[] args) { // PdfDocumentオブジェクトを作成 PdfDocument doc = new PdfDocument(); // サンプルPDFファイルを読み込む doc.loadFromFile("Sample.pdf"); // pfx証明書を読み込む PdfCertificate cert = new PdfCertificate("gary.pfx", "e-iceblue"); // PdfSignatureオブジェクトを作成 PdfSignature signature = new PdfSignature(doc, doc.getPages().get(doc.getPages().getCount() - 1), cert, "gary"); // ドキュメントの権限を設定(変更を禁止し、フォーム入力を許可) signature.setDocumentPermissions(PdfCertificationFlags.Forbid_Changes); signature.setDocumentPermissions(PdfCertificationFlags.Allow_Form_Fill); // 別のPDFファイルとして保存 doc.saveToFile("output/見えないPDF署名.pdf"); doc.close(); } } PDF に見えるデジタル署名を追加する 以下は、Spire.PDF for Java を使用して PDF に見えるデジタル署名を追加する手順です。 PdfDocument オブジェクトを作成します。 PdfDocument.loadFromFile() メソッドを使用して PDF ファイルを読み込みます。 PdfCertificate オブジェクトを初期化し、pfx 証明書ファイルを読み込みます。 PdfSignature オブジェクトを作成し、ドキュメント内での署名の位置とサイズを指定します。 署名の詳細を設定します(例:日付、名前、場所、理由、手書き署名画像、ドキュメント権限など)。 PdfDocument.saveToFile() メソッドを使用してドキュメントを保存します。 Java import com.spire.pdf.PdfDocument; import com.spire.pdf.graphics.*; import com.spire.pdf.security.GraphicMode; import com.spire.pdf.security.PdfCertificate; import com.spire.pdf.security.PdfCertificationFlags; import com.spire.pdf.security.PdfSignature; import java.awt.*; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; public class AddVisibleSignature { public static void main(String[] args) { // PdfDocumentオブジェクトを作成 PdfDocument doc = new PdfDocument(); // サンプルPDFファイルを読み込む doc.loadFromFile("Sample.pdf"); // pfx証明書を読み込む PdfCertificate cert = new PdfCertificate("gary.pfx", "e-iceblue"); // PdfSignatureオブジェクトを作成し、その位置とサイズを指定 PdfSignature signature = new PdfSignature(doc, doc.getPages().get(0), cert, "gary"); Rectangle2D rect = new Rectangle2D.Float(); rect.setFrame(new Point2D.Float( (float) doc.getPages().get(0).getActualSize().getWidth() - 320, (float) doc.getPages().get(0).getActualSize().getHeight() - 120), new Dimension(270, 100)); signature.setBounds(rect); // グラフィックモードを設定 signature.setGraphicMode(GraphicMode.Sign_Image_And_Sign_Detail); // 署名内容を設定 signature.setNameLabel("署名者:"); signature.setName("gary"); signature.setContactInfoLabel("連絡先:"); signature.setContactInfo("02881705109"); signature.setDateLabel("日付:"); signature.setDate(new java.util.Date()); signature.setLocationInfoLabel("場所:"); signature.setLocationInfo("CD"); signature.setReasonLabel("理由:"); signature.setReason("このドキュメントの証明書"); signature.setDistinguishedNameLabel("DN:"); signature.setDistinguishedName(signature.getCertificate().get_IssuerName().getName()); signature.setSignImageSource(PdfImage.fromFile("Signature.png")); // 署名フォントを設定 signature.setSignDetailsFont(new PdfTrueTypeFont(new Font("Yu Gothic UI", Font.PLAIN, 10), true)); // ドキュメントの権限を設定 signature.setDocumentPermissions(PdfCertificationFlags.Forbid_Changes); signature.setCertificated(true); // ファイルに保存 doc.saveToFile("output/可視PDF署名.pdf"); doc.close(); } } PDF からデジタル署名を削除する 以下は、Spire.PDF for Java を使用して PDF からデジタル署名を削除する手順です。 PdfDocument オブジェクトを作成します。 PdfDocument.getForm() メソッドを使用して、ドキュメントからフォームウィジェットを取得します。 ウィジェットをループ処理し、特定のウィジェットが PdfSignatureFieldWidget であるかを確認します。 PdfFieldCollection.remove() メソッドを使用して署名ウィジェットを削除します。 PdfDocument.saveToFile() メソッドを使用してドキュメントを保存します。 Java import com.spire.pdf.PdfDocument; import com.spire.pdf.widget.PdfFieldWidget; import com.spire.pdf.widget.PdfFormWidget; import com.spire.pdf.widget.PdfSignatureFieldWidget; public class DeleteSignatures { public static void main(String[] args) { // PdfDocumentオブジェクトを作成(署名付きPDFをロード) PdfDocument doc = new PdfDocument("output/見えないPDF署名.pdf"); // ドキュメントからフォームウィジェットを取得 PdfFormWidget widgets = (PdfFormWidget) doc.getForm(); // ウィジェットをループ処理 for (int i = 0; i < widgets.getFieldsWidget().getList().size(); i++) { // 特定のウィジェットを取得 PdfFieldWidget widget = (PdfFieldWidget)widgets.getFieldsWidget().getList().get(i); // ウィジェットがPdfSignatureFieldWidgetかどうかを判定 if (widget instanceof PdfSignatureFieldWidget) { // 署名ウィジェットを削除 widgets.getFieldsWidget().remove(widget); } } // ドキュメントを別のPDFファイルに保存 doc.saveToFile("output/PDF署名の削除.pdf"); doc.close(); } } 一時ライセンスを申請する 結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。