Cómo leer códigos de barras de documentos PDF
How to Read Barcode From PDF in C#
-
Instale la biblioteca de códigos de barras para procesar archivos de códigos de barras.
-
Cree
PdfBarcodeReaderOptions
si es necesario. -
Utilice el método
ReadPdf
deBarcodeReader
para leer códigos de barras de archivos PDF. -
Especifique opciones adicionales de lectura de códigos de barras usando
BarcodeReaderOption
. -
Extraer valores de códigos de barras.
<
Lea directamente códigos de barras de documentos PDF
Aparte de la capacidad de IronBarcodes para leer códigos de barras a partir de imágenes, IronBarcode también se enorgullece de su capacidad para leer códigos de barras a partir de documentos PDF. Esto ahorra a los usuarios la molestia de convertir documentos PDF en imágenes antes de introducirlos en IronBarcode para su lectura. Dado que los documentos PDF son más complejos y diferentes a las imágenes, también se debería utilizar un método de lectura diferente, que es el método BarcodeReader.ReadPdf()
. Este método acepta varios tipos de entrada de documentos PDF, incluidos los :
- byte[] array : documento PDF como un arreglo de bytes.
- IEnumerable
: PDF documents as byte arrays stored in a collection. - MemoryStream: documentos PDF como tipo MemoryStream.
- IEnumerable
: PDF documents as collection of MemoryStream - Cadena: Cadena de la ruta del documento PDF. Si el documento PDF ya está copiado en el proyecto, este sería el nombre del documento PDF en cadena.
- IEnumerable
: PDF document path/name strings stored in a collection.
Aparte de los tipos de entrada mencionados anteriormente, BarcodeReader.ReadPdf()
también acepta PdfBarcodeReaderOptions
para una lectura más avanzada/mejorada, la cual discutiremos en el próximo subtema. Ahora, veamos el fragmento de código a continuación que demuestra el uso del método BarcodeReader.ReadPdf()
para leer códigos de barras en documentos PDF.
: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
Del fragmento de código anterior, podemos ver que, para leer códigos de barras usando IronBarcode, simplemente podemos agregar la cadena de la ruta del archivo del documento PDF en el método BarcodeReader.ReadPdf()
para leer el valor del código de barras y almacenar el resultado en una variable. Si deseas imprimir los valores de todos los códigos de barras encontrados en el documento PDF en la consola, simplemente utiliza el bucle foreach
para iterar e imprimir cada elemento encontrado en la variable llamando al método ToString()
en ellos. Además de eso, el fragmento de código anterior también demuestra el uso de una colección de nombres de documentos PDF como argumento en BarcodeReader.ReadPdf()
.
Pero, ¿y si no se pudieran leer los códigos de barras del documento PDF? ¿Y si el rendimiento es tan lento? Aquí es donde tiene lugar la lectura avanzada de código de barras en PDF, en la que manipularemos PdfBarcodeReaderOptions
para mejorar la calidad, precisión y rendimiento de la lectura.
Configuración de las opciones del lector de códigos de barras PDF
Igual que leer códigos de barras desde una imagen, leer códigos de barras desde un documento PDF también permite a los usuarios ajustar o modificar las propiedades en el lector de códigos de barras, denominado PdfBarcodeReaderOptions
. Ajustar las propiedades en PdfBarcodeReaderOptions
ayudará enormemente en la lectura de la calidad, la precisión y también el rendimiento. Todas las propiedades ajustables en BarcodeReaderOptions
se heredan en PdfBarcodeReaderOptions
, con algunas propiedades adicionales para documentos PDF. Para empezar, los usuarios pueden especificar el número de página o conjunto de números de página del documento PDF en el cual desean que el PdfBarcodeReaderOptions
se aplique, al instanciar una nueva instancia de PdfBarcodeReaderOptions
. El siguiente fragmento de código lo demuestra
: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)
Ahora descubramos las propiedades adicionales en PdfBarcodeReaderOptions
disponibles para ser manipuladas, aparte de aquellas disponibles en BarcodeReaderOptions
DPI
Los usuarios pueden especificar los DPI o puntos por pulgada de la imagen del código de barras en un documento PDF. Esto ayudará en la lectura de una imagen de código de barras de baja calidad en un documento PDF. Esta propiedad se puede establecer utilizando un valor de Integer.
Números de página
Si los usuarios conocen de antemano el número de página que contiene el código de barras que debe leerse en un documento PDF, pueden especificarlo en esta propiedad. Hacer esto mejorará mucho el rendimiento de lectura de IronBarcode, especialmente en documentos PDF que tienen muchas páginas, ya que IronBarcode no necesitaría leer todas las páginas o páginas que no tienen códigos de barras para ser leídas. Esta propiedad está basada en 1, lo que significa que la primera página del documento PDF es 1 en lugar de 0.
Contraseña
Como su nombre indica, esta propiedad permite a los usuarios trabajar con archivos PDF cifrados que requieren la introducción de una contraseña para acceder al contenido del documento PDF. Sin embargo, tenga en cuenta que IronBarcode no podrá proporcionar la contraseña de los documentos PDF. Esta propiedad aceptará entrada de tipo String.
Escala
Esta propiedad permite a los usuarios controlar el factor de escala para escalar el ancho y la altura al convertir a imagen. Esta propiedad acepta Integer como valor y el valor predeterminado para esta propiedad es 3.5. Configurar esta propiedad ayudará a leer códigos de barras pequeños presentes en un documento PDF, ya que al escalar se ampliará el documento PDF.
Lectura avanzada de códigos de barras de documentos PDF
Ahora que conocemos las propiedades en PdfBarcodeReaderOptions
disponibles para ajustes y modificaciones, veamos cómo aplicarlas en el proyecto para leer códigos de barras en un documento 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
El fragmento de código anterior demuestra cómo implementar las propiedades de PdfBarcodeReaderOptions
en IronBarcode. Primero es necesario inicializar PdfBarcodeReaderOptions
con un nombre de variable antes de acceder y ajustar las propiedades. En el fragmento de código también podemos ver que la lista de números de página del documento PDF se utilizó como argumento al inicializar PdfBarcodeReaderOptions
. Esto especifica el número de página al que queremos que se apliquen los ajustes de PdfBarcodeReader
. Los usuarios también pueden especificar el número de página del PDF en la propiedad PdfBarcodeReaderOptions
como PageNumbers
.
Por otro lado, también podemos ver que podemos usar propiedades de BarcodeReaderOptions
como ExpectMultipleBarcodes
y ExpectBarcodeTypes
en PdfBarcodeReaderOptions
ya que son heredadas de la clase original. Esto ayudará en gran medida al rendimiento y la precisión de la lectura en general. Para aplicar las propiedades establecidas de PdfBarcodeReaderOptions
en la lectura del código de barras, ingrese el nombre de variable de la clase PdfBarcodeReaderOptions
que creamos como segundo argumento en el método BarcodeReader.ReadPdf()
, con la ruta del archivo del documento PDF a ser leído como primer argumento.