Codes-barres et QR dans les applications C# et VB.NET

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

La lecture et l'écriture de codes-barres en C# et dans tous les autres langages .NET sont facilitées par la bibliothèque logicielle Iron Barcode d'Iron Software.

Installer IronBarcode

La première étape du voyage sera l'installation d'Iron Barcode, qui peut être réalisée en utilisant notre paquet NuGet ou en téléchargement de la DLL de ce site web. des classes de codes-barres Iron peuvent être trouvées dans les IronBarcode l'espace de noms.

La façon la plus simple d'installer IronBarcode est d'utiliser le gestionnaire de paquets NuGet pour Visual-Studio :

Le nom du paquet est "Barcode".

Install-Package BarCode

https://www.nuget.org/packages/Barcode/

Lecture d'un code-barres ou d'un code QR

La lecture d'un code-barres avec Iron Barcode ne nécessite que quelques lignes de code.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-1.cs
using IronBarCode;

BarcodeResults results = BarcodeReader.Read("QuickStart.jpg");
if (results != null)
{
    foreach (BarcodeResult result in results)
    {
        Console.WriteLine(result.Text);
    }
}
Imports IronBarCode

Private results As BarcodeResults = BarcodeReader.Read("QuickStart.jpg")
If results IsNot Nothing Then
	For Each result As BarcodeResult In results
		Console.WriteLine(result.Text)
	Next result
End If
VB   C#

Pour améliorer la rapidité et la précision de la lecture des codes-barres, nous pouvons spécifier un format de code-barres spécifique(ou les formats) de sorte qu'Iron Barcode ne doive pas essayer tous les types de codes-barres connus. Nous pouvons également choisir une région de culture ou une zone spécifique d'une image à examiner, si elle est connue.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-2.cs
using IronBarCode;

BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions()
{
    ExpectMultipleBarcodes = false,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
    CropArea = new System.Drawing.Rectangle(100, 200, 300, 400),
};

BarcodeResults result = BarcodeReader.Read("QuickStart.jpg", myOptionsExample);
if (result != null)
{
    Console.WriteLine(result.First().Text);
}
Imports IronBarCode

Private myOptionsExample As New BarcodeReaderOptions() With {
	.ExpectMultipleBarcodes = False,
	.ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128,
	.CropArea = New System.Drawing.Rectangle(100, 200, 300, 400)
}

Private result As BarcodeResults = BarcodeReader.Read("QuickStart.jpg", myOptionsExample)
If result IsNot Nothing Then
	Console.WriteLine(result.First().Text)
End If
VB   C#

Nous pouvons également choisir de scanner plusieurs codes-barres en une seule fois.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-3.cs
using IronBarCode;

BarcodeResults results = BarcodeReader.Read("MultipleBarcodes.png");

// Loop through the results
foreach (BarcodeResult result in results)
{
    string value = result.Value;
    Bitmap img = result.BarcodeImage;
    BarcodeEncoding barcodeType = result.BarcodeType;
    byte[] binary = result.BinaryValue;
    Console.WriteLine(result.Value);
}
Imports IronBarCode

Private results As BarcodeResults = BarcodeReader.Read("MultipleBarcodes.png")

' Loop through the results
For Each result As BarcodeResult In results
	Dim value As String = result.Value
	Dim img As Bitmap = result.BarcodeImage
	Dim barcodeType As BarcodeEncoding = result.BarcodeType
	Dim binary() As Byte = result.BinaryValue
	Console.WriteLine(result.Value)
Next result
VB   C#

Nous pouvons également utiliser Iron Barcode pour lire les codes-barres d'une ou de plusieurs pages de documents PDF ou de TIFF multipages.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-4.cs
using IronBarCode;

BarcodeResults pagedResults = BarcodeReader.Read("MultipleBarcodes.pdf");

// Loop through the results
foreach (BarcodeResult result in pagedResults)
{
    int pageNumber = result.PageNumber;
    string value = result.Value;
    Bitmap img = result.BarcodeImage;
    BarcodeEncoding barcodeType = result.BarcodeType;
    byte[] binary = result.BinaryValue;
    Console.WriteLine(result.Value);
}

// or from a multi-page  TIFF scan with image correction:
BarcodeResults multiFrameResults = BarcodeReader.Read(inputImage: "Multiframe.tiff", new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Detailed,
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.Code128,
    Multithreaded = false,
    RemoveFalsePositive = false,
    ImageFilters = null
});
Imports IronBarCode

Private pagedResults As BarcodeResults = BarcodeReader.Read("MultipleBarcodes.pdf")

' Loop through the results
For Each result As BarcodeResult In pagedResults
	Dim pageNumber As Integer = result.PageNumber
	Dim value As String = result.Value
	Dim img As Bitmap = result.BarcodeImage
	Dim barcodeType As BarcodeEncoding = result.BarcodeType
	Dim binary() As Byte = result.BinaryValue
	Console.WriteLine(result.Value)
Next result

' or from a multi-page  TIFF scan with image correction:
Dim multiFrameResults As BarcodeResults = BarcodeReader.Read(inputImage:= "Multiframe.tiff", New BarcodeReaderOptions With {
	.Speed = ReadingSpeed.Detailed,
	.ExpectMultipleBarcodes = True,
	.ExpectBarcodeTypes = BarcodeEncoding.Code128,
	.Multithreaded = False,
	.RemoveFalsePositive = False,
	.ImageFilters = Nothing
})
VB   C#

Écriture de codes-barres

Pour créer ou écrire des codes-barres à l'aide d'Iron Barcode, nous utilisons la classe BarcodeWriter. Avec BarcodeWriter, l'écriture de codes-barres est extrêmement facile. Il suffit de spécifier le format du code-barres et la valeur que l'on souhaite exprimer pour créer une image qui peut être exportée en tant qu'objet System.Drawing.Image ou sauvegardée dans un fichier.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-5.cs
using IronBarCode;

GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
myBarcode.SaveAsImage("myBarcode.png");
Imports IronBarCode

Private myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
myBarcode.SaveAsImage("myBarcode.png")
VB   C#

Styliser les codes-barres

La représentation visuelle d'un code-barres peut être manipulée très facilement à l'aide d'Iron Barcode. La sortie de chaque opération de BarcodeWriter est un objet de code-barres généré. Cet objet code-barres généré possède une API Fluent, permettant de définir les paramètres graphiques du code-barres en une seule ligne de code, similaire à Linq.

Les fonctions les plus courantes pour styliser les codes-barres comprennent le redimensionnement des codes-barres, la définition des marges, la modification des couleurs d'arrière-plan, la modification des couleurs des codes-barres et la vérification que le code-barres de sortie est toujours lisible.

De la même manière, nous pouvons également ajouter des annotations telles que du texte à un code-barres dans la police de caractères de notre choix, ou placer la valeur du code-barres très facilement sous ou au-dessus du code-barres.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-6.cs
using IronBarCode;

GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
myBarcode.AddAnnotationTextAboveBarcode("Product URL:");
myBarcode.AddBarcodeValueTextBelowBarcode();
myBarcode.SaveAsImage("myBarcode.png");
Imports IronBarCode

Private myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
myBarcode.AddAnnotationTextAboveBarcode("Product URL:")
myBarcode.AddBarcodeValueTextBelowBarcode()
myBarcode.SaveAsImage("myBarcode.png")
VB   C#

Exportation de codes-barres en HTML

L'objet code-barres généré dispose également d'une fonction pratique permettant d'exporter du HTML à partir d'un code-barres généré. Il peut exporter un code-barres en tant que document HTML autonome sans ressources externes, en tant que balise HTML autonome ou en tant qu'URI de données.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-7.cs
using IronBarCode;

GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
myBarcode.AddAnnotationTextAboveBarcode("Product URL:");
myBarcode.AddBarcodeValueTextBelowBarcode();
myBarcode.SetMargins(100);
myBarcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.Purple);

// All major image formats supported as well as PDF and HTML
myBarcode.SaveAsPng("myBarcode.png");
Imports IronBarCode

Private myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
myBarcode.AddAnnotationTextAboveBarcode("Product URL:")
myBarcode.AddBarcodeValueTextBelowBarcode()
myBarcode.SetMargins(100)
myBarcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.Purple)

' All major image formats supported as well as PDF and HTML
myBarcode.SaveAsPng("myBarcode.png")
VB   C#

Générer des codes QR

Lors de la génération de codes QR à l'aide d'Iron Barcode, nous pouvons choisir d'utiliser la classe QR Code Writer au lieu de la classe BarcodeWriter. Cette classe propose de nouvelles fonctionnalités intéressantes pour l'écriture de codes QR. Il nous permet de définir le niveau de correction des erreurs QR, ce qui vous permet de décider d'un équilibre entre la taille de votre code QR et sa facilité de lecture.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-8.cs
using IronBarCode;

QRCodeWriter.CreateQrCode("https://ironsoftware.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPdf("MyQR.pdf");
Imports IronBarCode

QRCodeWriter.CreateQrCode("https://ironsoftware.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPdf("MyQR.pdf")
VB   C#

Iron Barcode permet également de styliser les codes QR, par exemple en plaçant un logo et en l'accrochant à la grille au centre exact de l'image. Il peut également être colorisé pour correspondre à une certaine marque ou identité graphique.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-9.cs
using IronBarCode;
using IronSoftware.Drawing;

QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode myQRCodeWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", qrCodeLogo);
myQRCodeWithLogo.ChangeBarCodeColor(Color.DarkGreen).SaveAsPdf("MyQRWithLogo.pdf");
Imports IronBarCode
Imports IronSoftware.Drawing

Private qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")
Private myQRCodeWithLogo As GeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", qrCodeLogo)
myQRCodeWithLogo.ChangeBarCodeColor(Color.DarkGreen).SaveAsPdf("MyQRWithLogo.pdf")
VB   C#

Formats de codes-barres pris en charge

Iron Barcode prend en charge un grand nombre de formats de codes-barres couramment utilisés :

  • Codes QR, y compris les codes QR décorés et marqués avec des logos et des couleurs
  • Codes-barres multiformats, tels que Aztec, Data Matrix, CODE 93 et CODE 128
  • Codes-barres RSS Expanded Databar, UPS MaxiCode et USPS IMb OneCode
  • Codes-barres linéaires empilés tels que RSS-14 et PDF-417
  • Formats de codes-barres numériques conventionnels tels que UPCA, UPCE, EAN-8, EAN-13, Codabar, ITF, MSI et Plessey
:path=/static-assets/barcode/content-code-examples/get-started/get-started-10.cs
using IronBarCode;

var myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
myBarcode.SaveAsImage("myBarcode.png");
myBarcode.SaveAsGif("myBarcode.gif");
myBarcode.SaveAsHtmlFile("myBarcode.html");
myBarcode.SaveAsJpeg("myBarcode.jpg");
myBarcode.SaveAsPdf("myBarcode.Pdf");
myBarcode.SaveAsPng("myBarcode.png");
myBarcode.SaveAsTiff("myBarcode.tiff");
myBarcode.SaveAsWindowsBitmap("myBarcode.bmp");
Image myBarcodeImage = myBarcode.Image;
Bitmap myBarcodeBitmap = myBarcode.ToBitmap();
string dataUrl = myBarcode.ToDataUrl();
string imgTagForHtml = myBarcode.ToHtmlTag();
byte[] pngBytes = myBarcode.ToPngBinaryData();

// Binary barcode image output also works for GIF,JPEG, PDF, PNG, BMP and TIFF
using (System.IO.Stream pdfStream = myBarcode.ToPdfStream())
{
    // Stream barcode image output also works for GIF,JPEG, PDF, PNG, BMP and TIFF
}
myBarcode.StampToExistingPdfPage("ExistingPDF.pdf", 1, 200, 50);
Imports IronBarCode

Private myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
myBarcode.SaveAsImage("myBarcode.png")
myBarcode.SaveAsGif("myBarcode.gif")
myBarcode.SaveAsHtmlFile("myBarcode.html")
myBarcode.SaveAsJpeg("myBarcode.jpg")
myBarcode.SaveAsPdf("myBarcode.Pdf")
myBarcode.SaveAsPng("myBarcode.png")
myBarcode.SaveAsTiff("myBarcode.tiff")
myBarcode.SaveAsWindowsBitmap("myBarcode.bmp")
Dim myBarcodeImage As Image = myBarcode.Image
Dim myBarcodeBitmap As Bitmap = myBarcode.ToBitmap()
Dim dataUrl As String = myBarcode.ToDataUrl()
Dim imgTagForHtml As String = myBarcode.ToHtmlTag()
Dim pngBytes() As Byte = myBarcode.ToPngBinaryData()

' Binary barcode image output also works for GIF,JPEG, PDF, PNG, BMP and TIFF
Using pdfStream As System.IO.Stream = myBarcode.ToPdfStream()
	' Stream barcode image output also works for GIF,JPEG, PDF, PNG, BMP and TIFF
End Using
myBarcode.StampToExistingPdfPage("ExistingPDF.pdf", 1, 200, 50)
VB   C#

Pourquoi choisir Iron Barcode ?

Iron Barcode propose une API conviviale pour les développeurs afin de lire et d'écrire des codes-barres pour .NET, qui optimise la précision et un faible taux d'erreur dans les cas d'utilisation du monde réel.

La classe BarcodeWriter, par exemple, validera et corrigera automatiquement les "sommes de contrôle" des codes-barres UPCA et UPCE. Il met également à zéro les numéros qui sont trop courts pour un format numérique spécifique. Si vos données ne conviennent pas au format de données spécifié, Iron Barcode indiquera au développeur un format de code-barres plus approprié qu'il pourrait utiliser.

Iron Barcode brille dans le domaine de la lecture des codes-barres lorsque le code-barres a été scanné ou a été lu à partir d'une image photographique. En d'autres termes, l'image n'est pas graphiquement parfaite et n'est pas simplement une capture d'écran générée par une machine.

Iron Barcode inclut la rotation automatique et la correction de la perspective, la correction du bruit numérique, et peut détecter automatiquement le type de code-barres qui est encodé dans une image.

Aller de l'avant

Pour tirer le meilleur parti d'Iron Barcode, nous vous encourageons à lire les tutoriels de cette section de documentation, à nous rendre visite sur GitHub, et à lire la sectionréférence de l'API .NET dans un format MSDN.