PDFファイルに署名を追加する

PDFファイルにデジタル署名を追加する (facades)

PdfFileSignature クラスを使用すると、PDFファイルに署名を追加できます。入力および出力PDFファイルを使用して PdfFileSignature クラスのオブジェクトを作成する必要があります。また、署名を追加したい位置にRectangleオブジェクトを作成し、外観を設定するために、PdfFileSignature オブジェクトのsetSignatureAppearanceプロパティを使用して画像を指定できます。

Aspose.Pdf.Facadesは、PKCS#1、PKCS#7、およびPKCS#7Detachedのようなさまざまな種類の署名も提供します。 特定のタイプの署名を作成するには、証明書ファイルとパスワードを使用して、PKCS1、PKCS7、またはPKCS7Detachedのような特定のクラスのオブジェクトを作成する必要があります。

特定の署名タイプのオブジェクトが作成されたら、PdfFileSignature クラスの sign メソッドを使用してPDFに署名し、このクラスに特定の署名オブジェクトを渡すことができます。また、このメソッドに他の属性を指定することもできます。最後に、PdfFileSignature クラスの save メソッドを使用して、署名されたPDFを保存する必要があります。以下のコードスニペットは、PDFファイルに署名を追加する方法を示しています。

public static void AddPdfFileSignature() {
        PdfFileSignature pdfSign = new PdfFileSignature();
        pdfSign.bindPdf(_dataDir + "sample01.pdf");

        // 署名の位置を示す矩形を作成
        java.awt.Rectangle rect = new java.awt.Rectangle(10, 10, 300, 50);
        // 署名の外観を設定
        pdfSign.setSignatureAppearance(_dataDir + "aspose-logo.png");

        // 三つの署名タイプのいずれかを作成
        PKCS1 signature = new PKCS1(_dataDir + "test01.pfx", "Aspose2021"); // PKCS#1

        pdfSign.sign(1, "I'm document author", "test01@aspose-pdf-demo.local", "Aspose Pdf Demo, Australia", true, rect,
                signature);
        // 出力PDFファイルを保存
        pdfSign.save(_dataDir + "DigitallySign.pdf");
    }

以下のコード例は、2つの署名でドキュメントに署名する機能を示しています。私たちの例では、1ページ目に最初の署名を、2ページ目に2番目の署名を配置します。必要なページを指定できます。

    public static void AddTwoSignature() {
        PdfFileSignature pdfSign = new PdfFileSignature();
        // 1つ目の署名で署名する

        pdfSign.bindPdf(_dataDir + "sample01.pdf");

        // 1つ目の署名の場所のための四角形を作成する
        java.awt.Rectangle rect1 = new java.awt.Rectangle(10, 10, 300, 50);

        // 1つ目の署名オブジェクトを作成する
        PKCS1 signature1 = new PKCS1(_dataDir + "test01.pfx", "Aspose2021"); // PKCS#1

        pdfSign.sign(1, "私はドキュメントの作成者です", "test@aspose-pdf-demo.local", "Aspose Pdf Demo, Australia", true, rect1,
                signature1);
        pdfSign.save(_dataDir + "DigitallySign.pdf");

        // 2つ目の署名で署名する

        pdfSign.bindPdf(_dataDir + "DigitallySign.pdf");

        // 2つ目の署名の場所のための四角形を作成する
        java.awt.Rectangle rect2 = new java.awt.Rectangle(10, 10, 300, 50);

        // 2つ目の署名オブジェクトを作成する
        PKCS1 signature2 = new PKCS1(_dataDir + "test02.pfx", "Aspose2021"); // PKCS#1

        pdfSign.sign(2, "私はドキュメントのレビュアーです", "test02@aspose-pdf-demo.local", "Aspose Pdf Demo, Australia", true,
                rect2, signature2);

        // 出力PDFファイルを保存する
        pdfSign.save(_dataDir + "DigitallySign.pdf");
    }

ドキュメントに署名が必要なフォームやアクロフォームがある場合は、次の例を参照してください。
入力および出力 PDF ファイルを使用して PdfFileSignature クラスのオブジェクトを作成する必要があります。バインディングには bindPdf を使用します。必要なプロパティを追加する能力を持つ署名を作成します。私たちの例では、それらは「Reason」と「CustomAppearance」です。

  public static void AddPdfFileSignatureField() {
        PdfFileSignature pdfSign = new PdfFileSignature();
        pdfSign.bindPdf(_dataDir + "sample02.pdf");

        // 3つの署名タイプのいずれかを作成
        PKCS1 signature = new PKCS1(_dataDir + "test02.pfx", "Aspose2021");
        signature.setReason("Sign as Author");

        SignatureCustomAppearance sca = new SignatureCustomAppearance();
        signature.setCustomAppearance(sca);
        sca.setFontSize(6);
        sca.setFontFamilyName("Calibri");

        // PKCS#1
        pdfSign.sign("Signature1", signature);
        // 出力 PDF ファイルを保存
        pdfSign.save(_dataDir + "DigitallySign.pdf");
    }

ドキュメントに2つのフィールドがある場合、その署名アルゴリズムは最初の例に似ています。

   public static void AddPdfFileSignatureField2() {
        PdfFileSignature pdfSign = new PdfFileSignature();
        pdfSign.bindPdf(_dataDir + "sample03.pdf");

        // 3つの署名タイプのいずれかを作成
        PKCS1 signature1 = new PKCS1(_dataDir + "test01.pfx", "Aspose2021");
        SignatureCustomAppearance sca = new SignatureCustomAppearance();
        signature1.setCustomAppearance(sca);
        sca.setFontSize(6);
        sca.setFontFamilyName("Calibri");

        signature1.setReason("著者として署名"); // PKCS#1
        pdfSign.sign("Signature1", signature1);

        // 出力PDFファイルを保存
        pdfSign.save(_dataDir + "DigitallySign.pdf");

        pdfSign.bindPdf(_dataDir + "DigitallySign.pdf");

        // 3つの署名タイプのいずれかを作成
        PKCS1 signature2 = new PKCS1(_dataDir + "test02.pfx", "Aspose2021");
        signature2.setReason("レビュアーとして署名"); // PKCS#1
        signature2.setCustomAppearance(sca);
        pdfSign.sign("Signature2", signature2);
        // 出力PDFファイルを保存
        pdfSign.save(_dataDir + "DigitallySign.pdf");
    }