如何從PDF文件中讀取條碼
如何在 C# 中從 PDF 讀取條碼
安裝條碼庫來處理條碼文件。
如果需要,創建
PdfBarcodeReaderOptions
。使用
BarcodeReader
的ReadPdf
方法來讀取 PDF 中的條碼。使用
BarcodeReaderOption
指定附加的條碼讀取選項。提取條碼值。
<
直接從 PDF 文件讀取條碼
除了 IronBarcode 能夠從圖像讀取條碼的能力之外,IronBarcode 還自豪於其能夠從 PDF 文件讀取條碼的能力。 這省去了用戶在將PDF文件轉換為圖像之前餵入IronBarcode進行讀取的麻煩。 PDF文件比圖像更複雜且不同,因此應該使用不同的讀取方法,那就是 BarcodeReader.ReadPdf()
method. 此方法接受各種類型的PDF文件輸入,包括:
- 位元組[] 陣列 將 PDF 文件作為位元組陣列。
- IEnumerable
: PDF 文件作為位元組陣列儲存在集合中。 - 記憶體流 將 PDF 文件作為 MemoryStream 類型。
- IEnumerable
: 將PDF文件作為MemoryStream集合 - 字串 :PDF文件路徑字符串。如果PDF文件已經複製到項目中,這將是PDF文件的字符串名稱。
- IEnumerable
: PDF 文件路徑/名稱字串存儲在集合中。
除了上述提到的輸入類型以外, BarcodeReader.ReadPdf()
也接受 PdfBarcodeReaderOptions
我們將在下一個子主題中討論更進階/改進的閱讀方式。 現在,讓我們看看下面的代碼片段,它展示了如何使用 BarcodeReader.ReadPdf()
method to read barcodes in PDF documents.
: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()
method to read the barcode value, and store the result in a variable. 如果您希望將PDF文件中找到的所有條碼的值打印到控制台上,只需使用 foreach
遍歷循環並通過呼叫列印變量中找到的每個元素 字串轉換()
method on them. 除此之外,上面的代碼片段還展示了如何使用一組PDF文件名作為參數 BarcodeReader.ReadPdf()
.
但如果PDF文件中的條碼無法讀取怎麼辦? 如果性能太慢怎麼辦? 這是在哪裡 進階PDF條碼讀取 發生,我們將操作 PdfBarcodeReaderOptions
提升閱讀品質、準確性和性能。
設定 PDF 條碼讀取器選項
與從圖像讀取條碼相同,從PDF文件讀取條碼也允許用戶調整條碼讀取器中的屬性,稱為 PdfBarcodeReaderOptions
. 調整屬性在 PdfBarcodeReaderOptions
將大大幫助閱讀 品質、準確性及效能. 所有可調整的屬性在 條碼讀取器選項
繼承於 PdfBarcodeReaderOptions
,並為PDF文件添加了一些額外的屬性。 首先,使用者可以指定 頁碼 或 頁碼集合 來自他們想要的 PDF 文件 PdfBarcodeReaderOptions
要套用時,當實例化一個新實例時 PdfBarcodeReaderOptions
. 下面的代碼片段示例
: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)
現在讓我們來探索另外的屬性 PdfBarcodeReaderOptions
可供操作,除了那些在 條碼讀取器選項
解析度
用戶可在PDF文件中指定條碼圖像的DPI(每英寸點數)。 這將有助於讀取 PDF 文件中的低質量條形碼圖像。 此屬性可以設置使用 整數 值。
頁碼
如果使用者事先知道需要讀取條碼的PDF文件中的頁碼,使用者可以在此屬性中指定它們。 這樣做將大大提高IronBarcode的閱讀性能,特別是對於那些有很多頁面的PDF文件,因為IronBarcode不需要讀取所有頁面或者那些不需要讀取條碼的頁面。 此屬性為基於1的,意味著PDF文件的第一頁是1而不是0。
密碼
如名稱所示,此屬性允許用戶處理需要密碼輸入才能訪問PDF文件內容的加密PDF文件。 請注意,IronBarcode 將無法為 PDF 文件設定密碼。 此屬性將接受 字串 輸入。
規模
此屬性允許用戶控制 縮放係數 轉換為圖片時用於縮放寬度和高度。 此屬性接受 整數 該屬性的值和預設值為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
上面的程式碼片段展示了如何實現 PdfBarcodeReaderOptions
IronBarcode 的屬性。 這 PdfBarcodeReaderOptions
首先需要使用變數名稱初始化,然後才能訪問和調整屬性。 在代碼片段中,我們也可以看到,PDF文件的頁碼列表在初始化時被用作參數。 PdfBarcodeReaderOptions
. 這指定了我們希望設定的頁碼。 PdfBarcodeReader
申請。 使用者也可以指定PDF頁碼。 PdfBarcodeReaderOptions
屬性為 頁碼
.
另一方面,我們也可以看到我們可以使用屬性來自 條碼讀取器選項
例如 預期多個條碼
和 期望條碼類型
在 PdfBarcodeReaderOptions
因為它們是從原始類別繼承的。 這將大大幫助提升整體閱讀效能和準確性。 要應用設定的屬性 PdfBarcodeReaderOptions
在條碼讀取中,輸入變量名稱 PdfBarcodeReaderOptions
作為第二個參數創建的類。 BarcodeReader.ReadPdf()
method, with PDF document to be read file path as the first argument.