Lire un code-barres à partir d'un PDF en C#

Nous pouvons générer et ajouter des codes-barres aux documents PDF comme décrit dans mon article précédent. Dans certains cas, nous pouvons avoir besoin de détecter et de lire les codes-barres intégrés dans les documents PDF par programmation. Il aide à décoder les informations intégrées sous forme de codes-barres et de codes QR à partir de documents PDF tels que des factures, des reçus ou des rapports. Dans cet article, nous allons apprendre à lire un code-barres à partir d’un document PDF en utilisant C#.

L’article doit couvrir les sujets suivants :

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

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

Nous suivrons une procédure en deux étapes pour lire les codes-barres des documents PDF. Tout d’abord, nous utiliserons l’API Aspose.PDF for .NET pour charger un document PDF, puis nous rendrons 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 .NET.

Veuillez soit télécharger la DLL de l’API ou l’installer à l’aide de NuGet.

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

Lire un code-barres à partir d’un PDF à l’aide de C#

La classe Document de l’API Aspose.PDF représente un document PDF. La fonction ConvertToPNGMemoryStream() de l’API restitue une page PDF dans un flux de mémoire PNG. La classe BarCodeReader de l’API Aspose.BarCode nous permet d’effectuer des opérations ReadBarCodes pour détecter les codes-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 affichez-les dans le flux de mémoire.
  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 C#.

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

// Charger un document PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Continuer toutes les pages PDF à partir de la page 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // Rendre la page PDF dans le flux
    MemoryStream ms = pdfDoc.Pages[i].ConvertToPNGMemoryStream();
    ms.Position = 0;

    // Reconnaître les codes-barres à partir de l'image rendue de la page
    BarCodeReader reader = new BarCodeReader(ms);
    
    // Montrer les résultats
    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
-------------------------------

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

Convertir un PDF en image et lire des codes-barres à l’aide de C#

Nous pouvons lire les codes-barres du document PDF en convertissant les pages PDF en images à l’aide de la classe PdfConverter. Il permet de convertir chaque page d’un fichier PDF en une image, puis 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 des options de rendu telles que BarcodeOptimization.
  4. Ensuite, réglez la résolution de l’image.
  5. Ensuite, spécifiez StartPage et EndPage pour restituer une plage de pages en images.
  6. Ensuite, appelez la méthode DoConvert() pour rendre les pages sélectionnées en images.
  7. Ensuite, enregistrez l’image à diffuser en boucle.
  8. Ensuite, créez une instance de la classe BarCodeReader avec l’objet stream.
  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 C#.

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

// Charger un document PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

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

// Définir l'optimisation du code-barres
pdfConverter.RenderingOptions.BarcodeOptimization = true;

// Définir la résolution de la page
// 300 dpi est la résolution standard
pdfConverter.Resolution = new Aspose.Pdf.Devices.Resolution(300);

// Définir toutes les pages à rendre en images
pdfConverter.StartPage = 1; //starts from page 1
pdfConverter.EndPage = pdfConverter.Document.Pages.Count;

// Rendre les pages sélectionnées dans les images
pdfConverter.DoConvert();
while (pdfConverter.HasNextImage())
{
    // Rendre la page actuelle en image de flux de mémoire
    MemoryStream ms = new MemoryStream();
    pdfConverter.GetNextImage(ms, ImageFormat.Png);
    ms.Position = 0;

    // Reconnaître les codes-barres à partir de l'image rendue de la page
    BarCodeReader reader = new BarCodeReader(ms);
    
    // Montrer les résultats
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine("Codetext found: " + result.CodeText);
        Console.WriteLine("Symbology: " + result.CodeType);
        Console.WriteLine("-------------------------------");
    }
}

Lire des codes-barres à partir de PDF à l’aide de PngDevice en C#

Voici une autre méthode similaire à la précédente. La seule différence est que dans cette méthode, nous allons convertir les pages du document PDF en images en utilisant la classe PngDevice de l’API. Il permet de convertir des pages du document PDF en images PNG.

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 Process () pour effectuer le rendu dans le flux.
  4. Ensuite, créez une instance de la classe BarCodeReader avec l’objet stream.
  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 en images PNG et lire des codes-barres à l’aide de C#.

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

// Charger un document PDF
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

// Créer un appareil PNG avec une résolution standard de 300 dpi
Aspose.Pdf.Devices.PngDevice pngDevice = new Aspose.Pdf.Devices.PngDevice(new Aspose.Pdf.Devices.Resolution(300));

// Continuer toutes les pages PDF à partir de la page 1
for (int i = 1; i <= pdfDoc.Pages.Count; ++i)
{
    // Rendre la page PDF dans le flux
    MemoryStream ms = new MemoryStream();
    pngDevice.Process(pdfDoc.Pages[i], ms);
    ms.Position = 0;

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

    // Montrer les résultats
    foreach (BarCodeResult result in reader.ReadBarCodes())
    {
        Console.WriteLine("Codetext found: " + result.CodeText);
        Console.WriteLine("Symbology: " + result.CodeType);
        Console.WriteLine("-------------------------------");
    }
}

Extraire et lire le code-barres d’un PDF à l’aide de C#

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 pour la diffuser en boucle.
  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 extraire et lire une image de code-barres à partir d’un document PDF à l’aide de C#.

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

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

// Définir la plage de pages pour l'extraction d'images
pdfExtractor.StartPage = 1;
pdfExtractor.EndPage = 3;

// Extraire les images
pdfExtractor.ExtractImage();

// Enregistrer des images pour diffuser en boucle
while (pdfExtractor.HasNextImage())
{
  // Enregistrer l'image pour diffuser
  MemoryStream imageStream = new MemoryStream();
  pdfExtractor.GetNextImage(imageStream);
  imageStream.Position = 0;

  // Reconnaître les codes-barres du flux d'images ci-dessus
  BarCodeReader reader = new BarCodeReader(imageStream);
  foreach (BarCodeResult result in reader.ReadBarCodes())
  {
      Console.WriteLine("Codetext found: " + result.CodeText);
      Console.WriteLine("Symbology: " + result.CodeType);
      Console.WriteLine("-------------------------------");
  }
}

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

Nous pouvons également rechercher et extraire des images de codes-barres à partir de documents PDF à l’aide de la classe ImagePlacementAbsorber. Il représente un objet absorbeur d’objets de placement d’image. Il effectue une recherche d’utilisations d’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. 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 C#.

// 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
Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(file);

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

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

    // Extraire toutes les images de la page PDF
    foreach (Aspose.Pdf.ImagePlacement imagePlacement in imagePlacementAbsorber.ImagePlacements)
    {
        // Convertir une image de la page PDF en flux
        MemoryStream ms = new MemoryStream();
        imagePlacement.Save(ms, ImageFormat.Png);
        ms.Position = 0;

        // Reconnaître le code-barres de l'image extraite de la page
        BarCodeReader reader = new BarCodeReader(ms);

        // Montrer les résultats
        foreach (BarCodeResult result in reader.ReadBarCodes())
        {
            Console.WriteLine("Codetext found: " + result.CodeText);
            Console.WriteLine("Symbology: " + result.CodeType);
            Console.WriteLine("-------------------------------");
        }
    }
}

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 à lire des codes-barres à partir de documents PDF en C#. Nous avons également vu diverses approches et méthodes pour extraire des images d’un document PDF et décoder les codes-barres intégrés par programme. En outre, vous pouvez en savoir plus sur les API en utilisant la documentation pour Aspose.BarCode et la documentation pour Aspose.PDF. En cas d’ambiguïté, n’hésitez pas à nous contacter sur notre forum.

Voir également