Lire le code-barres du PDF en Java

Les documents PDF tels que les factures, les reçus ou les rapports peuvent contenir des informations codées sous la forme d’un code-barres. Nous pouvons détecter, identifier et lire les codes-barres intégrés dans les documents PDF par programmation. Dans cet article, nous allons apprendre à lire un code-barres à partir d’un document PDF en utilisant Java. De plus, nous apprendrons à extraire des images de codes-barres à partir de documents PDF en Java.

Cet article couvrira les sujets suivants :

  1. API Java pour lire le code-barres à partir d’un PDF
  2. Lire le code-barres du PDF
  3. Convertir un PDF en image et lire le code-barres
  4. Extraire et lire le code-barres du PDF
  5. Lire le code-barres du PDF à l’aide de PngDevice
  6. Rechercher et lire une image de code-barres à partir d’un PDF

API Java pour lire le code-barres à partir d’un PDF

Pour lire un code-barres à partir d’un document PDF, nous suivrons une procédure en deux étapes. Tout d’abord, nous utiliserons l’API Aspose.PDF for Java pour charger un document PDF et rendre ses pages en images raster. Après cela, nous lirons le code-barres à partir des images rendues à l’aide de l’API Aspose.BarCode for Java.

Veuillez soit télécharger le JAR des API ou ajouter la configuration pom.xml suivante dans une application Java basée sur 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>

Lire le code-barres à partir d’un PDF en utilisant Java

L’API Aspose.PDF fournit la classe Document qui représente un document PDF. La méthode convertToPNGMemoryStream() de l’API convertit une page PDF en un flux d’images dans le tableau byte[]. L’API Aspose.BarCode fournit la classe BarCodeReader qui nous permet d’effectuer des opérations readBarCodes pour détecter un code-barres. La classe BarCodeResult stocke les informations de code-barres détectées telles que le type de code-barres, le texte du code, la région et d’autres paramètres.

Nous pouvons lire les images de codes-barres intégrées sur l’une des pages du document PDF en suivant les étapes ci-dessous :

  1. Tout d’abord, chargez un document PDF en utilisant la classe Document.
  2. Ensuite, parcourez toutes les pages et effectuez le rendu dans le flux.
  3. Ensuite, créez une instance de la classe BarCodeReader avec un objet stream.
  4. Après cela, appelez la méthode readBarCodes() pour obtenir l’objet BarCodeResult.
  5. Enfin, affichez les informations du code-barres.

L’exemple de code suivant montre comment lire un code-barres à partir d’un document PDF à l’aide de Java.

// Cet exemple de code montre comment lire un code-barres à partir d'un document PDF à l'aide de Java.
// Le chemin d'accès au document
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";

// Charger un document PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// Continuer toutes les pages PDF à partir de la page 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // Rendre la page PDF dans le flux
    byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
    InputStream stream = new ByteArrayInputStream(ms);

    // Reconnaître les codes-barres du flux de pages
    BarCodeReader reader = new BarCodeReader(stream);

    // Montrer les résultats
  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

Veuillez télécharger le document PDF d’entrée avec le code-barres utilisé dans cet article de blog.

Convertir un PDF en image et lire un code-barres à l’aide de Java

Nous pouvons également lire un code-barres à partir du document PDF en convertissant les pages PDF en images. La classe PdfConverter de l’API permet de convertir chaque page d’un fichier PDF en une image. Après cela, nous lirons les informations du code-barres de l’image convertie.

Nous pouvons lire les codes-barres des pages PDF converties en suivant les étapes ci-dessous :

  1. Tout d’abord, chargez un document PDF en utilisant la classe Document.
  2. Ensuite, créez une instance de la classe PdfConverter.
  3. Définissez éventuellement les options de rendu à l’aide de setBarcodeOptimization().
  4. Ensuite, réglez la résolution de l’image.
  5. Ensuite, spécifiez une plage de pages à rendre en images à l’aide de setStartPage() et setEndPage().
  6. Ensuite, appelez la méthode doConvert() pour rendre les pages sélectionnées en images.
  7. Ensuite, enregistrez les images en boucle.
  8. Ensuite, créez une instance de la classe BarCodeReader avec le chemin du fichier image enregistré.
  9. Après cela, appelez la méthode readBarCodes() pour obtenir l’objet BarCodeResult.
  10. Enfin, affichez les informations du code-barres.

L’exemple de code suivant montre comment convertir des pages PDF en images et lire des codes-barres à l’aide de Java.

// L'exemple de code suivant montre comment convertir des pages PDF en images avec PDF Converter et lire des codes-barres.
// Le chemin d'accès au document
String folderPath = "C:\\Files\\BarCode\\";

// Chemin du fichier d'entrée
String file = folderPath + "sample-PDF-with-Barcodes.pdf";

// Charger un document PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

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

// Définir l'optimisation du code-barres
pdfConverter.getRenderingOptions().setBarcodeOptimization(true);

// Définir la résolution de la page
// 300 dpi est la résolution standard
pdfConverter.setResolution(new com.aspose.pdf.devices.Resolution(300));

// Définir toutes les pages à rendre en images
pdfConverter.setStartPage(1); //starts from page 1
pdfConverter.setEndPage(pdfConverter.getDocument().getPages().size());

// Rendre les pages sélectionnées dans les images
pdfConverter.doConvert();
int imageCount = 1;

while (pdfConverter.hasNextImage())
{
    // Rendre la page actuelle en image
    String strBarCodeImage = folderPath + imageCount + ".jpg";
    pdfConverter.getNextImage(strBarCodeImage);

    // Reconnaître les codes-barres à partir de l'image rendue de la page
    BarCodeReader reader = new BarCodeReader(strBarCodeImage);

    // Montrer les résultats
    for (BarCodeResult result : reader.readBarCodes()) {
    System.out.println("CodeText: " + result.getCodeText());
    System.out.println("Symbology type: " + result.getCodeType());
    System.out.println(("-------------------------------"));
  }
}

Extraire et lire le code-barres du PDF à l’aide de Java

De même, nous pouvons également reconnaître les images de codes-barres intégrées dans les pages PDF à l’aide de la classe PdfExtractor. Il permet d’extraire des images à partir de PDF, puis nous lirons les informations du code-barres de l’image extraite.

Nous pouvons lire les codes-barres à partir des images extraites en suivant les étapes ci-dessous :

  1. Tout d’abord, créez une instance de la classe PdfExtractor.
  2. Ensuite, liez le document PDF d’entrée à l’aide de la méthode bindPdf().
  3. Ensuite, définissez la plage de pages pour l’extraction d’image.
  4. Appelez ensuite la méthode extractImage() pour extraire les images.
  5. Ensuite, enregistrez l’image dans une boucle.
  6. Ensuite, créez une instance de la classe BarCodeReader avec le chemin de l’image.
  7. Après cela, appelez la méthode readBarCodes() pour obtenir l’objet BarCodeResult.
  8. Enfin, affichez les informations du code-barres.

L’exemple de code suivant montre comment extraire et lire une image de code-barres à partir d’un document PDF à l’aide de Java.

// L'exemple de code suivant montre comment convertir des pages PDF en images avec PdfExtractor et lire des codes-barres.
// Le chemin d'accès au document
String folderPath = "C:\\Files\\BarCode\\";

// Fichier d'entrée
String file = folderPath + "sample-PDF-with-Barcodes.pdf";

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

// Définir la plage de pages pour l'extraction d'images
pdfExtractor.setStartPage(1);
pdfExtractor.setEndPage(3);

// Extraire les images
pdfExtractor.extractImage();

int imageCount = 1;

// Enregistrer des images pour diffuser en boucle
while (pdfExtractor.hasNextImage())
{
  // Enregistrer l'image
  String strBarCodeImage = folderPath + imageCount + ".jpg";
  pdfExtractor.getNextImage(strBarCodeImage);

  // Reconnaître les codes-barres de l'image
  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(("-------------------------------"));
  }
}

Lire le code-barres à partir d’un PDF à l’aide de PngDevice en Java

Nous pouvons également lire les codes-barres en convertissant les pages du document PDF en images PNG à l’aide de la classe PngDevice de l’API. Il fournit la méthode process(Page page, OutputStream output) qui convertit la page en PNG et l’enregistre dans le flux de sortie. La méthode processToBufferedImage(Page page) de cette classe convertit la page en BufferedImage.

Nous pouvons lire les codes-barres des pages PDF converties en images PNG en suivant les étapes ci-dessous :

  1. Tout d’abord, chargez un document PDF en utilisant la classe Document.
  2. Ensuite, créez une instance de la classe PngDevice.
  3. Ensuite, parcourez toutes les pages et appelez la méthode processToBufferedImage() pour effectuer le rendu dans l’image.
  4. Ensuite, créez une instance de la classe BarCodeReader avec l’objet BufferedImage.
  5. Après cela, appelez la méthode readBarCodes() pour obtenir l’objet BarCodeResult.
  6. Enfin, affichez les informations du code-barres.

L’exemple de code suivant montre comment convertir des pages PDF et lire des codes-barres à l’aide de Java.

// L'exemple de code suivant montre comment convertir des pages PDF en images avec PngDevice et lire des codes-barres.
// Le chemin d'accès au document
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";

// Charger un document PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

// Créer un appareil PNG avec une résolution standard de 300 dpi
com.aspose.pdf.devices.PngDevice pngDevice = new com.aspose.pdf.devices.PngDevice(new com.aspose.pdf.devices.Resolution(300));

// Continuer toutes les pages PDF à partir de la page 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // Rendre la page PDF à l'image tamponnée
    BufferedImage img = pngDevice.processToBufferedImage(pdfDoc.getPages().get_Item(i));

    // Reconnaître le code-barres à partir de l'image rendue de la page
    BarCodeReader reader = new BarCodeReader(img);

    // Montrer les résultats
    for (BarCodeResult result : reader.readBarCodes()) {
    System.out.println("CodeText: " + result.getCodeText());
    System.out.println("Symbology type: " + result.getCodeType());
    System.out.println(("-------------------------------"));
  }
}

Rechercher et lire des images de codes-barres à partir de PDF à l’aide de Java

Nous pouvons rechercher et extraire des images de codes-barres à partir de documents PDF à l’aide de la classe ImagePlacementAbsorber. Il effectue une recherche sur l’utilisation des images et donne accès aux résultats de la recherche via la collection ImagePlacements. Cette méthode permet de reconnaître les codes à barres avec la résolution d’origine. Le seul inconvénient est qu’il peut ne pas reconnaître correctement les formats vectoriels.

Nous pouvons trouver et lire les codes-barres des documents PDF en suivant les étapes ci-dessous :

  1. Tout d’abord, chargez un document PDF en utilisant la classe Document.
  2. Ensuite, créez une instance de la classe ImagePlacementAbsorber.
  3. Ensuite, appelez la méthode visit() pour chaque page dans une boucle.
  4. Ensuite, parcourez toutes les images trouvées dans la collection ImagePlacements.
  5. Ensuite, enregistrez l’image dans le flux de mémoire.
  6. Ensuite, créez une instance de la classe BarCodeReader avec l’objet stream.
  7. Après cela, appelez la méthode readBarCodes() pour obtenir l’objet BarCodeResult.
  8. Enfin, affichez les informations du code-barres.

L’exemple de code suivant montre comment rechercher et lire des images de codes-barres à partir d’un PDF à l’aide de Java.

// Cet exemple de code montre comment lire un code-barres à partir d'un document PDF à l'aide d'ImagePlacementAbsorber.
// Le chemin d'accès au document
String file = "C:\\Files\\BarCode\\sample-PDF-with-Barcodes.pdf";

// Charger un document PDF
com.aspose.pdf.Document pdfDoc = new com.aspose.pdf.Document(file);

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

// Traiter toutes les pages PDF du document à partir de la page 1
for (int i = 1; i <= pdfDoc.getPages().size(); ++i)
{
    // Visitez la page créer un extracteur d'image
    imagePlacementAbsorber.visit(pdfDoc.getPages().get_Item(i));

    // Extraire toutes les images de la page PDF
    for (com.aspose.pdf.ImagePlacement imagePlacement : imagePlacementAbsorber.getImagePlacements()) {
      // Rendre la page PDF dans le flux
      byte[] ms = pdfDoc.getPages().get_Item(i).convertToPNGMemoryStream();
      InputStream stream = new ByteArrayInputStream(ms);

      // Reconnaître le code-barres du flux de page
      BarCodeReader reader = new BarCodeReader(stream);

      // Montrer les résultats
      for (BarCodeResult result : reader.readBarCodes()) {
        System.out.println("CodeText: " + result.getCodeText());
        System.out.println("Symbology type: " + result.getCodeType());
        System.out.println(("-------------------------------"));
      }
    }
}

Obtenez une licence gratuite

Vous pouvez obtenir une licence temporaire gratuite pour essayer les bibliothèques sans limitation d’évaluation.

Conclusion

Dans cet article, nous avons appris

  • comment détecter et lire les codes-barres des documents PDF ;
  • diverses méthodes pour extraire des images d’un document PDF ;
  • pour décoder le code-barres intégré en Java.

Outre la lecture d’un code-barres à partir d’un PDF en Java, vous pouvez en savoir plus sur les API à l’aide de la documentation pour Aspose.BarCode et de la documentation pour Aspose.PDF. En cas d’ambiguïté, n’hésitez pas à nous contacter sur notre forum d’assistance gratuit.

Voir également