Ler código de barras de PDF em Java

PDF documentos como faturas, recibos ou relatórios podem conter informações codificadas na forma de código de barras. Podemos detectar, identificar e ler códigos de barras incorporados em documentos PDF programaticamente. Neste artigo, aprenderemos como ler um código de barras de um documento PDF usando Java. Além disso, aprenderemos como extrair imagens de código de barras de documentos PDF em Java.

Este artigo deve abordar os seguintes tópicos:

  1. API Java para ler código de barras de PDF
  2. Leia o código de barras do PDF
  3. Converter PDF em imagem e ler código de barras
  4. Extrair e ler código de barras do PDF
  5. Leia o código de barras do PDF usando PngDevice
  6. Localizar e ler a imagem do código de barras do PDF

API Java para ler código de barras de PDF

Para ler um código de barras de um documento PDF, seguiremos um procedimento de duas etapas. Primeiramente, usaremos a API Aspose.PDF for Java para carregar um documento PDF e renderizar suas páginas em imagens raster. Depois disso, leremos o código de barras das imagens renderizadas usando a API Aspose.BarCode for Java.

Por favor, faça o download do JAR das APIs ou adicione a seguinte configuração pom.xml em um aplicativo Java baseado em 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>

Ler código de barras de PDF usando Java

A API Aspose.PDF fornece a classe Document que representa um documento PDF. O método convertToPNGMemoryStream() da API renderiza uma página PDF em um fluxo de imagem na matriz byte[]. A API Aspose.BarCode fornece a classe BarCodeReader que nos permite realizar operações readBarCodes para detectar um código de barras. A classe BarCodeResult armazena informações de código de barras detectadas, como tipo de código de barras, texto de código, região e outros parâmetros.

Podemos ler imagens de código de barras incorporadas em qualquer uma das páginas do documento PDF seguindo as etapas abaixo:

  1. Primeiramente, carregue um documento PDF usando a classe Document.
  2. Em seguida, percorra todas as páginas e renderize no fluxo.
  3. Em seguida, crie uma instância da classe BarCodeReader com um objeto de fluxo.
  4. Depois disso, chame o método readBarCodes() para obter o objeto BarCodeResult.
  5. Por fim, mostre as informações do código de barras.

O exemplo de código a seguir mostra como ler um código de barras de um documento PDF usando Java.

// Este exemplo de código demonstra como ler um código de barras de um documento PDF usando Java.
// O caminho para o documento
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";

// Carregar um documento PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// Prossiga todas as páginas do PDF a partir da página 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // Renderizar página PDF para o fluxo
    byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
    InputStream stream = new ByteArrayInputStream(ms);

    // Reconhecer códigos de barras do fluxo de 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

Por favor faça o download do documento PDF de entrada com código de barras usado nesta postagem do blog.

Converter PDF em imagem e ler código de barras usando Java

Também podemos ler um código de barras do documento PDF convertendo páginas PDF em imagens. A classe PdfConverter da API permite converter cada página de um arquivo PDF em uma imagem. Depois disso, leremos as informações do código de barras da imagem convertida.

Podemos ler códigos de barras de páginas PDF convertidas seguindo as etapas abaixo:

  1. Primeiramente, carregue um documento PDF usando a classe Document.
  2. Em seguida, crie uma instância da classe PdfConverter.
  3. Opcionalmente, defina as opções de renderização usando setBarcodeOptimization().
  4. Em seguida, defina a resolução da imagem.
  5. Em seguida, especifique um intervalo de páginas para renderizar em imagens usando setStartPage() e setEndPage().
  6. Em seguida, chame o método doConvert() para renderizar as páginas selecionadas em imagens.
  7. Em seguida, salve as imagens em um loop.
  8. Em seguida, crie uma instância da classe BarCodeReader com o caminho do arquivo de imagem salvo.
  9. Depois disso, chame o método readBarCodes() para obter o objeto BarCodeResult.
  10. Por fim, mostre as informações do código de barras.

O exemplo de código a seguir mostra como converter páginas PDF em imagens e ler códigos de barras usando Java.

// O exemplo de código a seguir mostra como converter páginas PDF em imagens com o PDF Converter e ler códigos de barras.
// O caminho para o documento
String folderPath = "C:\\Files\\BarCode\\";

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

// Carregar um documento PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// Inicializar um PDFConvertor
com.aspose.pdf.facades.PdfConverter pdfConverter = new com.aspose.pdf.facades.PdfConverter(pdfDoc);

// Definir otimização de código de barras
pdfConverter.getRenderingOptions().setBarcodeOptimization(true);

// Definir resolução da página
// 300 dpi é a resolução padrão
pdfConverter.setResolution(new com.aspose.pdf.devices.Resolution(300));

// Defina todas as páginas para renderizar em imagens
pdfConverter.setStartPage(1); //starts from page 1
pdfConverter.setEndPage(pdfConverter.getDocument().getPages().size());

// Renderize as páginas selecionadas nas imagens
pdfConverter.doConvert();
int imageCount = 1;

while (pdfConverter.hasNextImage())
{
    // Renderizar página atual para imagem
    String strBarCodeImage = folderPath + imageCount + ".jpg";
    pdfConverter.getNextImage(strBarCodeImage);

    // Reconhecer códigos de barras da imagem renderizada da 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(("-------------------------------"));
  }
}

Extraia e leia código de barras de PDF usando Java

Da mesma forma, também podemos reconhecer imagens de código de barras incorporadas em páginas PDF usando a classe PdfExtractor. Ele permite extrair imagens do PDF e, em seguida, leremos as informações do código de barras da imagem extraída.

Podemos ler códigos de barras das imagens extraídas seguindo os passos abaixo:

  1. Primeiramente, crie uma instância da classe PdfExtractor.
  2. Em seguida, vincule o documento PDF de entrada usando o método bindPdf().
  3. Em seguida, defina o intervalo de páginas para extração de imagem.
  4. Em seguida, chame o método extractImage() para extrair as imagens.
  5. Em seguida, salve a imagem em um loop.
  6. Em seguida, crie uma instância da classe BarCodeReader com o caminho da imagem.
  7. Depois disso, chame o método readBarCodes() para obter o objeto BarCodeResult.
  8. Por fim, mostre as informações do código de barras.

O exemplo de código a seguir mostra como extrair e ler uma imagem de código de barras de um documento PDF usando Java.

// O exemplo de código a seguir mostra como converter páginas PDF em imagens com PdfExtractor e ler códigos de barras.
// O caminho para o documento
String folderPath = "C:\\Files\\BarCode\\";

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

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

// Definir intervalo de páginas para extração de imagens
pdfExtractor.setStartPage(1);
pdfExtractor.setEndPage(3);

// Extraia as imagens
pdfExtractor.extractImage();

int imageCount = 1;

// Salve imagens para transmitir em um loop
while (pdfExtractor.hasNextImage())
{
  // Salvar imagem
  String strBarCodeImage = folderPath + imageCount + ".jpg";
  pdfExtractor.getNextImage(strBarCodeImage);

  // Reconhecer os códigos de barras da imagem
  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(("-------------------------------"));
  }
}

Leia o código de barras do PDF usando PngDevice em Java

Também podemos ler códigos de barras convertendo as páginas do documento PDF em imagens PNG usando a classe PngDevice da API. Ele fornece o método process(Page page, OutputStream output) que converte a página em PNG e a salva no fluxo de saída. O método processToBufferedImage(Page page) desta classe converte a página em BufferedImage.

Podemos ler códigos de barras de páginas PDF convertidas como imagens PNG seguindo as etapas abaixo:

  1. Primeiramente, carregue um documento PDF usando a classe Document.
  2. Em seguida, crie uma instância da classe PngDevice.
  3. Em seguida, percorra todas as páginas e chame o método processToBufferedImage() para renderizar na imagem.
  4. Em seguida, crie uma instância da classe BarCodeReader com o objeto BufferedImage.
  5. Depois disso, chame o método readBarCodes() para obter o objeto BarCodeResult.
  6. Por fim, mostre as informações do código de barras.

O exemplo de código a seguir mostra como converter páginas PDF e ler códigos de barras usando Java.

// O exemplo de código a seguir mostra como converter páginas PDF em imagens com PngDevice e ler códigos de barras.
// O caminho para o documento
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";

// Carregar um documento PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// Crie um dispositivo PNG com resolução padrão de 300 dpi
com.aspose.pdf.devices.PngDevice pngDevice = new com.aspose.pdf.devices.PngDevice(new com.aspose.pdf.devices.Resolution(300));

// Prossiga todas as páginas do PDF a partir da página 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // Renderize a página PDF para a imagem em buffer
    BufferedImage img = pngDevice.processToBufferedImage(pdfDoc.getPages().get_Item(i));

    // Reconhecer o código de barras da imagem renderizada da 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(("-------------------------------"));
  }
}

Encontre e leia imagens de código de barras de PDF usando Java

Podemos encontrar e extrair imagens de código de barras de documentos PDF usando a classe ImagePlacementAbsorber. Ele realiza uma pesquisa de uso de imagem e fornece acesso aos resultados da pesquisa por meio da coleção ImagePlacements. Este método permite reconhecer códigos de barras com resolução original. A única desvantagem é que ele pode não reconhecer os formatos vetoriais corretamente.

Podemos encontrar e ler códigos de barras dos documentos PDF seguindo as etapas abaixo:

  1. Primeiramente, carregue um documento PDF usando a classe Document.
  2. Em seguida, crie uma instância da classe ImagePlacementAbsorber.
  3. Em seguida, chame o método visit() para cada página em um loop.
  4. Em seguida, percorra todas as imagens encontradas na coleção ImagePlacements.
  5. Em seguida, salve a imagem no fluxo de memória.
  6. Em seguida, crie uma instância da classe BarCodeReader com o objeto stream.
  7. Depois disso, chame o método readBarCodes() para obter o objeto BarCodeResult.
  8. Por fim, mostre as informações do código de barras.

O exemplo de código a seguir mostra como localizar e ler imagens de código de barras de um PDF usando Java.

// Este exemplo de código demonstra como ler um código de barras de um documento PDF usando ImagePlacementAbsorber.
// O caminho para o documento
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";

// Carregar um 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();

// Processe todas as páginas PDF no documento a partir da página 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // Visite a página crie um extrator de imagens
    imagePlacementAbsorber.visit(pdfDoc.getPages().get_Item(i));

    // Extraia todas as imagens da página PDF
    for (com.aspose.pdf.ImagePlacement imagePlacement : imagePlacementAbsorber.getImagePlacements()) {
      // Renderizar página PDF para o fluxo
      byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
      InputStream stream = new ByteArrayInputStream(ms);

      // Reconhecer o código de barras do fluxo de 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(("-------------------------------"));
      }
    }
}

Obtenha uma licença gratuita

Você pode obter uma licença temporária gratuita para experimentar as bibliotecas sem limitações de avaliação.

Conclusão

Neste artigo, aprendemos

  • como detectar e ler códigos de barras de documentos PDF;
  • vários métodos para extrair imagens de um documento PDF;
  • para decodificar o código de barras embutido em Java.

Além de ler um código de barras de PDF em Java, você pode aprender mais sobre as APIs usando a documentação para Aspose.BarCode e a documentação para Aspose.PDF. Em caso de qualquer ambiguidade, sinta-se à vontade para nos contatar em nosso fórum de suporte gratuito.

Veja também