PDF 請求書、領収書、レポートなどのドキュメントには、バーコード形式のエンコードされた情報が含まれている場合があります。 PDF ドキュメントに埋め込まれたバーコードをプログラムで検出、識別、読み取ることができます。この記事では、Java を使用して PDF ドキュメントからバーコードを読み取る方法を学習します。さらに、Java で PDF 文書からバーコード画像を抽出する方法を学びます。
この記事では、次のトピックについて説明します。
- PDF からバーコードを読み取る Java API
- PDF からバーコードを読み取る
- PDF を画像に変換し、バーコードを読み取る
- PDF からバーコードを抽出して読み取る
- PngDevice を使用して PDF からバーコードを読み取る
- PDF からバーコード イメージを検索して読み取る
PDF からバーコードを読み取る Java API
PDF ドキュメントからバーコードを読み取るには、2 段階の手順に従います。まず、Aspose.PDF for Java API を使用して PDF ドキュメントをロードし、そのページをラスター イメージにレンダリングします。その後、Aspose.BarCode for Java API を使用して、レンダリングされた画像からバーコードを読み取ります。
API の JAR をダウンロードするか、次の pom.xml 構成を Maven ベースの Java アプリケーションに追加してください。
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-barcode</artifactId>
<version>22.8</version>
</dependency>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-pdf</artifactId>
<version>22.8</version>
</dependency>
Java を使用して PDF からバーコードを読み取る
Aspose.PDF API は、PDF ドキュメントを表す Document クラスを提供します。 API の convertToPNGMemoryStream() メソッドは、PDF ページを byte[] 配列の画像ストリームにレンダリングします。 Aspose.BarCode API は、readBarCodes 操作を実行してバーコードを検出できる BarCodeReader クラスを提供します。 BarCodeResult クラスは、検出されたバーコード情報 (バーコード タイプ、コード テキスト、領域、その他のパラメーターなど) を格納します。
以下の手順に従って、PDF ドキュメントの任意のページに埋め込まれたバーコード イメージを読み取ることができます。
- まず、Document クラスを使用して PDF ドキュメントを読み込みます。
- 次に、すべてのページをループしてストリームにレンダリングします。
- 次に、ストリーム オブジェクトを使用して BarCodeReader クラスのインスタンスを作成します。
- その後、readBarCodes() メソッドを呼び出して BarCodeResult オブジェクトを取得します。
- 最後に、バーコード情報を表示します。
次のコード例は、Java を使用して PDF ドキュメントからバーコードを読み取る方法を示しています。
// このコード例は、Java を使用して PDF ドキュメントからバーコードを読み取る方法を示しています。
// ドキュメントへのパス
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";
// PDF ドキュメントを読み込む
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);
// 1 ページ目からすべての PDF ページに進む
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
// PDF ページをストリームにレンダリングする
byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
InputStream stream = new ByteArrayInputStream(ms);
// ページ ストリームからバーコードを認識する
BarCodeReader reader = new BarCodeReader(stream);
// 結果を示す
for (BarCodeResult result : reader.readBarCodes()) {
System.out.println("CodeText: " + result.getCodeText());
System.out.println("Symbology type: " + result.getCodeType());
System.out.println(("-------------------------------"));
}
}
CodeText: Aspose.Barcode Pdf417 Example
Symbology type: Pdf417
-------------------------------
CodeText: Aspose.Barcode QR Example
Symbology type: QR
-------------------------------
CodeText: Aspose.Barcode DataMatrix Example
Symbology type: DataMatrix
このブログ投稿で使用されている バーコード付きの入力 PDF ドキュメントをダウンロード してください。
PDF を画像に変換し、Java を使用してバーコードを読み取る
PDF ページを画像に変換することで、PDF ドキュメントからバーコードを読み取ることもできます。 API の PdfConverter クラスを使用すると、PDF ファイルの各ページを画像に変換できます。その後、変換された画像からバーコード情報を読み取ります。
以下の手順に従って、変換された PDF ページからバーコードを読み取ることができます。
- まず、Document クラスを使用して PDF ドキュメントを読み込みます。
- 次に、PdfConverter クラスのインスタンスを作成します。
- 必要に応じて、setBarcodeOptimization() を使用してレンダリング オプションを設定します。
- 次に、画像の解像度を設定します。
- 次に、setStartPage() と setEndPage() を使用して、画像にレンダリングするページの範囲を指定します。
- 次に、doConvert() メソッドを呼び出して、選択したページを画像にレンダリングします。
- 次に、画像をループで保存します。
- 次に、保存した画像ファイル パスを使用して BarCodeReader クラスのインスタンスを作成します。
- その後、readBarCodes() メソッドを呼び出して BarCodeResult オブジェクトを取得します。
- 最後に、バーコード情報を表示します。
次のコード例は、Java を使用して PDF ページを画像に変換し、バーコードを読み取る方法を示しています。
// 次のコード例は、PDF Converter を使用して PDF ページを画像に変換し、バーコードを読み取る方法を示しています。
// ドキュメントへのパス
String folderPath = "C:\\Files\\BarCode\\";
// 入力ファイル パス
String file = folderPath + "sample-PDF-with-Barcodes.pdf";
// PDF ドキュメントを読み込む
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);
// PdfConvertor を初期化する
com.aspose.pdf.facades.PdfConverter pdfConverter = new com.aspose.pdf.facades.PdfConverter(pdfDoc);
// バーコード最適化の設定
pdfConverter.getRenderingOptions().setBarcodeOptimization(true);
// ページ解像度の設定
// 300 dpi が標準解像度です
pdfConverter.setResolution(new com.aspose.pdf.devices.Resolution(300));
// すべてのページを画像にレンダリングするように設定する
pdfConverter.setStartPage(1); //starts from page 1
pdfConverter.setEndPage(pdfConverter.getDocument().getPages().size());
// 選択したページを画像にレンダリング
pdfConverter.doConvert();
int imageCount = 1;
while (pdfConverter.hasNextImage())
{
// 現在のページを画像にレンダリング
String strBarCodeImage = folderPath + imageCount + ".jpg";
pdfConverter.getNextImage(strBarCodeImage);
// ページのレンダリング画像からバーコードを認識
BarCodeReader reader = new BarCodeReader(strBarCodeImage);
// 結果を示す
for (BarCodeResult result : reader.readBarCodes()) {
System.out.println("CodeText: " + result.getCodeText());
System.out.println("Symbology type: " + result.getCodeType());
System.out.println(("-------------------------------"));
}
}
Java を使用して PDF からバーコードを抽出して読み取る
同様に、PdfExtractor クラスを使用して、PDF ページに埋め込まれたバーコード画像も認識できます。 PDF から画像を抽出し、抽出した画像からバーコード情報を読み取ります。
以下の手順に従って、抽出した画像からバーコードを読み取ることができます。
- まず、PdfExtractor クラスのインスタンスを作成します。
- 次に、bindPdf() メソッドを使用して、入力 PDF ドキュメントをバインドします。
- 次に、画像を抽出するページ範囲を設定します。
- 次に、extractImage() メソッドを呼び出して画像を抽出します。
- 次に、画像をループで保存します。
- 次に、画像パスを使用して BarCodeReader クラスのインスタンスを作成します。
- その後、readBarCodes() メソッドを呼び出して BarCodeResult オブジェクトを取得します。
- 最後に、バーコード情報を表示します。
次のコード例は、Java を使用して PDF ドキュメントからバーコード イメージを抽出して読み取る方法を示しています。
// 次のコード例は、PdfExtractor を使用して PDF ページを画像に変換し、バーコードを読み取る方法を示しています。
// ドキュメントへのパス
String folderPath = "C:\\Files\\BarCode\\";
// 入力ファイル
String file = folderPath + "sample-PDF-with-Barcodes.pdf";
// PDF ドキュメントを製本する
com.aspose.pdf.facades.PdfExtractor pdfExtractor = new com.aspose.pdf.facades.PdfExtractor();
pdfExtractor.bindPdf(file);
// 画像抽出のページ範囲を設定する
pdfExtractor.setStartPage(1);
pdfExtractor.setEndPage(3);
// 画像を抽出する
pdfExtractor.extractImage();
int imageCount = 1;
// 画像を保存してループでストリーミングする
while (pdfExtractor.hasNextImage())
{
// 画像を保存
String strBarCodeImage = folderPath + imageCount + ".jpg";
pdfExtractor.getNextImage(strBarCodeImage);
// 画像からバーコードを認識
BarCodeReader reader = new BarCodeReader(strBarCodeImage);
for (BarCodeResult result : reader.readBarCodes()) {
System.out.println("CodeText: " + result.getCodeText());
System.out.println("Symbology type: " + result.getCodeType());
System.out.println(("-------------------------------"));
}
}
Java で PngDevice を使用して PDF からバーコードを読み取る
API の PngDevice クラスを使用して PDF ドキュメントのページを PNG 画像に変換することで、バーコードを読み取ることもできます。ページを PNG に変換し、出力ストリームに保存する process(Page page, OutputStream output) メソッドを提供します。このクラスの processToBufferedImage(Page page) メソッドは、ページを BufferedImage に変換します。
以下の手順に従って、変換された PDF ページからバーコードを PNG 画像として読み取ることができます。
- まず、Document クラスを使用して PDF ドキュメントを読み込みます。
- 次に、PngDevice クラスのインスタンスを作成します。
- 次に、すべてのページをループし、processToBufferedImage() メソッドを呼び出して画像にレンダリングします。
- 次に、BufferedImage オブジェクトを使用して BarCodeReader クラスのインスタンスを作成します。
- その後、readBarCodes() メソッドを呼び出して BarCodeResult オブジェクトを取得します。
- 最後に、バーコード情報を表示します。
次のコード例は、Java を使用して PDF ページを変換し、バーコードを読み取る方法を示しています。
// 次のコード例は、PngDevice を使用して PDF ページを画像に変換し、バーコードを読み取る方法を示しています。
// ドキュメントへのパス
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";
// PDF ドキュメントを読み込む
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);
// 300 dpi の標準解像度で PNG デバイスを作成する
com.aspose.pdf.devices.PngDevice pngDevice = new com.aspose.pdf.devices.PngDevice(new com.aspose.pdf.devices.Resolution(300));
// 1ページから始まるすべてのPDFページに進みます
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
// PDF ページをバッファリングされた画像にレンダリングする
BufferedImage img = pngDevice.processToBufferedImage(pdfDoc.getPages().get_Item(i));
// ページのレンダリング画像からバーコードを認識
BarCodeReader reader = new BarCodeReader(img);
// 結果を示す
for (BarCodeResult result : reader.readBarCodes()) {
System.out.println("CodeText: " + result.getCodeText());
System.out.println("Symbology type: " + result.getCodeType());
System.out.println(("-------------------------------"));
}
}
Java を使用して PDF からバーコード画像を検索して読み取る
ImagePlacementAbsorber クラスを使用して、PDF ドキュメントからバーコード イメージを検索して抽出できます。画像の使用状況の検索を実行し、ImagePlacements コレクションを介して検索結果へのアクセスを提供します。この方法では、元の解像度でバーコードを認識できます。唯一の欠点は、ベクター形式を正しく認識できない可能性があることです。
以下の手順に従って、PDF ドキュメントからバーコードを見つけて読み取ることができます。
- まず、Document クラスを使用して PDF ドキュメントを読み込みます。
- 次に、ImagePlacementAbsorber クラスのインスタンスを作成します。
- 次に、ループ内の各ページに対して visit() メソッドを呼び出します。
- 次に、ImagePlacements コレクションで見つかったすべての画像をループします。
- 次に、イメージをメモリ ストリームに保存します。
- 次に、ストリーム オブジェクトを使用して BarCodeReader クラスのインスタンスを作成します。
- その後、readBarCodes() メソッドを呼び出して BarCodeResult オブジェクトを取得します。
- 最後に、バーコード情報を表示します。
次のコード例は、Java を使用して PDF からバーコード イメージを検索して読み取る方法を示しています。
// このコード例は、ImagePlacementAbsorber を使用して PDF ドキュメントからバーコードを読み取る方法を示しています。
// ドキュメントへのパス
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";
// PDF ドキュメントを読み込む
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);
// ImagePlacementAbsorber の初期化
com.aspose.pdf.ImagePlacementAbsorber imagePlacementAbsorber = new com.aspose.pdf.ImagePlacementAbsorber();
// ドキュメント内のすべての PDF ページを 1 ページ目から処理する
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
// ページにアクセスして、イメージ エクストラクタを作成します
imagePlacementAbsorber.visit(pdfDoc.getPages().get_Item(i));
// PDF ページからすべての画像を抽出する
for (com.aspose.pdf.ImagePlacement imagePlacement : imagePlacementAbsorber.getImagePlacements()) {
// PDF ページをストリームにレンダリングする
byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
InputStream stream = new ByteArrayInputStream(ms);
// ページ ストリームからバーコードを認識する
BarCodeReader reader = new BarCodeReader(stream);
// 結果を示す
for (BarCodeResult result : reader.readBarCodes()) {
System.out.println("CodeText: " + result.getCodeText());
System.out.println("Symbology type: " + result.getCodeType());
System.out.println(("-------------------------------"));
}
}
}
無料ライセンスを取得する
無料の一時ライセンスを取得して、評価制限なしでライブラリを試すことができます。
結論
この記事で学んだこと
- PDF ドキュメントからバーコードを検出して読み取る方法。
- PDF ドキュメントから画像を抽出するさまざまな方法。
- 埋め込まれたバーコードを Java でデコードします。
Java で PDF からバーコードを読み取る以外に、Aspose.BarCode のドキュメント と Aspose.PDF のドキュメント を使用して、API の詳細を学ぶことができます。ご不明な点がございましたら、無料サポート フォーラムまでお気軽にお問い合わせください。