JavaでHIBCを使用したバーコードでPDFに署名する
医薬品やヘルスケア物流ソフトウェアを開発している場合、紙ベースの追跡、紛失した署名、監査の悪夢に直面していることでしょう。バーコードでPDFに署名する—特にHIBCデータマトリックスまたはQRコード—は、印刷、スキャン、規制審査に耐える改ざん防止の機械可読トレイルを作成します。このチュートリアルでは、GroupDocs.Signature for Java を使用して、PDFにデータマトリックスとQRバーコードの両方を追加する方法を正確に示します。
クイック回答
- JavaでHIBCバーコードを処理するライブラリは何ですか? GroupDocs.Signature for Java。
- 最もコンパクトなバーコード形式はどれですか? Data Matrix – 小さなラベルに最適です。
- 同じPDFにQRとData Matrixの両方を追加できますか? はい、別々の
QrCodeSignOptionsを作成するだけです。 - 実行時にインターネット接続が必要ですか? いいえ、インストール後は完全にオフラインで動作します。
- 推奨されるJavaバージョンは何ですか? 本番環境向けのパフォーマンスのために Java 11+。
HIBCバーコードPDF署名とは?
Signature は、PDFドキュメントを表し、デジタル署名の埋め込みを可能にする GroupDocs.Signature のコアクラスです。GroupDocs.Signature for Java の Signature クラスは、HIBCバーコードをデジタル署名として埋め込むメソッドを提供します。HIBCバーコードでPDFに署名することで、サプライチェーンの任意の時点でスキャン可能な検証可能な改ざん防止レコードを作成します。
Data Matrix と QR コードを組み合わせて使用する理由
Data Matrix は最小のフットプリントを提供しながら、最大2,335文字の英数字を保持でき、密集したラベル領域に最適です。一方、QRコードは最大4,296文字をサポートし、スマートフォンで普遍的に読み取れます。両方を組み合わせることで、スペース効率とデータ容量の最適なバランスが得られ、倉庫のスキャナーからモバイルアプリまで、すべてのステークホルダーが必要な情報を読み取れるようになります。
前提条件
- JDK 11 以上(Java 8 でも動作しますが、最適なパフォーマンスのために Java 11+ が推奨されます)。
- IDE(IntelliJ IDEA、Eclipse、または Java 拡張機能付き VS Code など)。
- Maven または Gradle(依存関係管理用、以下に例があります)。
- サンプル PDF(例:
sample.pdf)で実装をテストします。 - 有効な GroupDocs.Signature ライセンス(開発用の無料トライアル、製品版は有料ライセンス)。
GroupDocs.Signature for Java の設定
Maven 設定
Add the dependency to your pom.xml:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
Gradle 設定
For Gradle projects, add this to your build.gradle:
implementation 'com.groupdocs:groupdocs-signature:23.12'
直接ダウンロードオプション
また、GroupDocs.Signature for Java releases から JAR ファイルを直接ダウンロードし、プロジェクトのクラスパスに手動で追加することもできます。この方法は、ネットワークが制限された環境でうまく機能します。
ライセンス取得
ウォーターマークを除去し、すべての機能を有効にするために、GroupDocs から無料トライアルまたは一時ライセンスをリクエストしてください。本番環境での導入には購入ライセンスが必要です。
基本的な初期化
Signature はすべての署名操作のエントリーポイントです。PDF をロードし、バーコードを適用し、署名済みファイルを書き出します。
import com.groupdocs.signature.Signature;
class InitializeSignature {
public static void main(String[] args) {
Signature signature = new Signature("sample.pdf");
// Proceed with signing operations...
}
}
HIBC バーコードで Data Matrix PDF を作成する方法
Signature をソース PDF でインスタンス化し、QrCodeSignOptions を Data Matrix 形式に設定し、正しくフォーマットされた HIBC 文字列を提供して sign() を呼び出します。ライブラリは署名済み PDF を宛先に書き込み、レイアウトを保持し、バーコードを改ざん防止の署名として埋め込みます。
QrCodeSignOptions は署名用のバーコードタイプ、内容、サイズ、配置を指定します。
- 必要なクラスをインポート – これにより、署名エンジンと Data Matrix オプションにアクセスできます。
import com.groupdocs.signature.Signature;
import com.groupdocs.signature.options.sign.QrCodeSignOptions;
import com.groupdocs.signature.domain.qrcodes.QrCodeTypes;
Signatureオブジェクトをインスタンス化 – ソースと宛先ファイルの絶対パスを使用します。
String sourceFilePath = "YOUR_DOCUMENT_DIRECTORY";
String destinFilePath = "YOUR_OUTPUT_DIRECTORY/SignWithHIBCLICQR.pdf";
final Signature signature = new Signature(sourceFilePath);
- Data Matrix オプションを構成 – HIBC 文字列を設定し、
QrCodeTypes.HIBCLICDataMatrixを選択し、配置座標を定義します。QrCodeTypesは HIBC 署名でサポートされるバーコード形式を列挙します。
QrCodeSignOptions hibcLic_QR = new QrCodeSignOptions("A123PROD30917/75#422011907#GP293", QrCodeTypes.HIBCLICQR);
hibcLic_QR.setLeft(1); // Set the position from left
hibcLic_QR.setTop(1); // Set the position from top
hibcLic_QR.setReturnContent(true); // Return content after signing
hibcLic_QR.setReturnContentType(FileType.PNG); // Specify return content type as PNG
- PDF に署名を適用。
signature.sign(destinFilePath, hibcLic_QR);
- リソースを解放してファイルハンドルを解放し、メモリリークを防止します。
finally {
if (signature != null) signature.dispose();
}
完全な動作例
Here’s the full flow in a single block (the placeholders represent the exact code you’ll paste from the earlier snippets):
import com.groupdocs.signature.Signature;
import com.groupdocs.signature.options.sign.QrCodeSignOptions;
import com.groupdocs.signature.domain.qrcodes.QrCodeTypes;
public class HibcQrSigning {
public static void main(String[] args) {
String sourceFilePath = "sample.pdf";
String destinFilePath = "output/SignWithHIBCLICQR.pdf";
Signature signature = null;
try {
signature = new Signature(sourceFilePath);
QrCodeSignOptions hibcLic_QR = new QrCodeSignOptions(
"A123PROD30917/75#422011907#GP293",
QrCodeTypes.HIBCLICQR
);
hibcLic_QR.setLeft(1);
hibcLic_QR.setTop(1);
hibcLic_QR.setReturnContent(true);
hibcLic_QR.setReturnContentType(FileType.PNG);
signature.sign(destinFilePath, hibcLic_QR);
System.out.println("PDF signed successfully with HIBC QR code");
} catch (Exception e) {
System.err.println("Error signing PDF: " + e.getMessage());
e.printStackTrace();
} finally {
if (signature != null) signature.dispose();
}
}
}
直接回答(40〜70語)
Data Matrix PDF を作成するには、ソース PDF で Signature をインスタンス化し、QrCodeSignOptions を QrCodeTypes.HIBCLICDataMatrix に設定して正しくフォーマットされた HIBC 文字列を提供し、signature.sign(outputPath, options) を呼び出します。ライブラリは署名済み PDF を宛先に書き込み、レイアウトを保持し、バーコードを改ざん防止の署名として埋め込みます。
GroupDocs.Signature を使用して QR コード PDF を追加する方法
PDF をロードし、QR 形式用に QrCodeSignOptions を構成して sign() を呼び出します。ライブラリは QR 画像を可読性のためにスケーリングし、設定した座標に基づいて配置し、既存のコンテンツと重ならないようにします。これにより、印刷後もバーコードがスキャン可能であり、HIBC 標準に準拠します。
QrCodeSignOptions は QR バーコードの内容、サイズ、位置を定義します。
- QR 固有のクラスをインポート
QrCodeSignOptions hibcLic_AZ = new QrCodeSignOptions("A123PROD30917/75#422011907#GP293", QrCodeTypes.HIBCLICAztec);
hibcLic_AZ.setLeft(1); // Set the position from left
hibcLic_AZ.setTop(200); // Set the position from top
hibcLic_AZ.setReturnContent(true); // Return content after signing
hibcLic_AZ.setReturnContentType(FileType.PNG); // Specify return content type as PNG
- QR オプションを作成および構成 –
QrCodeTypes.HIBCLICQRの使用に注意してください。
signature.sign(destinFilePath, hibcLic_AZ);
- ドキュメントに署名
QrCodeSignOptions hibcLic_DM = new QrCodeSignOptions("A123PROD30917/75#422011907#GP293", QrCodeTypes.HIBCLICDataMatrix);
hibcLic_DM.setLeft(1); // Set the position from left
hibcLic_DM.setTop(400); // Set the position from top
hibcLic_DM.setReturnContent(true); // Return content after signing
hibcLic_DM.setReturnContentType(FileType.PNG); // Specify return content type as PNG
直接回答:
QrCodeSignOptionsでQrCodeTypes.HIBCLICQRを使用し、HIBC コンテンツ文字列を設定し、setLeft()とsetTop()でコードの位置を指定してからsignature.sign(outputPath, options)を呼び出します。QR バーコードは即座に埋め込まれ、スマートフォンやスキャナーでのキャプチャにすぐ使用できます。
避けるべき一般的なミス
1. リソースの解放を忘れる
間違い:
Signature signature = new Signature("sample.pdf");
signature.sign(destinFilePath, options);
// Oops, no dispose() call
修正: Signature の使用を try‑with‑resources ブロックでラップするか、finally 節で明示的に close() を呼び出してください。
2. 不正確な HIBC 形式文字列の使用
間違い: 12345 のような汎用文字列を使用する。
修正: HIBCC 標準に従ってください(例: A123PROD30917/75#422011907#GP293)。HIBCC online validator で検証してください。
3. ファイルパスのハードコーディング
間違い:
String sourceFilePath = "C:/Users/John/Documents/test.pdf";
修正: パスを設定ファイルまたは環境変数に保存し、実行時に読み取ります。
4. バーコード位置の競合を無視する
バーコードは既存のテキストや署名から離れた場所に配置してください。PDF の座標系(原点は左下)を使用し、印刷サンプルでテストします。
5. 実際のスキャナーでテストしない
署名済み PDF を印刷し、ワークフローで使用している実際のハードウェアでスキャンしてください。異なる印刷品質での可読性を検証します。
ヘルスケアにおける実用的な応用
| シナリオ | 推奨バーコード | 適合理由 |
|---|---|---|
| 医薬品流通 | QRコード | データ容量が大きく、スマートフォンで広くスキャン可能。 |
| 在庫管理 | Data Matrix | フットプリントが小さく、密集した棚ラベルに最適。 |
| 規制遵守(FDA 21 CFR Part 11) | QR + Data Matrix | デュアルフォーマットにより冗長性と監査可能性を提供。 |
| 医療機器トラッキング | Aztec Code | コンパクトサイズで限られたスペースの包装に適合。 |
パフォーマンス上の考慮事項とベストプラクティス
バッチ処理パターン
List<String> filesToSign = getFileList();
for (String filePath : filesToSign) {
Signature signature = null;
try {
signature = new Signature(filePath);
// Sign and save
} finally {
if (signature != null) signature.dispose();
}
}
- ファイルごとに新しい
Signatureインスタンスを作成し、メモリ使用量を低く保ちます。 - 固定スレッドプール(
Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() - 1))を使用して並列処理を行いますが、各Signatureが PDF 全体をメモリに保持するため、ヒープサイズを監視してください。
ライブラリを最新に保つ
GroupDocs のリリースは処理速度を最大 20 % 向上させ、HIBC 準拠機能を追加します。四半期ごとに依存関係のチェックをスケジュールしてください。
テンプレートのキャッシュ
PDF テンプレートを一度ロードし、各バーコードバリアントごとにクローンして署名します。これにより I/O が削減され、大量ワークフローの速度が向上します。
よくある質問
Q: GroupDocs.Signature は PDF 以外のファイルタイプにも署名できますか?
A: はい、同じバーコード署名 API で DOCX、XLSX、PPTX、PNG、JPEG、TIFF もサポートします。
Q: “Invalid barcode content” エラーをトラブルシュートするには?
A: HIBC 文字列が正確な HIBCC 構文に従っているか確認し、オンラインバリデータを使用し、選択した形式に対して正しい QrCodeTypes 定数を使用していることを確認してください。
Q: 各 HIBC 形式の最大データ容量は?
A: QR ≈ 4,296 英数字、Aztec ≈ 3,832 数字 / 3,067 英数字、Data Matrix ≈ 3,116 数字 / 2,335 英数字です。最適なスキャン信頼性のため、コードは 200 文字未満に保ってください。
Q: 1つの PDF に複数のバーコードタイプを埋め込むことは可能ですか?
A: 可能です。異なる位置で個別の QrCodeSignOptions オブジェクトを作成し、各々に signature.sign() を呼び出します。重ならないようにしてください。
Q: 実行時に署名するためにインターネット接続は必要ですか?
A: いいえ。JAR がクラスパスにあり、ライセンスが有効化されていれば、すべての操作はローカルで実行されます。
追加リソース
- GroupDocs.Signature for Java ドキュメント
- API リファレンスガイド
- 最新リリースダウンロード
- ライセンス購入
- 無料トライアル取得
- 一時ライセンスリクエスト
- GroupDocs フォーラム
最終更新日: 2026-09-15
テスト環境: GroupDocs.Signature 23.12 for Java
作者: GroupDocs