Cómo leer códigos de barras de documentos PDF

This article was translated from English: Does it need improvement?
Translated
View the article in English

por Hairil Hasyimi Bin Omar

Cómo leer códigos de barras de PDF en C#

  1. Instale la biblioteca de códigos de barras para procesar archivos de códigos de barras.

  2. Crear PdfBarcodeReaderOptions si es necesario.

  3. Utilice el método ReadPdf de BarcodeReader para leer códigos de barras de archivos PDF.

  4. Especifique opciones adicionales de lectura de códigos de barras mediante BarcodeReaderOption.

  5. 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 de las imágenes, también debe utilizarse un método de lectura diferente, que es el siguiente BarcodeReader.ReadPdf() method. Este método acepta varios tipos de entrada de documentos PDF, incluidos los :

  • byte [] matriz : Documento PDF como matriz de bytes.
  • IEnumerable: Documentos PDF como matrices de bytes almacenadas en una colección.
  • MemoryStream : Documentos PDF como tipo MemoryStream.
  • IEnumerable: Documentos PDF como colección de MemoryStream
  • Cadena : Cadena de 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: Cadenas de rutas/nombres de documentos PDF almacenados en una colección.

Aparte de los tipos de entrada mencionados anteriormente, BarcodeReader.ReadPdf() también acepta PdfBarcodeReaderOptions para una lectura más avanzada/mejorada que trataremos en el siguiente subtema. Veamos ahora el siguiente fragmento de código que demuestra el uso 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
VB   C#

A partir del fragmento de código anterior, podemos ver que, para leer códigos de barras utilizando IronBarcode, sólo tenemos que añadir la cadena de ruta de archivo del documento PDF en BarcodeReader.ReadPdf() method to read the barcode value, and store the result in a variable. Si desea imprimir en la consola los valores de todos los códigos de barras que se encuentran en el documento PDF, sólo tiene que utilizar foreach para iterar e imprimir cada elemento encontrado en la variable llamando a ToString() method on them. Además, 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 lectura avanzada de códigos de barras PDF en la que manipularemos PdfBarcodeReaderOptions para mejorar la calidad, la precisión y el rendimiento de la lectura.

Configuración de las opciones del lector de códigos de barras PDF

Al igual que la lectura de códigos de barras a partir de una imagen, la lectura de códigos de barras a partir de un documento PDF también permite a los usuarios modificar o ajustar las propiedades del lector de códigos de barras, denominadas PdfBarcodeReaderOptions. Ajuste de las propiedades en PdfBarcodeReaderOptions será de gran ayuda en la lectura calidad, precisión y también rendimiento. Todas las propiedades ajustables en BarcodeReaderOptions se heredan en PdfBarcodeReaderOptionscon algunas propiedades adicionales para documentos PDF. Para empezar, los usuarios pueden especificar el número de página o colección de números de página del documento PDF en el que desean PdfBarcodeReaderOptions a aplicar, 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)
VB   C#

Descubramos ahora las propiedades adicionales en PdfBarcodeReaderOptions disponibles para ser manipuladas, aparte de las 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 puede establecerse mediante Entero valor.

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á Cadena entrada.

Escala

Esta propiedad permite a los usuarios controlar el factor de escala para escalar la anchura y la altura al convertir a Imagen. Esta propiedad acepta Entero y el valor por defecto de esta propiedad es 3.5. Establecer esta propiedad ayudará a leer códigos de barras pequeños presentes en un documento PDF, ya que al aumentar la escala 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 retoques, veamos cómo aplicarlos en el proyecto de lectura de códigos de barras en 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
VB   C#

El fragmento de código anterior muestra cómo implementar PdfBarcodeReaderOptions propiedades en IronBarcode. En PdfBarcodeReaderOptions primero necesita ser inicializado 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 que queremos que los ajustes de PdfBarcodeReader para solicitarlo. Los usuarios también pueden especificar el número de página del PDF en el campo PdfBarcodeReaderOptions propiedad como Números de página.

Por otro lado, también podemos ver que podemos utilizar propiedades de BarcodeReaderOptions como ExpectMultipleBarcodes y EsperarTiposDeCódigo en PdfBarcodeReaderOptions ya que se heredan de la clase original. Esto ayudará en gran medida al rendimiento y la precisión de la lectura en general. Para aplicar las propiedades de conjunto de PdfBarcodeReaderOptions en la lectura del código de barras, introduzca el nombre de la variable del PdfBarcodeReaderOptions que creamos como segundo argumento en BarcodeReader.ReadPdf() method, with PDF document to be read file path as the first argument.

Hairil related to Lectura avanzada de códigos de barras de documentos PDF

Hairil Hasyimi Bin Omar

Ingeniero de software

Como todos los grandes ingenieros, Hairil es un ávido aprendiz. Está perfeccionando sus conocimientos de C#, Python y Java, y los utiliza para añadir valor a los miembros del equipo de Iron Software. Hairil se unió al equipo de Iron Software desde la Universiti Teknologi MARA de Malasia, donde se licenció en Ingeniería Química y de Procesos.