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

Hairil related to Cómo leer códigos de barras de documentos PDF
Hairil Hasyimi Bin Omar
19 de marzo, 2023
Actualizado 20 de octubre, 2024
Compartir:
This article was translated from English: Does it need improvement?
Translated
View the article in English

How to Read Barcode From PDF in C#

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

  2. Cree 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 usando 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 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
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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.

Hairil related to Lectura avanzada de códigos de barras de documentos PDF
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.