Leer código de barras de PDF en C#

Podemos generar y agregar códigos de barras a documentos PDF como se describe en mi publicación anterior. En ciertos casos, es posible que necesitemos detectar y leer los códigos de barras incrustados en documentos PDF mediante programación. Ayuda a decodificar información incrustada en forma de códigos de barras y códigos QR de documentos PDF como facturas, recibos o informes. En este artículo, aprenderemos cómo leer un código de barras de un documento PDF usando C#.

El artículo cubrirá los siguientes temas:

  1. API C# para leer código de barras desde PDF
  2. Leer código de barras de PDF
  3. Convertir PDF a imagen y leer códigos de barras
  4. Leer códigos de barras de PDF usando PngDevice
  5. Extraer y leer código de barras de PDF
  6. Buscar y leer imágenes de código de barras desde PDF

C# API para leer código de barras desde PDF

Seguiremos un procedimiento de dos pasos para leer códigos de barras de documentos PDF. En primer lugar, usaremos la API Aspose.PDF para .NET para cargar un documento PDF, luego representaremos sus páginas en imágenes rasterizadas. Después de eso, leeremos el código de barras de las imágenes renderizadas usando la API Aspose.BarCode for .NET.

Descargue la DLL de la API o instálela mediante NuGet.

PM> Install-Package Aspose.BarCode
PM> Install-Package Aspose.PDF

Leer código de barras de PDF usando C#

La clase Documento de la API de Aspose.PDF representa un documento PDF. La función ConvertToPNGMemoryStream() de la API convierte una página PDF en un flujo de memoria PNG. La clase BarCodeReader de la API Aspose.BarCode nos permite realizar operaciones ReadBarCodes para detectar códigos de barras. La clase BarCodeResult almacena la información del código de barras detectado, como el tipo de código de barras, el texto del código, la región y otros parámetros.

Podemos leer imágenes de códigos de barras incrustadas en cualquiera de las páginas del documento PDF siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cargue un documento PDF utilizando la clase Documento.
  2. A continuación, recorra todas las páginas y reprodúzcalas en el flujo de memoria.
  3. Luego, cree una instancia de la clase BarCodeReader con un objeto de flujo.
  4. Después de eso, llame al método ReadBarCodes() para obtener el objeto BarCodeResult.
  5. Finalmente, muestra la información del código de barras.

El siguiente ejemplo de código muestra cómo leer un código de barras de un documento PDF usando C#.

// Este ejemplo de código demuestra cómo leer un código de barras de un documento PDF usando C#.
// La ruta al documento
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Cargar un documento PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Continúe con todas las páginas PDF a partir de la página 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // Renderizar página PDF a la secuencia
    MemoryStream ms = pdfDoc.Pages[i].ConvertToPNGMemoryStream();
    ms.Position = 0;

    // Reconocer códigos de barras de la imagen renderizada de la página
    BarCodeReader reader = new BarCodeReader(ms);
    
    // Mostrar resultados
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine("Codetext found: " + result.CodeText);
        Console.WriteLine("Symbology: " + result.CodeType);
        Console.WriteLine("-------------------------------");
    }
}
Codetext found: Aspose.Barcode Pdf417 Example
Symbology: Pdf417
-------------------------------
Codetext found: Aspose.Barcode QR Example
Symbology: QR
-------------------------------
Codetext found: Aspose.Barcode DataMatrix Example
Symbology: DataMatrix
-------------------------------

Descargue el documento PDF de entrada con códigos de barras utilizado en esta publicación de blog.

Convierta PDF a imagen y lea códigos de barras usando C#

Podemos leer códigos de barras del documento PDF convirtiendo páginas PDF en imágenes usando la clase PdfConverter. Permite convertir cada página de un archivo PDF en una imagen, y luego leeremos la información del código de barras de la imagen convertida.

Podemos leer códigos de barras de páginas PDF convertidas siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cargue un documento PDF utilizando la clase Documento.
  2. A continuación, cree una instancia de la clase PdfConverter.
  3. Opcionalmente, establezca opciones de representación como BarcodeOptimization.
  4. Luego, establezca la resolución de la imagen.
  5. A continuación, especifique StartPage y EndPage para representar un rango de páginas en imágenes.
  6. Luego, llame al método DoConvert() para convertir las páginas seleccionadas en imágenes.
  7. A continuación, guarde la imagen para transmitirla en bucle.
  8. Luego, cree una instancia de la clase BarCodeReader con el objeto de flujo.
  9. Después de eso, llame al método ReadBarCodes() para obtener el objeto BarCodeResult.
  10. Finalmente, muestra la información del código de barras.

El siguiente ejemplo de código muestra cómo convertir páginas PDF en imágenes y leer códigos de barras usando C#.

// El siguiente ejemplo de código muestra cómo convertir páginas PDF en imágenes con PDF Converter y cómo leer códigos de barras usando C#.
// La ruta al documento
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Cargar un documento PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Inicializar un PdfConvertor
Aspose.Pdf.Facades.PdfConverter pdfConverter = new Aspose.Pdf.Facades.PdfConverter(pdfDoc);

// Establecer optimización de código de barras
pdfConverter.RenderingOptions.BarcodeOptimization = true;

// Establecer resolución de página
// 300 ppp es la resolución estándar
pdfConverter.Resolution = new Aspose.Pdf.Devices.Resolution(300);

// Configurar todas las páginas para que se conviertan en imágenes
pdfConverter.StartPage = 1; //starts from page 1
pdfConverter.EndPage = pdfConverter.Document.Pages.Count;

// Renderizar páginas seleccionadas en las imágenes
pdfConverter.DoConvert();
while (pdfConverter.HasNextImage())
{
    // Renderizar la página actual a la imagen de flujo de memoria
    MemoryStream ms = new MemoryStream();
    pdfConverter.GetNextImage(ms, ImageFormat.Png);
    ms.Position = 0;

    // Reconocer códigos de barras de la imagen renderizada de la página
    BarCodeReader reader = new BarCodeReader(ms);
    
    // Mostrar resultados
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine("Codetext found: " + result.CodeText);
        Console.WriteLine("Symbology: " + result.CodeType);
        Console.WriteLine("-------------------------------");
    }
}

Lea códigos de barras de PDF usando PngDevice en C#

Aquí va otro método similar al anterior. La única diferencia es que en este método convertiremos las páginas del documento PDF en imágenes utilizando la clase PngDevice de la API. Permite convertir páginas del documento PDF en imágenes PNG.

Podemos leer códigos de barras de páginas PDF convertidas como imágenes PNG siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cargue un documento PDF utilizando la clase Documento.
  2. A continuación, cree una instancia de la clase PngDevice.
  3. Luego, recorra todas las páginas y llame al método Process() para representarlo en la secuencia.
  4. A continuación, cree una instancia de la clase BarCodeReader con el objeto de flujo.
  5. Después de eso, llame al método ReadBarCodes() para obtener el objeto BarCodeResult.
  6. Finalmente, muestra la información del código de barras.

El siguiente ejemplo de código muestra cómo convertir páginas PDF en imágenes PNG y leer códigos de barras usando C#.

// El siguiente ejemplo de código muestra cómo convertir páginas PDF en imágenes con PngDevice y leer códigos de barras usando C#.
// La ruta al documento
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Cargar un documento PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Cree un dispositivo PNG con una resolución estándar de 300 ppp
Aspose.Pdf.Devices.PngDevice pngDevice = new Aspose.Pdf.Devices.PngDevice(new Aspose.Pdf.Devices.Resolution(300));

// Continúe con todas las páginas del PDF a partir de la página 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // Renderizar página PDF a la secuencia
    MemoryStream ms = new MemoryStream();
    pngDevice.Process(pdfDoc.Pages[i], ms);
    ms.Position = 0;

    // Reconocer el código de barras de la imagen renderizada de la página
    BarCodeReader reader = new BarCodeReader(ms);

    // Mostrar resultados
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine("Codetext found: " + result.CodeText);
        Console.WriteLine("Symbology: " + result.CodeType);
        Console.WriteLine("-------------------------------");
    }
}

Extraiga y lea el código de barras de PDF usando C#

También podemos reconocer imágenes de códigos de barras incrustadas en páginas PDF usando la clase PdfExtractor. Permite extraer imágenes de PDF y luego leeremos la información del código de barras de la imagen extraída.

Podemos leer los códigos de barras de las imágenes extraídas siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cree una instancia de la clase PdfExtractor.
  2. A continuación, enlace el documento PDF de entrada con el método BindPdf().
  3. Luego, configure el rango de páginas para la extracción de imágenes.
  4. A continuación, llame al método ExtractImage() para extraer las imágenes.
  5. Luego, guarde la imagen para transmitir en un bucle.
  6. A continuación, cree una instancia de la clase BarCodeReader con el objeto de flujo.
  7. Después de eso, llame al método ReadBarCodes() para obtener el objeto BarCodeResult.
  8. Finalmente, muestra la información del código de barras.

El siguiente ejemplo de código muestra cómo extraer y leer una imagen de código de barras de un documento PDF usando C#.

// El siguiente ejemplo de código muestra cómo convertir páginas PDF en imágenes con PdfExtractor y leer códigos de barras usando C#.
// La ruta al documento
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Encuadernar un documento PDF
Aspose.Pdf.Facades.PdfExtractor pdfExtractor = new Aspose.Pdf.Facades.PdfExtractor();
pdfExtractor.BindPdf(file);

// Establecer el rango de páginas para la extracción de imágenes
pdfExtractor.StartPage = 1;
pdfExtractor.EndPage = 3;

// Extrae las imágenes
pdfExtractor.ExtractImage();

// Guardar imágenes para transmitir en un bucle
while (pdfExtractor.HasNextImage())
{
  // Guardar imagen para transmitir
  MemoryStream imageStream = new MemoryStream();
  pdfExtractor.GetNextImage(imageStream);
  imageStream.Position = 0;

  // Reconocer los códigos de barras del flujo de imágenes de arriba
  BarCodeReader reader = new BarCodeReader(imageStream);
  foreach (BarCodeResult result in reader.ReadBarCodes())
  {
      Console.WriteLine("Codetext found: " + result.CodeText);
      Console.WriteLine("Symbology: " + result.CodeType);
      Console.WriteLine("-------------------------------");
  }
}

Encuentre y lea imágenes de códigos de barras desde PDF usando C#

También podemos buscar y extraer imágenes de códigos de barras de documentos PDF usando la clase ImagePlacementAbsorber. Representa un objeto absorbente de objetos de colocación de imágenes. Realiza una búsqueda de usos de imágenes y brinda acceso a los resultados de la búsqueda a través de la colección ImagePlacements. Este método ayuda a reconocer códigos de barras con resolución original. Es posible que no reconozca correctamente los formatos vectoriales.

Podemos encontrar y leer códigos de barras de los documentos PDF siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cargue un documento PDF utilizando la clase Documento.
  2. A continuación, cree una instancia de la clase ImagePlacementAbsorber.
  3. Luego, llama al método Visit() para cada página en un ciclo.
  4. A continuación, recorra todas las imágenes que se encuentran en la colección ImagePlacements.
  5. Luego, guarde la imagen en el flujo de memoria.
  6. A continuación, cree una instancia de la clase BarCodeReader con el objeto de flujo.
  7. Después de eso, llame al método ReadBarCodes() para obtener el objeto BarCodeResult.
  8. Finalmente, muestra la información del código de barras.

El siguiente ejemplo de código muestra cómo buscar y leer imágenes de códigos de barras de un PDF usando C#.

// Este ejemplo de código demuestra cómo leer un código de barras de un documento PDF utilizando ImagePlacementAbsorber.
// La ruta al documento
string file = @"C:\Files\BarCode\sample-PDF-with-Barcodes.pdf";

// Cargar un documento PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Inicializar ImagePlacementAbsorber
Aspose.Pdf.ImagePlacementAbsorber imagePlacementAbsorber = new Aspose.Pdf.ImagePlacementAbsorber();

// Procese todas las páginas PDF del documento a partir de la página 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // Visite la página crear un extractor de imágenes
    imagePlacementAbsorber.Visit(pdfDoc.Pages[i]);

    // Extraiga todas las imágenes de la página PDF
    foreach (Aspose.Pdf.ImagePlacement imagePlacement in imagePlacementAbsorber.ImagePlacements)
    {
        // Convierta una imagen de la página PDF a la secuencia
        MemoryStream ms = new MemoryStream();
        imagePlacement.Save(ms, ImageFormat.Png);
        ms.Position = 0;

        // Reconocer el código de barras de la imagen extraída de la página
        BarCodeReader reader = new BarCodeReader(ms);

        // Mostrar resultados
        foreach (BarCodeResult result in reader.ReadBarCodes())
        {
            Console.WriteLine("Codetext found: " + result.CodeText);
            Console.WriteLine("Symbology: " + result.CodeType);
            Console.WriteLine("-------------------------------");
        }
    }
}

Obtenga una licencia gratis

Puede obtener una licencia temporal gratuita para probar las bibliotecas sin limitaciones de evaluación.

Conclusión

En este artículo, hemos aprendido a leer códigos de barras de documentos PDF en C#. También hemos visto varios enfoques y métodos para extraer imágenes de un documento PDF y decodificar los códigos de barras incrustados mediante programación. Además, puede obtener más información sobre las API utilizando la documentación para Aspose.BarCode y la documentación para Aspose.PDF. En caso de cualquier ambigüedad, no dude en contactarnos en nuestro foro.

Ver también