GroupDocs.Signature for Java を使用して PDF にカスタム QR コードのシリアル化と暗号化を実装する方法

導入

デジタル時代において、データの完全性と真正性を維持するためには、安全な文書署名が不可欠です。GroupDocs.Signature for Javaは、文書への署名を簡単に追加できるように設計された強力なライブラリです。このチュートリアルでは、GroupDocs.Signature for Javaを使用して、PDFに暗号化されたカスタムQRコードシリアル化を実装する方法を説明します。

学習内容:

  • GroupDocs.Signature for Java のセットアップと構成方法
  • QRコード署名のカスタムシリアル化の実装
  • QRコード内のシリアル化されたデータを暗号化する
  • これらの機能を適用してドキュメントを保護する

実装に進む前に、手順に従うために必要なものがすべて揃っていることを確認しましょう。

前提条件

このチュートリアルを効果的に使用するには、次の前提条件を満たしていることを確認してください。

  1. 必要なライブラリと依存関係:

    • GroupDocs.Signature(Java バージョン 23.12 以降)
    • 依存関係管理用の Maven または Gradle (オプション)
  2. 環境設定要件:

    • マシンにJava開発キット(JDK)がインストールされている
    • Javaプログラミングの基礎知識
  3. 知識の前提条件:

    • Javaおよびオブジェクト指向プログラミングの概念に精通していること
    • JavaでPDFを操作するための基本的な知識

Java 用 GroupDocs.Signature の設定

開始するには、プロジェクト環境で GroupDocs.Signature ライブラリを設定する必要があります。

Mavenのインストール

Mavenを使用している場合は、次の依存関係を pom.xml ファイル:

<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-signature</artifactId>
    <version>23.12</version>
</dependency>

Gradleのインストール

Gradleユーザーの場合は、この行を build.gradle ファイル:

implementation 'com.groupdocs:groupdocs-signature:23.12'

直接ダウンロード

または、最新バージョンを直接ダウンロードすることもできます。 GroupDocs.Signature for Java リリース.

ライセンス取得手順

  • 無料トライアル: まずは試用版をダウンロードして機能をテストしてみましょう。
  • 一時ライセンス: 必要に応じて一時ライセンスをリクエストして、制限なしで製品を評価することができます。
  • 購入: 長期使用の場合は、フルライセンスの購入を検討してください。

インストールしたら、プロジェクトで GroupDocs.Signature を初期化します。

import com.groupdocs.signature.Signature;

public class SetupGroupDocs {
    public static void main(String[] args) {
        Signature signature = new Signature("YOUR_DOCUMENT_DIRECTORY/sample.pdf");
        // ここにあなたのコードを...
    }
}

実装ガイド

それでは、GroupDocs.Signature for Java を使用してカスタム QR コードのシリアル化と暗号化を実装してみましょう。

QR コード署名のカスタムシリアル化クラス

概要

この機能では、メタデータをQRコード署名にシリアル化するクラスを作成します。 DocumentSignatureData クラスは、ID、作成者、署名日、データ ファクターなどの属性を格納します。

import com.groupdocs.signature.domain.extensions.serialization.FormatAttribute;
import java.math.BigDecimal;
import java.util.Date;

class DocumentSignatureData {
    @FormatAttribute(propertyName = "SignID")
    public String ID;

    public void setID(String value) { 
        this.ID = value; 
    }

    @FormatAttribute(propertyName = "SAuth")
    public String author;

    public void setAuthor(String value) {
        this.author = value;
    }

    @FormatAttribute(propertyName = "SDate", propertyFormat = "yyyy-MM-dd")
    public Date signed = new Date();

    public void setSigned(Date value) {
        this.signed = value;
    }

    @FormatAttribute(propertyName = "SDFact", propertyFormat = "N2")
    public BigDecimal dataFactor = new BigDecimal(0.01);

    public void setDataFactor(BigDecimal value) {
        this.dataFactor = value;
    }
}

説明

  • 属性: その @FormatAttribute アノテーションは、各属性を QR コードにシリアル化する方法を指定します。
    • ID署名の一意の識別子。
    • 著者文書に署名した人。
    • 署名日文書が署名されたときのタイムスタンプ。
    • データファクター署名に関連付けられた追加の数値データ。

カスタムデータのシリアル化と暗号化を備えたQRコード署名

概要

このセクションでは、カスタムシリアル化データと暗号化を含む QR コードを使用してドキュメントに署名する方法を説明します。

import com.groupdocs.signature.Signature;
import com.groupdocs.signature.domain.Padding;
import com.groupdocs.signature.domain.enums.HorizontalAlignment;
import com.groupdocs.signature.domain.enums.VerticalAlignment;
import com.groupdocs.signature.domain.extensions.encryption.IDataEncryption;
import com.groupdocs.signature.domain.qrcodes.QrCodeTypes;
import com.groupdocs.signature.exception.GroupDocsSignatureException;
import com.groupdocs.signature.options.sign.QrCodeSignOptions;
import java.io.File;
import java.math.BigDecimal;
import java.util.Date;
import java.util.UUID;

class SignWithQRCodeCustomSerialization {
    String filePath = "YOUR_DOCUMENT_DIRECTORY/sample.pdf"; 
    String outputFilePath = new File("YOUR_OUTPUT_DIRECTORY", "SignedQRCodeCustomSerialization.pdf").getPath();

    public void signDocument() throws Exception {
        Signature signature = new Signature(filePath);

        // ここでカスタム暗号化ロジックを実装します
        IDataEncryption encryption = new CustomXOREncryption();

        DocumentSignatureData documentSignature = new DocumentSignatureData();
        documentSignature.setID(UUID.randomUUID().toString());
        documentSignature.setAuthor(System.getenv("USERNAME")); 
        documentSignature.setSigned(new Date());
        documentSignature.setDataFactor(new BigDecimal("11.22"));

        QrCodeSignOptions options = new QrCodeSignOptions();
        options.setData(documentSignature);
        options.setEncodeType(QrCodeTypes.QR);
        options.setDataEncryption(encryption);

        // 配置と外観を設定する
        options.setHeight(100);
        options.setWidth(100);
        options.setVerticalAlignment(VerticalAlignment.Bottom);
        options.setHorizontalAlignment(HorizontalAlignment.Right);
        
        Padding padding = new Padding();
        padding.setRight(10);
        padding.setBottom(10);
        options.setMargin(padding);

        signature.sign(outputFilePath, options);
    }
}

説明

  • カスタム暗号化: 独自の暗号化ロジックを実装する CustomXOREncryption または他の方法で実装する IDataEncryption
  • 署名オプション: 高さ、幅、パディングなどのオプションを使用して、QR コードの外観と配置を構成します。
  • 署名プロセス: その signature.sign() このメソッドは、ドキュメントに QR コード署名を適用します。

トラブルシューティングのヒント

  • ビルド ツール (Maven/Gradle) ですべての依存関係が正しく構成されていることを確認します。
  • 入力ドキュメントと出力ドキュメントのファイル パスが正確であることを確認します。
  • カスタム暗号化ロジックが適切に実装され、統合されていることを確認します。

実用的な応用

この機能の実際の応用例をいくつか紹介します。

  1. 法的文書の署名: 信頼性を確保するために、QR コードに埋め込まれたメタデータを使用して契約書に安全に署名します。
  2. 請求書処理: セキュリティと追跡可能性を高めるために、請求書に暗号化された署名を自動的に追加します。
  3. 物流追跡: 署名された文書を使用して出荷を追跡し、QR コード内に固有の識別子とタイムスタンプを埋め込みます。
  4. 学術認定: QRコード署名を使用して学生情報をデジタル証明書に安全に埋め込む