Leer código de barras de PDF en Java

PDF documentos como facturas, recibos o informes pueden contener información codificada en forma de código de barras. Podemos detectar, identificar y leer códigos de barras incrustados en documentos PDF mediante programación. En este artículo, aprenderemos cómo leer un código de barras de un documento PDF usando Java. Además, aprenderemos cómo extraer imágenes de códigos de barras de documentos PDF en Java.

Este artículo cubrirá los siguientes temas:

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

API de Java para leer código de barras de PDF

Para leer un código de barras de un documento PDF, seguiremos un procedimiento de dos pasos. En primer lugar, utilizaremos la API Aspose.PDF para Java para cargar un documento PDF y representar 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 Java.

Descargue el JAR de las API o agregue la siguiente configuración pom.xml en una aplicación Java basada en Maven.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-barcode</artifactId>
    <version>22.8</version>
</dependency>
    
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-pdf</artifactId>
    <version>22.8</version>
</dependency>

Leer código de barras de PDF usando Java

Aspose.PDF API proporciona la clase Documento que representa un documento PDF. El método convertToPNGMemoryStream() de la API convierte una página PDF en un flujo de imágenes en la matriz byte[]. Aspose.BarCode API proporciona la clase BarCodeReader que nos permite realizar operaciones readBarCodes para detectar un código 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 la secuencia.
  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 utilizando Java.

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

// Cargar un documento PDF
com.aspose.pdf.Document pdfDoc = new com.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.getPages().size(); ++i)
{
    // Renderizar página PDF a la secuencia
    byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
    InputStream stream = new ByteArrayInputStream(ms);

    // Reconocer códigos de barras del flujo de la página
    BarCodeReader reader = new BarCodeReader(stream);

    // Mostrar resultados
  for (BarCodeResult result : reader.readBarCodes()) {
    System.out.println("CodeText: " + result.getCodeText());
    System.out.println("Symbology type: " + result.getCodeType());
    System.out.println(("-------------------------------"));
  }
}
CodeText: Aspose.Barcode Pdf417 Example
Symbology type: Pdf417
-------------------------------
CodeText: Aspose.Barcode QR Example
Symbology type: QR
-------------------------------
CodeText: Aspose.Barcode DataMatrix Example
Symbology type: DataMatrix

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

Convierta PDF a imagen y lea código de barras usando Java

También podemos leer un código de barras del documento PDF al convertir páginas PDF en imágenes. La clase PdfConverter de la API permite convertir cada página de un archivo PDF en una imagen. Después de eso, 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, configure las opciones de representación mediante setBarcodeOptimization().
  4. Luego, establezca la resolución de la imagen.
  5. A continuación, especifique un rango de páginas para convertirlas en imágenes utilizando setStartPage() y setEndPage().
  6. Luego, llame al método doConvert() para convertir las páginas seleccionadas en imágenes.
  7. A continuación, guarde las imágenes en un bucle.
  8. Luego, cree una instancia de la clase BarCodeReader con la ruta del archivo de imagen guardado.
  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 Java.

// El siguiente ejemplo de código muestra cómo convertir páginas PDF en imágenes con PDF Converter y leer códigos de barras.
// La ruta al documento
String folderPath = "C:\\Files\\BarCode\\";

// Ruta del archivo de entrada
String file = folderPath + "sample-PDF-with-Barcodes.pdf";

// Cargar un documento PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// Inicializar un PdfConvertor
com.aspose.pdf.facades.PdfConverter pdfConverter = new com.aspose.pdf.facades.PdfConverter(pdfDoc);

// Establecer optimización de código de barras
pdfConverter.getRenderingOptions().setBarcodeOptimization(true);

// Establecer resolución de página
// 300 ppp es la resolución estándar
pdfConverter.setResolution(new com.aspose.pdf.devices.Resolution(300));

// Configurar todas las páginas para que se conviertan en imágenes
pdfConverter.setStartPage(1); //starts from page 1
pdfConverter.setEndPage(pdfConverter.getDocument().getPages().size());

// Renderizar páginas seleccionadas en las imágenes
pdfConverter.doConvert();
int imageCount = 1;

while (pdfConverter.hasNextImage())
{
    // Renderizar la página actual a la imagen
    String strBarCodeImage = folderPath + imageCount + ".jpg";
    pdfConverter.getNextImage(strBarCodeImage);

    // Reconocer códigos de barras de la imagen renderizada de la página
    BarCodeReader reader = new BarCodeReader(strBarCodeImage);

    // Mostrar resultados
    for (BarCodeResult result : reader.readBarCodes()) {
    System.out.println("CodeText: " + result.getCodeText());
    System.out.println("Symbology type: " + result.getCodeType());
    System.out.println(("-------------------------------"));
  }
}

Extraiga y lea el código de barras de PDF usando Java

Del mismo modo, también podemos reconocer imágenes de códigos de barras incrustadas en páginas PDF utilizando 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, llama al método extractImage() para extraer las imágenes.
  5. Luego, guarde la imagen en un bucle.
  6. A continuación, cree una instancia de la clase BarCodeReader con la ruta de la imagen.
  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 Java.

// El siguiente ejemplo de código muestra cómo convertir páginas PDF en imágenes con PdfExtractor y leer códigos de barras.
// La ruta al documento
String folderPath = "C:\\Files\\BarCode\\";

// Fichero de entrada
String file = folderPath + "sample-PDF-with-Barcodes.pdf";

// Encuadernar un documento PDF
com.aspose.pdf.facades.PdfExtractor pdfExtractor = new com.aspose.pdf.facades.PdfExtractor();
pdfExtractor.bindPdf(file);

// Establecer el rango de páginas para la extracción de imágenes
pdfExtractor.setStartPage(1);
pdfExtractor.setEndPage(3);

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

int imageCount = 1;

// Guardar imágenes para transmitir en un bucle
while (pdfExtractor.hasNextImage())
{
  // Guardar imagen
  String strBarCodeImage = folderPath + imageCount + ".jpg";
  pdfExtractor.getNextImage(strBarCodeImage);

  // Reconocer los códigos de barras de la imagen
  BarCodeReader reader = new BarCodeReader(strBarCodeImage);

  for (BarCodeResult result : reader.readBarCodes()) {
    System.out.println("CodeText: " + result.getCodeText());
    System.out.println("Symbology type: " + result.getCodeType());
    System.out.println(("-------------------------------"));
  }
}

Leer código de barras de PDF usando PngDevice en Java

También podemos leer códigos de barras convirtiendo las páginas del documento PDF en imágenes PNG utilizando la clase PngDevice de la API. Proporciona el método process(Page page, OutputStream output) que convierte la página en PNG y la guarda en el flujo de salida. El método processToBufferedImage(Page page) de esta clase convierte la página en BufferedImage.

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 processToBufferedImage() para representar la imagen.
  4. A continuación, cree una instancia de la clase BarCodeReader con el objeto BufferedImage.
  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 y leer códigos de barras usando Java.

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

// Cargar un documento PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// Cree un dispositivo PNG con una resolución estándar de 300 ppp
com.aspose.pdf.devices.PngDevice pngDevice = new com.aspose.pdf.devices.PngDevice(new com.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.getPages().size(); ++i)
{
    // Renderizar página PDF a la imagen almacenada en búfer
    BufferedImage img = pngDevice.processToBufferedImage(pdfDoc.getPages().get_Item(i));

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

    // Mostrar resultados
    for (BarCodeResult result : reader.readBarCodes()) {
    System.out.println("CodeText: " + result.getCodeText());
    System.out.println("Symbology type: " + result.getCodeType());
    System.out.println(("-------------------------------"));
  }
}

Encuentre y lea imágenes de código de barras desde PDF usando Java

Podemos encontrar y extraer imágenes de códigos de barras de documentos PDF usando la clase ImagePlacementAbsorber. Realiza una búsqueda de uso de imágenes y brinda acceso a los resultados de la búsqueda a través de la colección ImagePlacements. Este método permite reconocer códigos de barras con resolución original. El único inconveniente es que 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 bucle.
  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 Java.

// 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
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// Inicializar ImagePlacementAbsorber
com.aspose.pdf.ImagePlacementAbsorber imagePlacementAbsorber = new com.aspose.pdf.ImagePlacementAbsorber();

// Procese todas las páginas PDF del documento a partir de la página 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // Visite la página crear un extractor de imágenes
    imagePlacementAbsorber.visit(pdfDoc.getPages().get_Item(i));

    // Extraiga todas las imágenes de la página PDF
    for (com.aspose.pdf.ImagePlacement imagePlacement : imagePlacementAbsorber.getImagePlacements()) {
      // Renderizar página PDF a la secuencia
      byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
      InputStream stream = new ByteArrayInputStream(ms);

      // Reconocer el código de barras del flujo de la página
      BarCodeReader reader = new BarCodeReader(stream);

      // Mostrar resultados
      for (BarCodeResult result : reader.readBarCodes()) {
        System.out.println("CodeText: " + result.getCodeText());
        System.out.println("Symbology type: " + result.getCodeType());
        System.out.println(("-------------------------------"));
      }
    }
}

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

  • cómo detectar y leer códigos de barras de documentos PDF;
  • varios métodos para extraer imágenes de un documento PDF;
  • para decodificar el código de barras incrustado en Java.

Además de leer un código de barras de PDF en Java, puede obtener más información sobre las API utilizando la documentación de Aspose.BarCode y la documentación de Aspose.PDF. En caso de cualquier ambigüedad, no dude en contactarnos en nuestro foro de soporte gratuito.

Ver también