前回の投稿 で説明したように、バーコードを生成して PDF ドキュメントに追加できます。場合によっては、PDF ドキュメントに埋め込まれたバーコードをプログラムで検出して読み取る必要があります。請求書、領収書、レポートなどの PDF ドキュメントからバーコードや QR コードの形式で埋め込まれた情報をデコードするのに役立ちます。この記事では、C# を使用して PDF ドキュメントからバーコードを読み取る方法を学習します。
この記事は、次のトピックをカバーするものとします。
- PDF からバーコードを読み取る C# API
- PDF からバーコードを読み取る
- PDF を画像に変換し、バーコードを読み取る
- PngDevice を使用して PDF からバーコードを読み取る
- PDF からバーコードを抽出して読み取る
- PDF からバーコード イメージを検索して読み取る
PDF からバーコードを読み取る C# API
PDF ドキュメントからバーコードを読み取るには、2 段階の手順に従います。まず、Aspose.PDF for .NET API を使用して PDF ドキュメントを読み込み、そのページをラスター イメージにレンダリングします。その後、Aspose.BarCode for .NET API を使用して、レンダリングされた画像からバーコードを読み取ります。
APIのDLLをダウンロードするか、NuGetを使ってインストールしてください。
PM> Install-Package Aspose.BarCode
PM> Install-Package Aspose.PDF
C# を使用して PDF からバーコードを読み取る
Aspose.PDF API の Document クラスは、PDF ドキュメントを表します。 API の ConvertToPNGMemoryStream() 関数は、PDF ページを PNG メモリ ストリームにレンダリングします。 Aspose.BarCode API の BarCodeReader クラスを使用すると、ReadBarCodes 操作を実行してバーコードを検出できます。 BarCodeResult クラスは、検出されたバーコード情報 (バーコード タイプ、コード テキスト、領域、その他のパラメーターなど) を格納します。
以下の手順に従って、PDF ドキュメントの任意のページに埋め込まれたバーコード イメージを読み取ることができます。
- まず、Document クラスを使用して PDF ドキュメントを読み込みます。
- 次に、すべてのページをループしてメモリ ストリームにレンダリングします。
- 次に、ストリーム オブジェクトを使用して BarCodeReader クラスのインスタンスを作成します。
- その後、ReadBarCodes() メソッドを呼び出して BarCodeResult オブジェクトを取得します。
- 最後に、バーコード情報を表示します。
次のコード例は、C# を使用して PDF ドキュメントからバーコードを読み取る方法を示しています。
// このコード例は、C# を使用して PDF ドキュメントからバーコードを読み取る方法を示しています。
// ドキュメントへのパス
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";
// PDF ドキュメントを読み込む
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);
// 1 ページ目からすべての PDF ページに進む
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
// PDF ページをストリームにレンダリングする
MemoryStream ms = pdfDoc.Pages[i].ConvertToPNGMemoryStream();
ms.Position = 0;
// ページのレンダリング画像からバーコードを認識
BarCodeReader reader = new BarCodeReader(ms);
// 結果を示す
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.WriteLine("Codetext found: " + result.CodeText);
Console.WriteLine("Symbology: " + result.CodeType);
Console.WriteLine("-------------------------------");
}
}
Codetext found: Aspose.Barcode Pdf417 Example
Symbology: Pdf417
-------------------------------
Codetext found: Aspose.Barcode QR Example
Symbology: QR
-------------------------------
Codetext found: Aspose.Barcode DataMatrix Example
Symbology: DataMatrix
-------------------------------
このブログ投稿で使用されている バーコード付きの入力 PDF ドキュメントをダウンロード してください。
C# を使用して PDF を画像に変換し、バーコードを読み取る
PdfConverter クラスを使用して PDF ページを画像に変換することにより、PDF ドキュメントからバーコードを読み取ることができます。 PDF ファイルの各ページを画像に変換し、変換された画像からバーコード情報を読み取ります。
以下の手順に従って、変換された PDF ページからバーコードを読み取ることができます。
- まず、Document クラスを使用して PDF ドキュメントを読み込みます。
- 次に、PdfConverter クラスのインスタンスを作成します。
- 必要に応じて、BarcodeOptimization などのレンダリング オプションを設定します。
- 次に、画像の解像度を設定します。
- 次に、StartPage と EndPage を指定して、ページの範囲をイメージにレンダリングします。
- 次に、DoConvert() メソッドを呼び出して、選択したページを画像にレンダリングします。
- 次に、画像を保存してループでストリーミングします。
- 次に、ストリーム オブジェクトを使用して BarCodeReader クラスのインスタンスを作成します。
- その後、ReadBarCodes() メソッドを呼び出して BarCodeResult オブジェクトを取得します。
- 最後に、バーコード情報を表示します。
次のコード例は、C# を使用して PDF ページを画像に変換し、バーコードを読み取る方法を示しています。
// 次のコード例は、PDF Converter を使用して PDF ページを画像に変換し、C# を使用してバーコードを読み取る方法を示しています。
// ドキュメントへのパス
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";
// PDF ドキュメントを読み込む
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);
// PdfConvertor を初期化する
Aspose.Pdf.Facades.PdfConverter pdfConverter = new Aspose.Pdf.Facades.PdfConverter(pdfDoc);
// バーコード最適化の設定
pdfConverter.RenderingOptions.BarcodeOptimization = true;
// ページ解像度の設定
// 300 dpi が標準解像度です
pdfConverter.Resolution = new Aspose.Pdf.Devices.Resolution(300);
// すべてのページを画像にレンダリングするように設定する
pdfConverter.StartPage = 1; //starts from page 1
pdfConverter.EndPage = pdfConverter.Document.Pages.Count;
// 選択したページを画像にレンダリング
pdfConverter.DoConvert();
while (pdfConverter.HasNextImage())
{
// 現在のページをメモリ ストリーム イメージにレンダリングする
MemoryStream ms = new MemoryStream();
pdfConverter.GetNextImage(ms, ImageFormat.Png);
ms.Position = 0;
// ページのレンダリング画像からバーコードを認識
BarCodeReader reader = new BarCodeReader(ms);
// 結果を示す
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.WriteLine("Codetext found: " + result.CodeText);
Console.WriteLine("Symbology: " + result.CodeType);
Console.WriteLine("-------------------------------");
}
}
C# で PngDevice を使用して PDF からバーコードを読み取る
前の方法に似た別の方法を次に示します。唯一の違いは、このメソッドでは、API の PngDevice クラスを使用して PDF ドキュメントのページを画像に変換することです。 PDFドキュメントのページをPNG画像に変換できます。
以下の手順に従って、変換された PDF ページからバーコードを PNG 画像として読み取ることができます。
- まず、Document クラスを使用して PDF ドキュメントを読み込みます。
- 次に、PngDevice クラスのインスタンスを作成します。
- 次に、すべてのページをループし、Process() メソッドを呼び出してストリームにレンダリングします。
- 次に、ストリーム オブジェクトを使用して BarCodeReader クラスのインスタンスを作成します。
- その後、ReadBarCodes() メソッドを呼び出して BarCodeResult オブジェクトを取得します。
- 最後に、バーコード情報を表示します。
次のコード例は、PDF ページを PNG 画像に変換し、C# を使用してバーコードを読み取る方法を示しています。
// 次のコード例は、PngDevice を使用して PDF ページを画像に変換し、C# を使用してバーコードを読み取る方法を示しています。
// ドキュメントへのパス
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";
// PDF ドキュメントを読み込む
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);
// 300 dpi の標準解像度で PNG デバイスを作成する
Aspose.Pdf.Devices.PngDevice pngDevice = new Aspose.Pdf.Devices.PngDevice(new Aspose.Pdf.Devices.Resolution(300));
// 1ページから始まるすべてのPDFページに進みます
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
// PDF ページをストリームにレンダリングする
MemoryStream ms = new MemoryStream();
pngDevice.Process(pdfDoc.Pages[i], ms);
ms.Position = 0;
// ページのレンダリング画像からバーコードを認識
BarCodeReader reader = new BarCodeReader(ms);
// 結果を示す
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.WriteLine("Codetext found: " + result.CodeText);
Console.WriteLine("Symbology: " + result.CodeType);
Console.WriteLine("-------------------------------");
}
}
C# を使用して PDF からバーコードを抽出して読み取る
PdfExtractor クラスを使用して、PDF ページに埋め込まれたバーコード画像も認識できます。 PDF から画像を抽出し、抽出した画像からバーコード情報を読み取ります。
以下の手順に従って、抽出した画像からバーコードを読み取ることができます。
- まず、PdfExtractor クラスのインスタンスを作成します。
- 次に、BindPdf() メソッドを使用して入力 PDF ドキュメントをバインドします。
- 次に、画像を抽出するページ範囲を設定します。
- 次に、ExtractImage() メソッドを呼び出して画像を抽出します。
- 次に、画像を保存してループでストリーミングします。
- 次に、ストリーム オブジェクトを使用して BarCodeReader クラスのインスタンスを作成します。
- その後、ReadBarCodes() メソッドを呼び出して BarCodeResult オブジェクトを取得します。
- 最後に、バーコード情報を表示します。
次のコード例は、C# を使用して PDF ドキュメントからバーコード イメージを抽出して読み取る方法を示しています。
// 次のコード例は、PdfExtractor を使用して PDF ページを画像に変換し、C# を使用してバーコードを読み取る方法を示しています。
// ドキュメントへのパス
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";
// PDF ドキュメントを製本する
Aspose.Pdf.Facades.PdfExtractor pdfExtractor = new Aspose.Pdf.Facades.PdfExtractor();
pdfExtractor.BindPdf(file);
// 画像抽出のページ範囲を設定する
pdfExtractor.StartPage = 1;
pdfExtractor.EndPage = 3;
// 画像を抽出する
pdfExtractor.ExtractImage();
// 画像を保存してループでストリーミングする
while (pdfExtractor.HasNextImage())
{
// 画像をストリームに保存
MemoryStream imageStream = new MemoryStream();
pdfExtractor.GetNextImage(imageStream);
imageStream.Position = 0;
// 上の画像ストリームからバーコードを認識
BarCodeReader reader = new BarCodeReader(imageStream);
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.WriteLine("Codetext found: " + result.CodeText);
Console.WriteLine("Symbology: " + result.CodeType);
Console.WriteLine("-------------------------------");
}
}
C# を使用して PDF からバーコード画像を検索して読み取る
ImagePlacementAbsorber クラスを使用して、PDF ドキュメントからバーコード イメージを検索して抽出することもできます。画像配置オブジェクトの吸収体オブジェクトを表します。画像の使用状況の検索を実行し、ImagePlacements コレクションを介して検索結果へのアクセスを提供します。この方法は、元の解像度でバーコードを認識するのに役立ちます。ベクター形式を正しく認識しない場合があります。
以下の手順に従って、PDF ドキュメントからバーコードを見つけて読み取ることができます。
- まず、Document クラスを使用して PDF ドキュメントを読み込みます。
- 次に、ImagePlacementAbsorber クラスのインスタンスを作成します。
- 次に、ループ内の各ページに対して Visit() メソッドを呼び出します。
- 次に、ImagePlacements コレクションで見つかったすべての画像をループします。
- 次に、イメージをメモリ ストリームに保存します。
- 次に、ストリーム オブジェクトを使用して BarCodeReader クラスのインスタンスを作成します。
- その後、ReadBarCodes() メソッドを呼び出して BarCodeResult オブジェクトを取得します。
- 最後に、バーコード情報を表示します。
次のコード例は、C# を使用して PDF からバーコード イメージを検索して読み取る方法を示しています。
// このコード例は、ImagePlacementAbsorber を使用して PDF ドキュメントからバーコードを読み取る方法を示しています。
// ドキュメントへのパス
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";
// PDF ドキュメントを読み込む
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);
// ImagePlacementAbsorber の初期化
Aspose.Pdf.ImagePlacementAbsorber imagePlacementAbsorber = new Aspose.Pdf.ImagePlacementAbsorber();
// ドキュメント内のすべての PDF ページを 1 ページ目から処理する
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
// ページにアクセスして、イメージ エクストラクタを作成します
imagePlacementAbsorber.Visit(pdfDoc.Pages[i]);
// PDF ページからすべての画像を抽出する
foreach (Aspose.Pdf.ImagePlacement imagePlacement in imagePlacementAbsorber.ImagePlacements)
{
// PDF ページからストリームへの画像の変換
MemoryStream ms = new MemoryStream();
imagePlacement.Save(ms, ImageFormat.Png);
ms.Position = 0;
// ページの抽出画像からバーコードを認識
BarCodeReader reader = new BarCodeReader(ms);
// 結果を示す
foreach (BarCodeResult result in reader.ReadBarCodes())
{
Console.WriteLine("Codetext found: " + result.CodeText);
Console.WriteLine("Symbology: " + result.CodeType);
Console.WriteLine("-------------------------------");
}
}
}
無料ライセンスを取得する
無料の一時ライセンスを取得して、評価制限なしでライブラリを試すことができます。
結論
この記事では、C# で PDF ドキュメントからバーコードを読み取る方法を学びました。また、PDF ドキュメントから画像を抽出し、埋め込まれたバーコードをプログラムでデコードするためのさまざまなアプローチと方法も見てきました。さらに、Aspose.BarCode のドキュメント と Aspose.PDF のドキュメント を使用して API の詳細を学ぶことができます。ご不明な点がございましたら、フォーラムまでお気軽にお問い合わせください。