Comment lire des codes-barres dans des documents PDF
How to Read Barcode From PDF in C#
-
Installez la bibliothèque de codes-barres pour traiter les fichiers de codes-barres.
-
Créez
PdfBarcodeReaderOptions
si nécessaire. -
Utilisez la méthode
ReadPdf
deBarcodeReader
pour lire les codes-barres à partir des PDF. -
Spécifiez des options de lecture de code-barres supplémentaires en utilisant
BarcodeReaderOption
. -
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
À 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)
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
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.