Comment lire des codes-barres dans des documents PDF

This article was translated from English: Does it need improvement?
Translated
View the article in English

par Hairil Hasyimi Bin Omar

Comment lire un code-barres dans un PDF en C# ;

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

  2. Créez les PdfBarcodeReaderOptions si nécessaire.

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

  4. Spécifiez des options supplémentaires de lecture de code-barres 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. Les documents PDF étant plus complexes et différents des images, il convient d'utiliser une méthode de lecture différente, à savoir BarcodeReader.ReadPdf() method. Cette méthode accepte différents types de documents PDF, notamment :

  • tableau d'octets [] : Document PDF sous forme de tableau d'octets.
  • IEnumerable: Documents PDF sous forme de tableaux d'octets stockés dans une collection.
  • Flux de mémoire : Documents PDF en tant que type MemoryStream.
  • IEnumerable: Documents PDF en tant que collection de MemoryStream
  • Chaîne : Chaîne du chemin d'accès au document PDF. Si le document PDF est déjà copié dans le projet, il s'agit du nom du document PDF dans la chaîne.
  • IEnumerable: Chaînes de chemin/nom de document PDF stockées dans une collection.

Outre les types de données 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-thème. Voyons maintenant l'extrait de code ci-dessous qui en démontre l'utilisation BarcodeReader.ReadPdf() method to read barcodes in PDF documents.

: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
VB   C#

L'extrait de code ci-dessus montre que, pour lire des codes-barres à l'aide d'IronBarcode, il suffit d'ajouter la chaîne du chemin d'accès au document PDF dans le champ BarcodeReader.ReadPdf() method to read the barcode value, and store the result in a variable. Si vous souhaitez imprimer les valeurs de tous les codes-barres trouvés dans le document PDF sur la console, utilisez simplement foreach pour itérer et imprimer chaque élément trouvé dans la variable en appelant ToString() method on them. En outre, l'extrait de code ci-dessus démontre également l'utilisation d'une collection de noms de documents PDF en tant qu'argument dans la commande 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 lecture avancée de codes-barres PDF se déroule, au cours de laquelle nous manipulerons PdfBarcodeReaderOptions pour améliorer la qualité, la précision et la performance de la lecture.

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. Ajustement des propriétés dans PdfBarcodeReaderOptions aidera grandement à la lecture la qualité, la précision et la performance. Toutes les propriétés ajustables dans BarcodeReaderOptions sont héritées dans PdfBarcodeReaderOptionsavec quelques propriétés supplémentaires pour les documents PDF. Pour commencer, les utilisateurs peuvent spécifier le numéro de page ou collection de numéros de page à partir du document PDF dans lequel ils souhaitent que la PdfBarcodeReaderOptions à appliquer, 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)
VB   C#

Découvrons maintenant les propriétés supplémentaires de PdfBarcodeReaderOptions disponibles pour être manipulés, en dehors de ceux qui sont disponibles en 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 à l'aide de Entier valeur.

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. Ce bien accepte Chaîne l'entrée.

Échelle

Cette propriété permet aux utilisateurs de contrôler la facteur d'échelle pour la mise à l'échelle de la largeur et de la hauteur lors de la conversion en image. Ce bien accepte Entier et la valeur par défaut de cette propriété est 3.5. La définition de cette propriété facilite la lecture des petits codes-barres présents dans un document PDF, car la mise à l'échelle agrandit le document PDF.

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

Maintenant que nous connaissons les propriétés de PdfBarcodeReaderOptions nous allons voir comment les appliquer dans le projet de lecture de 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
VB   C#

L'extrait de code ci-dessus montre comment mettre en œuvre l'option PdfBarcodeReaderOptions propriétés en IronBarcode. Les 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 également, nous pouvons voir que la liste des numéros de page du document PDF a été utilisée comme argument lors de l'initialisation de l'application PdfBarcodeReaderOptions. Il s'agit du numéro de la page pour laquelle nous souhaitons obtenir les paramètres PdfBarcodeReader pour postuler. Les utilisateurs peuvent également spécifier le numéro de page du PDF dans le champ PdfBarcodeReaderOptions comme Numéros de page.

D'autre part, nous pouvons également voir que nous pouvons utiliser des propriétés de BarcodeReaderOptions tels que Attendre des codes multiples et Types de codes-barres attendus en 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 de l'ensemble de PdfBarcodeReaderOptions dans la lecture du code-barres, saisissez le nom de la variable de la PdfBarcodeReaderOptions que nous avons créée en tant que deuxième argument dans BarcodeReader.ReadPdf() method, with PDF document to be read file path as the first argument.

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

Hairil Hasyimi Bin Omar

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.