Comment lire des codes-barres dans des documents PDF

Hairil related to Comment lire des codes-barres dans des documents PDF
Hairil Hasyimi Bin Omar
mars 19, 2023
Mise à jour octobre 20, 2024
Partager:
This article was translated from English: Does it need improvement?
Translated
View the article in English

How to Read Barcode From PDF in C#

  1. Installez la bibliothèque de codes-barres pour traiter les fichiers de codes-barres.

  2. Créez PdfBarcodeReaderOptions si nécessaire.

  3. Utilisez la méthode ReadPdf de BarcodeReader pour lire les codes-barres à partir des PDF.

  4. Spécifiez des options de lecture de code-barres supplémentaires en utilisant BarcodeReaderOption.

  5. Extraire les valeurs des codes-barres.



    <

Lire directement les codes-barres des documents PDF

Outre la capacité d'IronBarcode à lire des codes-barres à partir d'images, IronBarcode est également fier de sa capacité à lire des codes-barres à partir de documents PDF. Cela évite aux utilisateurs de devoir convertir des documents PDF en images avant de les introduire dans IronBarcode pour les lire. Étant donné que les documents PDF sont plus complexes et différents des images, une méthode de lecture différente doit également être utilisée, à savoir la méthode BarcodeReader.ReadPdf(). Cette méthode accepte différents types de documents PDF, notamment :

  • byte [] array : document PDF sous forme de tableau d'octets.
  • IEnumerable : PDF documents as byte arrays stored in a collection.
  • MemoryStream : Documents PDF au format MemoryStream.
  • IEnumerable : PDF documents as collection of MemoryStream
  • String : Chaîne de chemin du document PDF. Si le document PDF est déjà copié dans le projet, ce serait le nom du document PDF sous forme de chaîne.
  • IEnumerable : PDF document path/name strings stored in a collection.

En dehors des types d'entrée mentionnés ci-dessus, BarcodeReader.ReadPdf() accepte également PdfBarcodeReaderOptions pour une lecture plus avancée/améliorée que nous aborderons dans le prochain sous-sujet. Voyons maintenant l'extrait de code ci-dessous qui démontre l'utilisation de la méthode BarcodeReader.ReadPdf() pour lire les codes-barres dans les documents PDF.

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-pdf-1.cs
using IronBarCode;
using System;
using System.Collections.Generic;

List<String> docs = new List<String>();
docs.Add(@"pdf_a.pdf");
docs.Add(@"pdf_b.pdf");

var myBarcode = BarcodeReader.ReadPdf(docs);   //can also accept individual PDF document file path as argument

foreach (var value in myBarcode)
{
    Console.WriteLine(value.ToString());
}
Imports IronBarCode
Imports System
Imports System.Collections.Generic

Private docs As New List(Of String)()
docs.Add("pdf_a.pdf")
docs.Add("pdf_b.pdf")

Dim myBarcode = BarcodeReader.ReadPdf(docs) 'can also accept individual PDF document file path as argument

For Each value In myBarcode
	Console.WriteLine(value.ToString())
Next value
$vbLabelText   $csharpLabel

À partir de l'extrait de code ci-dessus, nous pouvons voir que, pour lire des codes-barres en utilisant IronBarcode, il suffit d'ajouter la chaîne du chemin du fichier du document PDF dans la méthode BarcodeReader.ReadPdf() pour lire la valeur du code-barres et stocker le résultat dans une variable. Si vous souhaitez imprimer les valeurs de tous les codes-barres trouvés dans le document PDF sur la console, utilisez simplement la boucle foreach pour itérer et imprimer chaque élément trouvé dans la variable en appelant la méthode ToString() sur ceux-ci. En plus de cela, l'extrait de code ci-dessus démontre également l'utilisation d'une collection de noms de documents PDF en tant qu'argument dans BarcodeReader.ReadPdf().

Mais que se passe-t-il si les codes-barres du document PDF ne peuvent pas être lus ? Que se passe-t-il si les performances sont si lentes ? C'est ici que se déroule la lecture avancée de code-barres PDF, dans laquelle nous allons manipuler le PdfBarcodeReaderOptions pour améliorer la qualité de lecture, la précision et les performances.

Configuration des options du lecteur de codes-barres PDF

Tout comme la lecture de codes-barres à partir d'une image, la lecture de codes-barres à partir d'un document PDF permet également aux utilisateurs de modifier ou d'ajuster les propriétés du lecteur de codes-barres, appelées PdfBarcodeReaderOptions. Le réglage des propriétés dans PdfBarcodeReaderOptions aidera grandement à améliorer la qualité, la précision, ainsi que la performance. Toutes les propriétés ajustables dans BarcodeReaderOptions sont héritées dans PdfBarcodeReaderOptions, avec quelques propriétés supplémentaires pour les documents PDF. Pour commencer, les utilisateurs peuvent spécifier le numéro de page ou la collection de numéros de pages du document PDF dans lequel ils souhaitent que les PdfBarcodeReaderOptions s'appliquent, lors de l'instanciation d'une nouvelle instance de PdfBarcodeReaderOptions. L'extrait de code ci-dessous démontre

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-pdf-2.cs
using IronBarCode;
using System.Collections.Generic;

List<int> pageNumber = new List<int>() { 1, 2, 3 };

PdfBarcodeReaderOptions PdfOptions = new PdfBarcodeReaderOptions(pageNumber)  // can also use individual page number as argument
{
    // Properties of PDF Barcode reader options
};
Imports IronBarCode
Imports System.Collections.Generic

Private pageNumber As New List(Of Integer)() From {1, 2, 3}

Private PdfOptions As New PdfBarcodeReaderOptions(pageNumber)
$vbLabelText   $csharpLabel

Découvrons maintenant les propriétés supplémentaires dans PdfBarcodeReaderOptions disponibles pour être manipulées, en dehors de celles disponibles dans BarcodeReaderOptions.

DPI

Les utilisateurs peuvent spécifier le nombre de points par pouce (DPI) de l'image du code-barres dans un document PDF. Cela permet de lire une image de code-barres de faible qualité dans un document PDF. Cette propriété peut être définie en utilisant une valeur Integer.

Numéros de page

Si les utilisateurs connaissent à l'avance le numéro de page qui contient le code-barres qui doit être lu dans un document PDF, ils peuvent le spécifier dans cette propriété. Cela améliorera considérablement les performances de lecture d'IronBarcode, en particulier pour les documents PDF comportant de nombreuses pages, puisque IronBarcode n'aura pas besoin de lire toutes les pages ou les pages qui ne comportent pas de codes-barres à lire. Cette propriété est basée sur 1, ce qui signifie que la première page du document PDF est 1 au lieu de 0.

Mot de passe

Comme son nom l'indique, cette propriété permet aux utilisateurs de travailler avec des fichiers PDF cryptés qui nécessitent la saisie d'un mot de passe pour accéder au contenu du document PDF. Notez toutefois qu'IronBarcode ne sera pas en mesure de donner le mot de passe des documents PDF. Cette propriété acceptera une entrée de type String.

Échelle

Cette propriété permet aux utilisateurs de contrôler le facteur d'échelle pour ajuster la largeur et la hauteur lors de la conversion en image. Cette propriété accepte un Integer comme valeur et la valeur par défaut de cette propriété est 3.5. Définir cette propriété aidera à lire les petits codes-barres présents dans un document PDF car l'agrandissement du document PDF sera effectué par le zoom.

Lecture avancée de codes-barres à partir d'un document PDF

Maintenant que nous connaissons les propriétés de PdfBarcodeReaderOptions disponibles pour les ajustements et modifications, voyons comment les appliquer dans le projet pour lire les codes-barres dans un document PDF.

:path=/static-assets/barcode/content-code-examples/how-to/read-barcodes-from-pdf-3.cs
using IronBarCode;
using System;
using System.Collections.Generic;

List<int> pageNumber = new List<int>() { 1, 2, 3 };

PdfBarcodeReaderOptions PdfOptions = new PdfBarcodeReaderOptions(pageNumber)
{
    DPI = 150,
    //PageNumbers = pageNumber,      //this property is not needed if page numbers has been specified as the argument in PdfBarcodeReaderOptions
    Password = "barcode",
    Scale = 3.5,
    //properties below are some of the properties inherited from BarcodeReaderOptions
    Speed = ReadingSpeed.Detailed,
    ExpectBarcodeTypes = BarcodeEncoding.Code93,
    ExpectMultipleBarcodes = true
};

var myBarcode = BarcodeReader.ReadPdf(@"pdf_a_filepath.pdf", PdfOptions);
foreach (var value in myBarcode)
{
    Console.WriteLine(value.ToString());
}
Imports IronBarCode
Imports System
Imports System.Collections.Generic

Private pageNumber As New List(Of Integer)() From {1, 2, 3}

Private PdfOptions As New PdfBarcodeReaderOptions(pageNumber) With {
	.DPI = 150,
	.Password = "barcode",
	.Scale = 3.5,
	.Speed = ReadingSpeed.Detailed,
	.ExpectBarcodeTypes = BarcodeEncoding.Code93,
	.ExpectMultipleBarcodes = True
}

Private myBarcode = BarcodeReader.ReadPdf("pdf_a_filepath.pdf", PdfOptions)
For Each value In myBarcode
	Console.WriteLine(value.ToString())
Next value
$vbLabelText   $csharpLabel

L'extrait de code ci-dessus démontre comment implémenter les propriétés PdfBarcodeReaderOptions dans IronBarcode. Le PdfBarcodeReaderOptions doit d'abord être initialisé avec un nom de variable avant d'accéder aux propriétés et de les ajuster. Dans l'extrait de code, nous pouvons également voir que la liste des numéros de page du document PDF a été utilisée comme argument lors de l'initialisation de PdfBarcodeReaderOptions. Cela spécifie le numéro de page auquel nous souhaitons que les paramètres de PdfBarcodeReader s'appliquent. Les utilisateurs peuvent également spécifier le numéro de page PDF dans la propriété PdfBarcodeReaderOptions en tant que PageNumbers.

D'autre part, nous pouvons également voir que nous pouvons utiliser des propriétés de BarcodeReaderOptions telles que ExpectMultipleBarcodes et ExpectBarcodeTypes dans PdfBarcodeReaderOptions puisqu'elles sont héritées de la classe d'origine. Cela contribuera grandement à la performance et à la précision de la lecture. Pour appliquer les propriétés définies de PdfBarcodeReaderOptions dans la lecture du code-barres, entrez le nom de la variable de la classe PdfBarcodeReaderOptions que nous avons créée comme deuxième argument dans la méthode BarcodeReader.ReadPdf(), avec le chemin du fichier du document PDF à lire comme premier argument.

Hairil related to Lecture avancée de codes-barres à partir d'un document PDF
Ingénieur logiciel
Comme tous les grands ingénieurs, Hairil est un fervent apprenant. Il affine ses connaissances en C#, Python et Java, et les utilise pour apporter une valeur ajoutée aux membres de l'équipe d'Iron Software. Hairil a rejoint l'équipe d'Iron Software en provenance de l'Universiti Teknologi MARA en Malaisie, où il a obtenu une licence en génie chimique et des procédés.