PDFドキュメントからバーコードを読み取る方法
How to Read Barcode From PDF in C#
-
バーコードファイルを処理するために、バーコードライブラリをインストールしてください。
-
必要に応じて
PdfBarcodeReaderOptions
を作成します。 -
BarcodeReader
のReadPdf
メソッドを使用して、PDFからバーコードを読み取ります。 -
BarcodeReaderOption
を使用して、追加のバーコード読み取りオプションを指定します。 -
バーコード値の抽出。
申し訳ありませんが、翻訳するコンテンツのテキストを提供してください。その後、英語から日本語に翻訳いたします。
PDFドキュメントからバーコードを直接読み取る
IronBarcodeは画像からバーコードを読み取る能力に加えて、PDFドキュメントからバーコードを読み取る能力にも優れています。 これにより、ユーザーはPDFドキュメントをIronBarcodeで読み取る前に画像に変換する手間を省くことができます。 PDFドキュメントは画像とは異なり、より複雑であるため、別の読み取り方法を使用する必要があります。それがBarcodeReader.ReadPdf()
メソッドです。 このメソッドは、以下を含むさまざまな種類のPDFドキュメント入力を受け付けます:
- byte [] 配列 : バイト配列としてのPDFドキュメント。
- IEnumerable
: PDF documents as byte arrays stored in a collection. - MemoryStream : メモリストリーム型としてのPDFドキュメント。
- IEnumerable
: PDF documents as collection of MemoryStream - String : PDFドキュメントのパス文字列。PDFドキュメントがすでにプロジェクトにコピーされている場合、これは文字列としてPDFドキュメントの名前になります。
- IEnumerable
: PDF document path/name strings stored in a collection.
上記の種類の入力以外にも、BarcodeReader.ReadPdf()
は、より高度で改善された読み取りのためにPdfBarcodeReaderOptions
も受け入れます。これは次のサブトピックで説明します。 では、PDFドキュメント内のバーコードを読み取るためのBarcodeReader.ReadPdf()
メソッドの使用を示す以下のコードスニペットを見てみましょう。
:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-pdf-1.cs
using IronBarCode;
using System;
using System.Collections.Generic;
List<String> docs = new List<String>();
docs.Add(@"pdf_a.pdf");
docs.Add(@"pdf_b.pdf");
var myBarcode = BarcodeReader.ReadPdf(docs); //can also accept individual PDF document file path as argument
foreach (var value in myBarcode)
{
Console.WriteLine(value.ToString());
}
Imports IronBarCode
Imports System
Imports System.Collections.Generic
Private docs As New List(Of String)()
docs.Add("pdf_a.pdf")
docs.Add("pdf_b.pdf")
Dim myBarcode = BarcodeReader.ReadPdf(docs) 'can also accept individual PDF document file path as argument
For Each value In myBarcode
Console.WriteLine(value.ToString())
Next value
上記のコードスニペットから、IronBarcodeを使用してバーコードを読み取るには、PDFドキュメントのファイルパス文字列をBarcodeReader.ReadPdf()
メソッドに追加してバーコードの値を読み取り、その結果を変数に格納できることがわかります。 PDFドキュメント内で見つかったすべてのバーコードの値をコンソールに出力したい場合は、foreach
ループを使用して変数内で見つかった各要素にToString()
メソッドを呼び出して反復処理し、出力します。 さらに、上記のコードスニペットは、BarcodeReader.ReadPdf()
にPDFドキュメント名のコレクションを引数として使用することも示しています。
しかし、PDFドキュメントに含まれているバーコードが読み取れない場合はどうすればよいでしょうか? パフォーマンスが非常に遅い場合はどうすればいいですか? ここで、高度なPDFバーコード読み取りが行われます。ここでは、PdfBarcodeReaderOptions
を操作して読み取りの品質、精度、パフォーマンスを向上させます。
PDFバーコードリーダーオプションの設定
画像からバーコードを読み取るのと同様に、PDFドキュメントからバーコードを読み取ることも、バーコードリーダー内のプロパティを調整できるようにします。これをPdfBarcodeReaderOptions
と呼びます。 PdfBarcodeReaderOptions
のプロパティを調整することで、品質、精度、そしてパフォーマンスを大いに向上させることができます。 BarcodeReaderOptions
のすべての調整可能なプロパティは、PDFドキュメント向けの追加プロパティを伴って PdfBarcodeReaderOptions
に継承されています。 最初に、ユーザーは新しいインスタンスのPdfBarcodeReaderOptions
をインスタンス化するときに、PdfBarcodeReaderOptions
を適用したいPDFドキュメントからのページ番号またはページ番号のコレクションを指定できます。 次のコードスニペットはデモンストレーションを行います
:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-pdf-2.cs
using IronBarCode;
using System.Collections.Generic;
List<int> pageNumber = new List<int>() { 1, 2, 3 };
PdfBarcodeReaderOptions PdfOptions = new PdfBarcodeReaderOptions(pageNumber) // can also use individual page number as argument
{
// Properties of PDF Barcode reader options
};
Imports IronBarCode
Imports System.Collections.Generic
Private pageNumber As New List(Of Integer)() From {1, 2, 3}
Private PdfOptions As New PdfBarcodeReaderOptions(pageNumber)
では、BarcodeReaderOptions
で利用できるものに加えて、操作可能なPdfBarcodeReaderOptions
の追加プロパティを見つけてみましょう。
DPI
ユーザーは、PDFドキュメント内のバーコード画像のDPI(Dots Per Inch、ドットパーインチ)を指定することができます。 これは、PDFドキュメント内の低品質なバーコード画像を読み取るのに役立ちます。 このプロパティは整数値を使用して設定できます。
ページ番号
ユーザーが事前にPDFドキュメント内でバーコードを読み取る必要があるページ番号を知っている場合、このプロパティで指定することができます。 これを行うことで、特にページ数の多いPDFドキュメントの場合、IronBarcodeの読み取り性能が大幅に向上します。IronBarcodeがすべてのページやバーコードがないページを読み取る必要がなくなるためです。 このプロパティは1から始まります。つまり、PDFドキュメントの最初のページは0ではなく1です。
パスワード
名前が示すように、このプロパティは、PDFドキュメントの内容にアクセスするためにパスワード入力が必要な暗号化されたPDFファイルを扱うことをユーザーに可能にします。 ただし、IronBarcode はPDFドキュメントにパスワードを設定することはできませんのでご注意ください。 このプロパティはString入力を受け入れます。
スケール
このプロパティを使用すると、ユーザーは画像に変換する際の幅と高さをスケーリングするためのスケールファクターを制御できます。 このプロパティは整数を値として受け取り、このプロパティのデフォルト値は3.5です。このプロパティを設定することで、PDFドキュメントに存在する小さなバーコードを読み取る際に役立ちます。スケーリングを上げるとPDFドキュメントがズームされます。
PDFドキュメントからの高度なバーコード読み取り
現在、PdfBarcodeReaderOptions
で調整可能なプロパティがわかったので、これをPDFドキュメントのバーコードを読み取るプロジェクトにどのように適用するかを見てみましょう。
:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-pdf-3.cs
using IronBarCode;
using System;
using System.Collections.Generic;
List<int> pageNumber = new List<int>() { 1, 2, 3 };
PdfBarcodeReaderOptions PdfOptions = new PdfBarcodeReaderOptions(pageNumber)
{
DPI = 150,
//PageNumbers = pageNumber, //this property is not needed if page numbers has been specified as the argument in PdfBarcodeReaderOptions
Password = "barcode",
Scale = 3.5,
//properties below are some of the properties inherited from BarcodeReaderOptions
Speed = ReadingSpeed.Detailed,
ExpectBarcodeTypes = BarcodeEncoding.Code93,
ExpectMultipleBarcodes = true
};
var myBarcode = BarcodeReader.ReadPdf(@"pdf_a_filepath.pdf", PdfOptions);
foreach (var value in myBarcode)
{
Console.WriteLine(value.ToString());
}
Imports IronBarCode
Imports System
Imports System.Collections.Generic
Private pageNumber As New List(Of Integer)() From {1, 2, 3}
Private PdfOptions As New PdfBarcodeReaderOptions(pageNumber) With {
.DPI = 150,
.Password = "barcode",
.Scale = 3.5,
.Speed = ReadingSpeed.Detailed,
.ExpectBarcodeTypes = BarcodeEncoding.Code93,
.ExpectMultipleBarcodes = True
}
Private myBarcode = BarcodeReader.ReadPdf("pdf_a_filepath.pdf", PdfOptions)
For Each value In myBarcode
Console.WriteLine(value.ToString())
Next value
上記のコードスニペットは、IronBarcodeでPdfBarcodeReaderOptions
プロパティを実装する方法を示しています。 PdfBarcodeReaderOptions
は、プロパティにアクセスして調整する前に、まず変数名で初期化する必要があります。 コードスニペットでも、PDFドキュメントのページ番号のリストがPdfBarcodeReaderOptions
の初期化時に引数として使用されたことがわかります。 これは、PdfBarcodeReader
の設定を適用したいページ番号を指定します。 ユーザーは、PdfBarcodeReaderOptions
プロパティで PageNumbers
としてPDFページ番号を指定することもできます。
一方で、PdfBarcodeReaderOptions
では、もともとのクラスから継承されているため、BarcodeReaderOptions
のExpectMultipleBarcodes
やExpectBarcodeTypes
などのプロパティを使用できることもわかります。 これは全体的な読み取りパフォーマンスと精度に大きく役立ちます。 バーコードの読み取りにおいてPdfBarcodeReaderOptions
のセットプロパティを適用するには、BarcodeReader.ReadPdf()
メソッドの第2引数として作成したPdfBarcodeReaderOptions
クラスの変数名を入力し、読み取るPDF文書のファイルパスを第1引数として指定します。