Cómo Leer Códigos de Barras Desde PDFs en C#

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

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

La lectura de códigos de barras de documentos PDF es detectar y decodificar códigos de barras presentes dentro de las páginas de un archivo PDF. En lugar de escanear manualmente un código de barras impreso, esta tecnología permite la extracción directa de la información codificada de un documento digital. Esto es particularmente útil para automatizar flujos de trabajo que involucran el procesamiento de facturas, etiquetas de envío, informes y otros documentos que utilizan códigos de barras para almacenar datos.

como-encabezado:2(Inicio rápido: Lectura de códigos de barras directamente de un PDF)

Comienza de inmediato utilizando el método ReadPdf de IronBarcode: lee códigos de barras de PDF al instante sin convertir primero a imágenes. Con solo una línea de código, puedes extraer datos de códigos de barras rápidamente y comenzar a desarrollar opciones más avanzadas si es necesario.

Nuget IconEmpieza a crear PDF con NuGet ahora:

  1. Instalar IronBarcode con el gestor de paquetes NuGet

    PM > Install-Package BarCode

  2. Copie y ejecute este fragmento de código.

    var results = IronBarCode.BarcodeReader.ReadPdf("invoice.pdf");
  3. Despliegue para probar en su entorno real

    Empieza a utilizar IronBarcode en tu proyecto hoy mismo con una prueba gratuita
    arrow pointer

como-encabezado:3(Resumen: Flujo de trabajo mínimo)

  1. Instala la biblioteca para procesar códigos de barras.
  2. Crea PdfBarcodeReaderOptions si es necesario.
  3. Utiliza el método ReadPdf de BarcodeReader para leer códigos de barras de PDF.
  4. Especifica opciones adicionales de lectura de códigos de barras usando BarcodeReaderOption.
  5. Extrae valores de códigos de barras.

Leer códigos de barras directamente desde documentos PDF

Aparte de la capacidad de IronBarcodes para leer códigos de barras de imágenes, IronBarcode también se enorgullece de su capacidad para leer códigos de barras de documentos PDF. Esto ahorra a los usuarios la molestia de convertir documentos PDF en imágenes antes de ingresarlos en IronBarcode para leerlos. Dado que los documentos PDF son más intrincados y diferentes de las imágenes, también se debe usar un método de lectura diferente, y ese es el método BarcodeReader.ReadPdf(). Este método acepta varios tipos de entrada de documento PDF, incluyendo:

  • byte[] array: documento PDF como un array de bytes.
  • IEnumerable<Byte[]>: documentos PDF como arrays de bytes almacenados en una colección.
  • MemoryStream: documentos PDF como tipo MemoryStream.
  • IEnumerable<Stream>: documentos PDF como una colección de MemoryStream.
  • String: ruta del documento PDF como una cadena. Si el documento PDF ya está copiado en el proyecto, este sería el nombre del documento PDF en una cadena.
  • IEnumerable<String>: 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 discutiremos en el siguiente 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.ReadPdfs(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.ReadPdfs(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, solo usa un bucle foreach para iterar e imprimir cada elemento encontrado en la variable llamando al método ToString() sobre ellos. Además de eso, el fragmento de código anterior también muestra el uso de una colección de nombres de documentos PDF como argumento en BarcodeReader.ReadPdf().

Leer varios archivos PDF a la vez

Aparte de agregar cada PDF al array individualmente, IronBarCode también introduce un método ReadPdfs que permite a los desarrolladores leer rápidamente una lista de PDF. Esto es útil cuando hay múltiples PDF de los cuales deseas extraer el código de barras y evita agregarlos uno por uno. Veamos un ejemplo a continuación.

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-pdf-read-from-multiple-pdf.cs
using IronBarCode;
using System;
using System.Collections.Generic;
using System.IO;

// Get all PDF files from a directory and add to list
string folderPath = @"PATH_TO_YOUR_FOLDER";
List<string> docs = new List<string>(Directory.GetFiles(folderPath, "*.pdf"));

// Read barcodes from all PDFs
var docResult = BarcodeReader.ReadPdfs(docs);

// Print results
foreach (var doc in docResult)
{
    foreach (var item in doc)
    {
        Console.WriteLine("Barcode " + item.ToString() + " found at page " + item.PageNumber);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

En el código anterior, primero obtenemos todos los archivos PDF de un directorio, luego los agregamos a la List<string>, luego llamamos a ReadPdfs y ponemos docs como nuestro parámetro de entrada. ReadPdfs entonces devuelve un array de BarcodeResults. Finalmente, iteramos sobre docResult e imprimimos los códigos de barras encontrados en cada PDF.

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

Similar a la lectura de códigos de barras de imágenes, leer códigos de barras de documentos PDF también permite a los usuarios ajustar o modificar las propiedades en el lector de códigos de barras llamado PdfBarcodeReaderOptions. Ajustar las propiedades en PdfBarcodeReaderOptions ayudará en gran medida a mejorar la calidad, precisión y rendimiento. Todas las propiedades ajustables en BarcodeReaderOptions están heredadas en PdfBarcodeReaderOptions, con algunas propiedades adicionales para documentos PDF. 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 que las PdfBarcodeReaderOptions se apliquen al instanciar una nueva instancia de PdfBarcodeReaderOptions. El fragmento de código a continuación 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 manipular, además de las disponibles en BarcodeReaderOptions.

DPI

Los usuarios pueden especificar el DPI o Puntos por Pulgada de la imagen del código de barras en un documento PDF. Esto ayudará a leer una imagen de código de barras de baja calidad en un documento PDF. Esta propiedad se puede establecer utilizando un valor Entero.

Números de página

Si los usuarios saben de antemano el número de página que contiene el código de barras que necesita ser leído en un documento PDF, pueden especificarlo en esta propiedad. Hacer esto mejorará en gran medida el rendimiento de lectura de IronBarcode, especialmente para documentos PDF que tienen muchas páginas, ya que IronBarcode no necesitará leer todas las páginas o las páginas que no tienen códigos de barras para leer. 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 sugiere el nombre, esta propiedad permite a los usuarios trabajar con archivos PDF encriptados que requieren entrada de contraseña para acceder al contenido del documento PDF. Sin embargo, tengan en cuenta que IronBarcode no podrá proporcionar la contraseña del documento PDF. Esta propiedad aceptará una entrada del tipo String.

Escala

Esta propiedad permite a los usuarios controlar el factor de escala para escalar el ancho y alto al convertir a una Imagen. Esta propiedad acepta un Entero 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 aumentar la escala hará zoom al documento PDF.

Lectura avanzada de códigos de barras desde 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 muestra cómo implementar las propiedades de PdfBarcodeReaderOptions en IronBarcode. PdfBarcodeReaderOptions primero necesita ser inicializado con un nombre de variable antes de acceder y ajustar las propiedades. En el fragmento de código, podemos ver que la lista de números de página del documento PDF se usó como argumento al inicializar PdfBarcodeReaderOptions. Esto especifica el número de página al que queremos que se apliquen las configuraciones 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 están heredadas de la clase original. Esto ayudará en gran medida al rendimiento general de la lectura y la precisión. Para aplicar las propiedades establecidas de PdfBarcodeReaderOptions en la lectura de códigos de barras, introduce el nombre de la variable de la clase PdfBarcodeReaderOptions que creamos como el segundo argumento en el método BarcodeReader.ReadPdf(), con la ruta del archivo del documento PDF a leer como el primer argumento.

Preguntas Frecuentes

¿Cómo leo códigos de barras de documentos PDF?

Puedes leer códigos de barras de documentos PDF utilizando el método `ReadPdf` de la clase `BarcodeReader` en una aplicación .NET. Este método acepta entradas como arreglos de bytes, flujos de memoria y rutas de archivos.

¿Cuáles son las ventajas de usar PdfBarcodeReaderOptions?

PdfBarcodeReaderOptions proporciona configuraciones para mejorar la calidad y precisión de la lectura de códigos de barras, como ajustar el DPI, especificar números de página y manejar PDFs encriptados con una contraseña.

¿Puedo leer códigos de barras de documentos PDF encriptados?

Sí, puedes leer códigos de barras de documentos PDF encriptados utilizando la propiedad Password en PdfBarcodeReaderOptions para proporcionar la contraseña necesaria.

¿Cómo puedo mejorar la eficiencia de la lectura de códigos de barras de PDFs?

Mejora la eficiencia utilizando PdfBarcodeReaderOptions para especificar números de página y ajustar el factor de escala, lo que reduce la necesidad de convertir PDFs en imágenes, ahorrando tiempo y recursos.

¿Qué formatos de entrada acepta el método ReadPdf?

El método `ReadPdf` acepta varios formatos de entrada, incluidos arreglos byte[], MemoryStream y rutas de archivos en forma de cadena.

¿Es posible leer múltiples códigos de barras de un solo archivo PDF?

Sí, al configurar la propiedad ExpectMultipleBarcodes en PdfBarcodeReaderOptions, puedes leer múltiples códigos de barras de un solo archivo PDF.

¿Cómo puedo especificar la resolución para leer códigos de barras en PDFs?

Especifica la resolución configurando la propiedad DPI en PdfBarcodeReaderOptions a tu valor entero deseado para controlar la calidad del escaneo.

¿Cuál es el papel del factor de escala en la lectura de códigos de barras de PDFs?

El factor de escala, que por defecto es 3.5, se usa para convertir un PDF en una imagen, afectando la calidad y el rendimiento de la lectura de códigos de barras.

¿Puedo usar una biblioteca de códigos de barras .NET para leer códigos de barras de imágenes?

Sí, una biblioteca de códigos de barras .NET como IronBarcode puede leer códigos de barras tanto de imágenes como de archivos PDF, utilizando métodos específicos para cada formato.

¿Qué debo hacer si la lectura de códigos de barras no es lo suficientemente precisa?

Si la lectura de códigos de barras no es precisa, ajusta las opciones de PdfBarcodeReaderOptions cambiando el DPI, el factor de escala o especificando los números de página correctos para mejorar la calidad.

Hairil Hasyimi Bin Omar
Ingeniero de Software
Como todos los grandes ingenieros, Hairil es un ávido aprendiz. Está refinando su conocimiento de C#, Python y Java, usando ese conocimiento para agregar valor a los miembros del equipo en Iron Software. Hairil se unió al equipo de Iron Software desde la Universiti Teknologi MARA en Malasia, donde se ...
Leer más
¿Listo para empezar?
Nuget Descargas 1,979,979 | Version: 2025.11 recién lanzado