C# + VB.Net: Barcode Quickstart Barcode Quickstart
using IronBarCode;

    
/******     WRITE     *******/

// Create A Barcode in 1 Line of Code
BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeWriterEncoding.QRCode).SaveAsJpeg("QuickStart.jpg");


/******    READ    *******/

// Read A Barcode in 1 Line of Code.  Gets Text, Numeric Codes, Binary Data and an Image of the barcode
BarcodeResult Result = BarcodeReader.QuicklyReadOneBarcode("QuickStart.jpg");

// Assert that IronBarCode Works :-)
if (Result!=null && Result.Text == "https://ironsoftware.com/csharp/barcode")
{
    System.Console.WriteLine("Success");
}
Imports IronBarCode
' Create A Barcode in 1 Line of Code
BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeWriterEncoding.QRCode).SaveAsJpeg("QuickStart.jpg")
Dim Result As BarcodeResult = BarcodeReader.QuicklyReadOneBarcode("QuickStart.jpg")
' Assert that IronBarCode Works :-)
If ((Not (Result) Is Nothing)  _
            AndAlso (Result.Text = "https://ironsoftware.com/csharp/barcode")) Then
    System.Console.WriteLine("Success")
End If

The IronBarcode.BarcodeWriter class can be used to create barcodes from strings, numbers, or binary data and encode to an appropriate format, then export as an image, a PDF, HTML, or as a System.Drawing.Image or Bitmap object.

Likewise, we can read barcodes using the BarcodeReader class. The easiest method to use is QuicklyReadOneBarcode , as shown above.

C# + VB.Net: Reading Barcodes and QR Reading Barcodes and QR
using IronBarCode;
using System;
using System.Drawing;  // Include a reference to System.Drawing.Dll


/*** GET STARED WITH BARCODE READING ***/

// Read almost any Barcode or QR in 1 line of Code.
BarcodeResult QRResult = BarcodeReader.QuicklyReadOneBarcode("QR.png");

// Work with the results
if (QRResult != null)
{
    string Value = QRResult.Value;
    Bitmap Img = QRResult.BarcodeImage;
    BarcodeEncoding BarcodeType = QRResult.BarcodeType;
    byte[] Binary = QRResult.BinaryValue;
    Console.WriteLine(QRResult.Value);
}

// Setting the optional BarcodeEncoding and TryHarder settings will improve performance
BarcodeResult QRBetterResult = BarcodeReader.QuicklyReadOneBarcode("QR.png", BarcodeEncoding.QRCode, true);

// Multiple Barcode Formats May be Specified using the | Pipe Operator
BarcodeResult FormatsResult = BarcodeReader.QuicklyReadOneBarcode("QR.png", BarcodeEncoding.QRCode | BarcodeEncoding.PDF417 | BarcodeEncoding.Code128);



/***  READING MULTIPLE BARCODES FROM 1 IMAGE OR PDF DOCUMENT ***/

// Multiple barcodes may be scanned up from a single document or image.  A PDF document may also used as the input image
BarcodeResult[] PDFResults = BarcodeReader.QuiclyReadAllBarcodes("MultipleBarcodes.pdf", BarcodeEncoding.AllOneDimensional, true);

// Work with the results
foreach (var PDFResult in PDFResults)
{
    string Value = PDFResult.Value;
    Bitmap Img = PDFResult.BarcodeImage;
    BarcodeEncoding BarcodeType = PDFResult.BarcodeType;
    byte[] Binary = PDFResult.BinaryValue;
    Console.WriteLine(PDFResult.Value);
}

// Multi frame TIFF and GIF images can also be scanned, and multiple threads will be used automatically in the background for improved performance
BarcodeResult[] MultiFrameResults = BarcodeReader.ReadBarcodesFromMultiFrameTiff("Multiframe.tiff", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.Low, BarcodeReader.BarcodeImageCorrection.None);

// The BarcodeResult.ReadBarcodesMultiThreaded method allows for faster barcode scanning of multiple images or PDFs.  All threads are automatically managed by IronBarCode.
var ListOfDocuments = new[] { "Image1.png", "image2.JPG", "image3.pdf" };
PagedBarcodeResult[] BatchResults = BarcodeReader.ReadBarcodesMultiThreaded(ListOfDocuments);





/***  READING BARCODES FROM ONLY PART OF AN IMAGE OR DOCUMENT ***/

//  All BarcodeResult.Read methods all have counterparts that support only scanning for barcodes in specific parts of documents.
//  This really helps performance when  processing batches of similar documents, forms, tickets, financial documents etc.

System.Drawing.Rectangle MyCropArea = new Rectangle { X = 165, Y = 225, Width = 500, Height = 200 }; // measured in pixels
BarcodeResult[] InvoiceResults = BarcodeReader.ReadAllBarcodesInCropArea("Invoice.Tiff", MyCropArea, BarcodeEncoding.Code128);

//  To read barcodes from only 1 or selected pages of a PDF, the ReadBarcodesFromPdfPage and ReadBarcodesFromPdfPages methods can be used.
//  Page numbers are 1 based (the first page is  1 not zero)
PagedBarcodeResult[] Page3ScanResults = BarcodeReader.ReadBarcodesFromPdfPage("PileofInvoices.pdf", 3, BarcodeEncoding.PDF417);
Imports IronBarCode
Imports System
Imports System.Drawing
Dim QRResult As BarcodeResult = BarcodeReader.QuicklyReadOneBarcode("QR.png")
' Work with the results
If (Not (QRResult) Is Nothing) Then
    Dim Value As String = QRResult.Value
    Dim Img As Bitmap = QRResult.BarcodeImage
    Dim BarcodeType As BarcodeEncoding = QRResult.BarcodeType
    Dim Binary() As Byte = QRResult.BinaryValue
    Console.WriteLine(QRResult.Value)
End If

Dim QRBetterResult As BarcodeResult = BarcodeReader.QuicklyReadOneBarcode("QR.png", BarcodeEncoding.QRCode, true)
Dim FormatsResult As BarcodeResult = BarcodeReader.QuicklyReadOneBarcode("QR.png", (BarcodeEncoding.QRCode  _
                Or (BarcodeEncoding.PDF417 Or BarcodeEncoding.Code128)))
Dim PDFResults() As BarcodeResult = BarcodeReader.QuiclyReadAllBarcodes("MultipleBarcodes.pdf", BarcodeEncoding.AllOneDimensional, true)
' Work with the results
For Each PDFResult In PDFResults
    Dim Value As String = PDFResult.Value
    Dim Img As Bitmap = PDFResult.BarcodeImage
    Dim BarcodeType As BarcodeEncoding = PDFResult.BarcodeType
    Dim Binary() As Byte = PDFResult.BinaryValue
    Console.WriteLine(PDFResult.Value)
Next
Dim MultiFrameResults() As BarcodeResult = BarcodeReader.ReadBarcodesFromMultiFrameTiff("Multiframe.tiff", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.Low, BarcodeReader.BarcodeImageCorrection.None)
Dim ListOfDocuments As var
,"image2.JPG"
,"image3.pdf"
UnknownDim BatchResults() As PagedBarcodeResult = BarcodeReader.ReadBarcodesMultiThreaded(ListOfDocuments)
Dim MyCropArea As System.Drawing.Rectangle = New Rectangle() {X=165, Y=225, Width=500, Height=200}
Dim InvoiceResults() As BarcodeResult = BarcodeReader.ReadAllBarcodesInCropArea("Invoice.Tiff", MyCropArea, BarcodeEncoding.Code128)
Dim Page3ScanResults() As PagedBarcodeResult = BarcodeReader.ReadBarcodesFromPdfPage("PileofInvoices.pdf", 3, BarcodeEncoding.PDF417)

The BarcodeReader.QuicklyReadOneBarcode method in the IronBarCode namespace is an incredibly useful utility for reading barcodes for in the .NET framework. By specifying a barcode encoding format, we can greatly improve performance, and by setting the TryHarder variable to True, we can cause it to automatically correct for perspective and digital noise.

The QuicklyReadAllBarcodes method is very similar; however, it can be used to read multiple barcodes for multipage documents such as PDFs or multipage TIFFs.

We can also see from this example that we may choose to only read barcodes from a specific area of a document using a System.Drawing.Rectangle. This is very useful when we’re reading barcodes from regular locations within documents such as memos, invoices, or checks.

C# + VB.Net: Imperfect Barcodes and Image Correction Imperfect Barcodes and Image Correction
using IronBarCode;


/*** READING BARCODES FROM IMPERFECT IMAGES, PHOTOS AND SCANS ***/

// Shorthand:: BarcodeReader.QuicklyReadOneBarcode will automatically try to clean and deskew barcodes from images if you add 'true' as the last TryHarder parameter
BarcodeResult Result = BarcodeReader.QuicklyReadOneBarcode("QuickStart.jpg", BarcodeEncoding.All, true);


// All BarcodeResult 'Read' methods provide the developer with control to correct image and photograph correction and straightening rotation and perspective from skewed images
// * RotationCorrection -  un-skews and removes perspective from barcode images.
// * ImageCorrection - separates Barcodes from background imagery and digital noise.
// * BarcodeEncoding  - BarcodeEncoding.Code128  Setting a specific Barcode format improves speed and reduces the risk of false positive results

// Example with a photo image
BarcodeResult PhotoResults = BarcodeReader.ReadASingleBarcode("Photo.png", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.Medium, BarcodeReader.BarcodeImageCorrection.DeepCleanPixels);

// Example with a scanned document as a PDF
PagedBarcodeResult[] ScanResults = BarcodeReader.ReadBarcodesFromPdf("Scan.pdf", BarcodeEncoding.QRCode | BarcodeEncoding.PDF417, BarcodeReader.BarcodeRotationCorrection.Low, BarcodeReader.BarcodeImageCorrection.LighlyCleanPixels);

// Small or 'Thumbnail' barcode images are automatically detected by IronBarCode and corrected for wherever possible even if they have much digital noise.
BarcodeResult SmallResult = BarcodeReader.QuicklyReadOneBarcode("ThumbnailOfBarcode.gif", BarcodeEncoding.Code128);
Imports IronBarCode
Dim Result As BarcodeResult = BarcodeReader.QuicklyReadOneBarcode("QuickStart.jpg", BarcodeEncoding.All, true)
Dim PhotoResults As BarcodeResult = BarcodeReader.ReadASingleBarcode("Photo.png", BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.Medium, BarcodeReader.BarcodeImageCorrection.DeepCleanPixels)
Dim ScanResults() As PagedBarcodeResult = BarcodeReader.ReadBarcodesFromPdf("Scan.pdf", (BarcodeEncoding.QRCode Or BarcodeEncoding.PDF417), BarcodeReader.BarcodeRotationCorrection.Low, BarcodeReader.BarcodeImageCorrection.LighlyCleanPixels)
Dim SmallResult As BarcodeResult = BarcodeReader.QuicklyReadOneBarcode("ThumbnailOfBarcode.gif", BarcodeEncoding.Code128)

The shorthand for reading imperfect images, de-skewing them, and cleaning them to make otherwise unreadable barcodes readable is simply to use the QuicklyReadOneBarcode method with the TryHarder flag set to true.

By setting RotationCorrection, ImageCorrection, and BarcodeEncoding settings of any of the BarcodeReader methods, we see that we can increase the accuracy and tailor-make our barcode reading solution to our situation. Too much image preprocessing may cause our barcode reading to take a long time, whereas too little may make barcodes unreadable.

Iron Barcode makes it very easy for developers to find and strike that fine balance without wasting days of their own time working with image manipulation frameworks.

C# + VB.Net: Creating Barcodes Images Creating Barcodes Images
using IronBarCode;
using System.Drawing;  // Include a reference to System.Drawing.Dll



/*** CREATING BARCODE IMAGES ***/

// Shorthand:: Create and save a barcode in a single line of code
BarcodeWriter.CreateBarcode("12345", BarcodeWriterEncoding.EAN8).ResizeTo(400, 100).SaveAsImage("EAN8.jpeg");


/*****  IN-DEPTH BARCODE CREATION OPTIONS *****/

// BarcodeWriter.CreateBarcode creates a GeneratedBarcode which can be styles and exported as an Image object or File
GeneratedBarcode MyBarCode = BarcodeWriter.CreateBarcode("Any Number, String or Binary Value", BarcodeWriterEncoding.Code128);

// Style the Barcode in a fluent LINQ style fashion
MyBarCode.ResizeTo(300, 150).SetMargins(20).AddAnnotationTextAboveBarcode("Example EAN8 Barcode").AddBarcodeValueTextBelowBarcode();
MyBarCode.ChangeBackgroundColor(Color.LightGoldenrodYellow);

// Save MyBarCode as an image file
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");

// Save MyBarCode as a .Net native objects
Image MyBarCodeImage = MyBarCode.Image;
Bitmap MyBarCodeBitmap = MyBarCode.ToBitmap();

byte[] PngBytes = MyBarCode.ToPngBinaryData();

using (System.IO.Stream PdfStream = MyBarCode.ToPdfStream())
{
    // Stream barcode image output also works for GIF,JPEG, PDF, PNG, BMP and TIFF
}

// Save MyBarCode as HTML files and tags
MyBarCode.SaveAsHtmlFile("MyBarCode.Html");
string ImgTagForHTML = MyBarCode.ToHtmlTag();
string DataURL = MyBarCode.ToDataUrl();

// Save MyBarCode to a new PDF, or stamp it in any position on any page(s) of an existing Document
MyBarCode.SaveAsPdf("MyBarCode.Pdf"); 
MyBarCode.StampToExistingPdfPage("ExistingPDF.pdf", 200, 50, 1);  // position 200x50 on page 1
MyBarCode.StampToExistingPdfPages("ExistingPDF.pdf", 200, 50, new[] { 1, 2, 3 }, "Password123");  // multiple pages of an encrypted PDF
Imports IronBarCode
Imports System.Drawing
' Include a reference to System.Drawing.Dll
' Shorthand:: Create and save a barcode in a single line of code
BarcodeWriter.CreateBarcode("12345", BarcodeWriterEncoding.EAN8).ResizeTo(400, 100).SaveAsImage("EAN8.jpeg")
Dim MyBarCode As GeneratedBarcode = BarcodeWriter.CreateBarcode("Any Number, String or Binary Value", BarcodeWriterEncoding.Code128)
' Style the Barcode in a fluent LINQ style fashion
MyBarCode.ResizeTo(300, 150).SetMargins(20).AddAnnotationTextAboveBarcode("Example EAN8 Barcode").AddBarcodeValueTextBelowBarcode
MyBarCode.ChangeBackgroundColor(Color.LightGoldenrodYellow)
' Save MyBarCode as an image file
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 PngBytes() As Byte = MyBarCode.ToPngBinaryData
Imports (
Dim PdfStream As System.IO.Stream = MyBarCode.ToPdfStream
Dim ImgTagForHTML As String = MyBarCode.ToHtmlTag
Dim DataURL As String = MyBarCode.ToDataUrl
' Save MyBarCode to a new PDF, or stamp it in any position on any page(s) of an existing Document
MyBarCode.SaveAsPdf("MyBarCode.Pdf")
MyBarCode.StampToExistingPdfPage("ExistingPDF.pdf", 200, 50, 1)
' position 200x50 on page 1
MyBarCode.StampToExistingPdfPages("ExistingPDF.pdf", 200, 50, new, [)
Unknown{1
,2
,3
Unknown,"Password123"
UnknownUnknown

In this example we see that barcodes of many different types and formats can be created, resized, and saved; possibly even in a single line of code.

Using the Fluent API, the generated barcode class can be used to set margins, resize, and annotate barcodes. They may then be saved as images with IronOCR automatically assuming the correct image type from a file name: GIFs, HTML files, HTML tags, JPEGs, PDFs, PNGs, TIFFs, and Windows Bitmaps.

We also have the StampToExistingPdfPage method, which allows a barcode to be generated and stamped onto an existing PDF. This is useful when editing a generic PDF or adding an internal identification number to a document via a barcode.

C# + VB.Net: Supported Barcode Formats Supported Barcode Formats
using IronBarCode;
using System.Drawing;   // Include a reference to System.Drawing.Dll

/*** READING BARCODES & BARCODEENCODING  ***/

// When reading a barcode we can select One or Many IronBarCode.BarcodeEncoding to read.  The fewer chosen the faster the results.

BarcodeResult ResultOneFormat = BarcodeReader.QuicklyReadOneBarcode("QuickStart.jpg", BarcodeEncoding.Rss14);  // 1 format selected

// Multiple formats can selected using the Bitwise OR (| pipe) operator.
BarcodeResult ResultMultiFormat = BarcodeReader.QuicklyReadOneBarcode("QuickStart.jpg", BarcodeEncoding.Rss14 | BarcodeEncoding.UPCA | BarcodeEncoding.QRCode);

// Not specifying a BarcodeEncoding will attempt to read every known type of barcode which is slower and may lead to false positive results in noisy images occasionally
BarcodeResult ResultAnyFormat = BarcodeReader.QuicklyReadOneBarcode("QuickStart.jpg");


/*** WRITING BARCODES & BARCODEWRITERENCODING  ***/


// When creating a barcode we must choose ONE type of barcode using a IronBarCode.BarcodeWriterEncoding
GeneratedBarcode MyBarCode = BarcodeWriter.CreateBarcode("12345", BarcodeWriterEncoding.UPCA);

// SUPPORTED BARCODE FORMATS:
// * QR Codes including decorated QR Codes with Logos and colors
// * Multi-Format Barcodes: Aztec, Data Matrix, Code 93 and Code 128
// * RSS Expanded "Databar", UPS MaxiCode and USPS IMB OneCode Barcodes (Read-Only)
// * Linear Stacked Barcodes: RSS14 &  PDF417
// * Numerical Formats:  UPC-A,  UPC-E, EAN-8, EAN-13, Codabar, ITF, MSI & Plessey

// BARCODE FORMAT ERROR CORRECTION:
// * BarcodeWriter will automatically check and correct/add Checksums to UPC-A and UPC-E barcodes
// * BarcodeWriter will automatically 'zero pad' numbers which are too short for any fixed length numeric format such as UPC-A
// * If your data can not be encoded to a specific BarcodeWriterEncoding, an IronBarcodeEncodingError with detailed instructions to solve the issue will be raised.


/*** BARCODE EXPORT FORMATS ***/

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();
byte[] PngBytes = MyBarCode.ToPngBinaryData();
System.IO.Stream PngStream = MyBarCode.ToStream();
System.IO.Stream PdfStream = MyBarCode.ToPdfStream();
string ImgTagForHTML = MyBarCode.ToHtmlTag();
MyBarCode.SaveAsPdf("MyBarCode.Pdf");
MyBarCode.StampToExistingPdfPage("ExistingPDF.pdf", 200, 50, 1);  // position 200x50 on page 1
MyBarCode.StampToExistingPdfPages("ExistingPDF.pdf", 200, 50, new[] { 1, 2, 3 }, "Password123");  // multiple pages of an encrypted PDF
Imports IronBarCode
Imports System.Drawing
Dim ResultOneFormat As BarcodeResult = BarcodeReader.QuicklyReadOneBarcode("QuickStart.jpg", BarcodeEncoding.Rss14)
Dim ResultMultiFormat As BarcodeResult = BarcodeReader.QuicklyReadOneBarcode("QuickStart.jpg", (BarcodeEncoding.Rss14  _
                Or (BarcodeEncoding.UPCA Or BarcodeEncoding.QRCode)))
Dim ResultAnyFormat As BarcodeResult = BarcodeReader.QuicklyReadOneBarcode("QuickStart.jpg")
Dim MyBarCode As GeneratedBarcode = BarcodeWriter.CreateBarcode("12345", BarcodeWriterEncoding.UPCA)
' SUPPORTED BARCODE FORMATS:
' * QR Codes including decorated QR Codes with Logos and colors
' * Multi-Format Barcodes: Aztec, Data Matrix, Code 93 and Code 128
' * RSS Expanded "Databar", UPS MaxiCode and USPS IMB OneCode Barcodes (Read-Only)
' * Linear Stacked Barcodes: RSS14 &  PDF417
' * Numerical Formats:  UPC-A,  UPC-E, EAN-8, EAN-13, Codabar, ITF, MSI & Plessey
' BARCODE FORMAT ERROR CORRECTION:
' * BarcodeWriter will automatically check and correct/add Checksums to UPC-A and UPC-E barcodes
' * BarcodeWriter will automatically 'zero pad' numbers which are too short for any fixed length numeric format such as UPC-A
' * If your data can not be encoded to a specific BarcodeWriterEncoding, an IronBarcodeEncodingError with detailed instructions to solve the issue will be raised.
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 PngBytes() As Byte = MyBarCode.ToPngBinaryData
Dim PngStream As System.IO.Stream = MyBarCode.ToStream
Dim PdfStream As System.IO.Stream = MyBarCode.ToPdfStream
Dim ImgTagForHTML As String = MyBarCode.ToHtmlTag
MyBarCode.SaveAsPdf("MyBarCode.Pdf")
MyBarCode.StampToExistingPdfPage("ExistingPDF.pdf", 200, 50, 1)
' position 200x50 on page 1
MyBarCode.StampToExistingPdfPages("ExistingPDF.pdf", 200, 50, new, [)
Unknown{1
,2
,3
Unknown,"Password123"
UnknownUnknown

Iron Barcode supports a vast array of barcode types - the vast majority of all barcodes in current usage. Supported barcodes include the QR format, including QR codes which have been decorated with logos and colors. Iron Barcode also supports other multi-format barcodes such as Aztec, Data Matrix, CODE 93, and CODE 128, which can encode many types of data including binary data, text, and numbers.

We also support the RSS Expanded Databar, UPS, and USPS address barcode systems in addition to the linear stacked barcodes, RSS-14, and PDF-417. Finally, we of course support the classic numeric formats of UPCA, UPCE, EAN-8, EAN-13, Codabar, ITF, MSI, and Plessey.

C# + VB.Net: Barcode Styling & Annotation Barcode Styling & Annotation
using System;
using IronBarCode;
using System.Drawing;  // Include a reference to System.Drawing.Dll


/*** STYING GENERATED BARCODES  ***/

// BarcodeWriter.CreateBarcode creates a GeneratedBarcode object which allows the barcode to be styled and annotated.
GeneratedBarcode MyBarCode = BarcodeWriter.CreateBarcode("Iron Software", BarcodeWriterEncoding.QRCode); 

// Any text (or commonly, the value of the barcode) can be added to the image in a default or specified font.
// Text positions are automatically centered, above or below.  Fonts that are too large for a given image are automatically scaled down.
MyBarCode.AddBarcodeValueTextBelowBarcode();
MyBarCode.AddAnnotationTextAboveBarcode("This is My Barcode", new Font(new FontFamily("Arial"), 12, FontStyle.Regular, GraphicsUnit.Pixel), Color.DarkSlateBlue);

// Resize, add Margins and Check final Image Dimensions
MyBarCode.ResizeTo(300, 300); // pixels
MyBarCode.SetMargins(0, 20, 0, 20);

int FinalWidth = MyBarCode.Width;
int FinalHeight = MyBarCode.Height;

//Recolor the barcode and its background
MyBarCode.ChangeBackgroundColor(Color.LightGray);
MyBarCode.ChangeBarCodeColor(Color.DarkSlateBlue);
if (!MyBarCode.Verify())
{
    Console.WriteLine("Color contrast should be at least 50% or a barcode may become unreadable.  Test using GeneratedBarcode.Verify()");
}

// Finally save the result
MyBarCode.SaveAsHtmlFile("StyledBarcode.html");


/*** STYING BARCODES IN A SINGLE LINQ STYLE EXPRESSION ***/

// Fluent API
BarcodeWriter.CreateBarcode("https://ironsoftware.com", BarcodeWriterEncoding.Aztec).ResizeTo(250, 250).SetMargins(10).AddBarcodeValueTextAboveBarcode().SaveAsImage("StyledBarcode.png");


/*** STYING QR CODES WITH LOGO IMAGES OR BRANDING ***/

// Use the QRCodeWriter.CreateQrCodeWithLogo Method instead of BarcodeWriter.CreateBarcode
// Logo will automatically be sized appropriately and snapped to the QR grid.

GeneratedBarcode QRWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://visualstudio.microsoft.com/", "visual-studio-logo.png");
QRWithLogo.ResizeTo(500, 500).SetMargins(10).ChangeBarCodeColor(Color.DarkGreen);
QRWithLogo.SaveAsPng("QRWithLogo.Png").SaveAsPdf("MyVerifiedQR.html"); // save as 2 formats 
Imports System
Imports IronBarCode
Imports System.Drawing
Dim MyBarCode As GeneratedBarcode = BarcodeWriter.CreateBarcode("Iron Software", BarcodeWriterEncoding.QRCode)
' Any text (or commonly, the value of the barcode) can be added to the image in a default or specified font.
' Text positions are automatically centered, above or below.  Fonts that are too large for a given image are automatically scaled down.
MyBarCode.AddBarcodeValueTextBelowBarcode
MyBarCode.AddAnnotationTextAboveBarcode("This is My Barcode", New Font(New FontFamily("Arial"), 12, FontStyle.Regular, GraphicsUnit.Pixel), Color.DarkSlateBlue)
' Resize, add Margins and Check final Image Dimensions
MyBarCode.ResizeTo(300, 300)
' pixels
MyBarCode.SetMargins(0, 20, 0, 20)
Dim FinalWidth As Integer = MyBarCode.Width
Dim FinalHeight As Integer = MyBarCode.Height
'Recolor the barcode and its background
MyBarCode.ChangeBackgroundColor(Color.LightGray)
MyBarCode.ChangeBarCodeColor(Color.DarkSlateBlue)
If Not MyBarCode.Verify Then
    Console.WriteLine("Color contrast should be at least 50% or a barcode may become unreadable.  Test using GeneratedBarcod"& _ 
        "e.Verify()")
End If

' Finally save the result
MyBarCode.SaveAsHtmlFile("StyledBarcode.html")
' Fluent API
BarcodeWriter.CreateBarcode("https://ironsoftware.com", BarcodeWriterEncoding.Aztec).ResizeTo(250, 250).SetMargins(10).AddBarcodeValueTextAboveBarcode.SaveAsImage("StyledBarcode.png")
Dim QRWithLogo As GeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://visualstudio.microsoft.com/", "visual-studio-logo.png")
QRWithLogo.ResizeTo(500, 500).SetMargins(10).ChangeBarCodeColor(Color.DarkGreen)
QRWithLogo.SaveAsPng("QRWithLogo.Png").SaveAsPdf("MyVerifiedQR.html")
' save as 2 formats 

In this sample, we see that barcodes may be annotated with text of your choosing or the barcode’s own value using any typeface which is installed on the target machine. If that typeface is not available, an appropriate similar typeface will be chosen. Barcodes may be resized, have margins added, and both the barcode and the background may be recolored. They may then be saved as an appropriate format.

In the final few lines of code, you can see that using our fluent style operators, it’s possible to create and style a barcode in only a few lines of code, similar to System.Linq.

C# + VB.Net: Advanced QR Code Writing Advanced QR Code Writing
using System;
using IronBarCode;
using System.Drawing;  // Include a reference to System.Drawing.Dll



/*** GENERATING QR CODES WITH THE QRCODEWRITER CLASS ***/

// Using the QRCodeWriter.CreateQrCodeWithLogo Method instead of BarcodeWriter.CreateBarcode exposes additional QR creation options.
// Choosing a high QRCodeWriter.QrErrorCorrectionLevel makes QR codes more fault tolerant and faster to read
GeneratedBarcode RandomQR = QRCodeWriter.CreateQrCode(Guid.NewGuid().ToString(), 500, QRCodeWriter.QrErrorCorrectionLevel.Highest);
RandomQR.AddAnnotationTextAboveBarcode("Your Random Key is" + RandomQR.Value).SaveAsJpeg("RandomQR.jpeg");



/*** STYING QR CODES WITH LOGO IMAGES OR BRANDING ***/

// Use the QRCodeWriter.CreateQrCodeWithLogo Method instead of BarcodeWriter.CreateBarcode
// Logo will automatically be sized appropriately and snapped to the QR grid.

GeneratedBarcode QRWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://visualstudio.microsoft.com/", "visual-studio-logo.png");
QRWithLogo.ResizeTo(500, 500).SetMargins(10).ChangeBarCodeColor(Color.DarkGreen);
QRWithLogo.SaveAsPng("QRWithLogo.Png").SaveAsPdf("MyVerifiedQR.html"); // save as 2 formats 
Imports System
Imports IronBarCode
Imports System.Drawing
Dim RandomQR As GeneratedBarcode = QRCodeWriter.CreateQrCode(Guid.NewGuid.ToString, 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
RandomQR.AddAnnotationTextAboveBarcode(("Your Random Key is" + RandomQR.Value)).SaveAsJpeg("RandomQR.jpeg")
Dim QRWithLogo As GeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://visualstudio.microsoft.com/", "visual-studio-logo.png")
QRWithLogo.ResizeTo(500, 500).SetMargins(10).ChangeBarCodeColor(Color.DarkGreen)
QRWithLogo.SaveAsPng("QRWithLogo.Png").SaveAsPdf("MyVerifiedQR.html")
' save as 2 formats 

Iron Barcode allows a developer to create QR codes with more options than they do for creating normal barcodes. For example, we can set QR error correction levels, we can color QR codes, and we can also add logos.

If a logo is added to a QR code, it is automatically resized to an appropriate dimension where the QR can still be read and then snapped to grid so that it is aligned perfectly with the black-and-white squares on the QR image.

C# + VB.Net: Export Barcodes as HTML Export Barcodes as HTML
using IronBarCode;


/*** EXPORTING BARCODES AS HTML FILES OR TAGS ***/

GeneratedBarcode MyBarCode = BarcodeWriter.CreateBarcode("1234567890", BarcodeWriterEncoding.Code128);

// Save as a stand-alone HTML file with no image assets required
MyBarCode.SaveAsHtmlFile("MyBarCode.html");

// Save as a stand-alone HTML image tag which can be served in HTML files, ASPX or MVC Views.  No image assets required, the tag embeds the entire image in its Src contents
string ImgTag = MyBarCode.ToHtmlTag();

// Turn the image into an Html/CSS Data URI.  https://en.wikipedia.org/wiki/Data_URI_scheme
string DataURI = MyBarCode.ToDataUrl();
Imports IronBarCode
Dim MyBarCode As GeneratedBarcode = BarcodeWriter.CreateBarcode("1234567890", BarcodeWriterEncoding.Code128)
' Save as a stand-alone HTML file with no image assets required
MyBarCode.SaveAsHtmlFile("MyBarCode.html")
Dim ImgTag As String = MyBarCode.ToHtmlTag
Dim DataURI As String = MyBarCode.ToDataUrl

Iron Barcode has a very useful feature allowing barcodes to be exported as HTML that is self-contained, such that it has no associated image assets. Everything is contained within the HTML file.

We may export as an HTML file, HTML image tag or to a data URI.

C# + VB.Net: Read and Write Barcodes with PDF Read and Write Barcodes with PDF
using IronBarCode;


/*** READ BARCODES FROM A PDF DOCUMENT ***/

// A PDF document may be easily scanned for 1 or multiple Barcodes
BarcodeResult[] PDFResults = BarcodeReader.QuiclyReadAllBarcodes("MultipleBarcodes.pdf", BarcodeEncoding.AllOneDimensional, true);

// Read only a specific barcode type
BarcodeResult[] InvoiceResults = BarcodeReader.ReadBarcodesFromPdf("PileofInvoices.pdf", BarcodeEncoding.Code128);

// Read only specific pages
PagedBarcodeResult[] InvoiceResultsPage123 = BarcodeReader.ReadBarcodesFromPdfPages("PileofInvoices.pdf", new[] { 1, 2, 3 }, BarcodeEncoding.Code128);

// Read even from badly scanned or noisy PDFs
PagedBarcodeResult[] InvoiceResultsCorrected = BarcodeReader.ReadBarcodesFromPdfPages("PileofInvoices.BadScan.pdf", new[] { 1, 2, 3 }, BarcodeEncoding.Code128, BarcodeReader.BarcodeRotationCorrection.Medium, BarcodeReader.BarcodeImageCorrection.CleanNonBlackPixels);


/*** WRITE BARCODES TO A NEW OR EXISTING PDF DOCUMENT ***/

GeneratedBarcode MyBarCode = BarcodeWriter.CreateBarcode("1234567890", BarcodeWriterEncoding.Code128);

// Save to a new PDF
MyBarCode.SaveAsPdf("MyBarCode.Pdf");

/// Add the barcode to any page or pages of an existing PDF
MyBarCode.StampToExistingPdfPage("ExistingPDF.pdf", 200, 50, 1);  // position x=200 y=50 on page 1
MyBarCode.StampToExistingPdfPages("ExistingPDF.pdf", 200, 50, new[] { 1, 2, 3 }, "Password123");  // multiple pages of an encrypted PDF
Imports IronBarCode
Dim PDFResults() As BarcodeResult = BarcodeReader.QuiclyReadAllBarcodes("MultipleBarcodes.pdf", BarcodeEncoding.AllOneDimensional, true)
Dim InvoiceResults() As BarcodeResult = BarcodeReader.ReadBarcodesFromPdf("PileofInvoices.pdf", BarcodeEncoding.Code128)
Dim InvoiceResultsPage123() As PagedBarcodeResult = BarcodeReader.ReadBarcodesFromPdfPages("PileofInvoices.pdf", new, [)
,2
,3
Unknown,BarcodeEncoding.Code128
UnknownDim InvoiceResultsCorrected() As PagedBarcodeResult = BarcodeReader.ReadBarcodesFromPdfPages("PileofInvoices.BadScan.pdf", new, [)
,2
,3
Unknown,BarcodeEncoding.Code128
,BarcodeReader.BarcodeRotationCorrection.Medium
,BarcodeReader.BarcodeImageCorrection.CleanNonBlackPixels
UnknownDim MyBarCode As GeneratedBarcode = BarcodeWriter.CreateBarcode("1234567890", BarcodeWriterEncoding.Code128)
' Save to a new PDF
MyBarCode.SaveAsPdf("MyBarCode.Pdf")
''' Add the barcode to any page or pages of an existing PDF
MyBarCode.StampToExistingPdfPage("ExistingPDF.pdf", 200, 50, 1)
' position x=200 y=50 on page 1
MyBarCode.StampToExistingPdfPages("ExistingPDF.pdf", 200, 50, new, [)
Unknown{1
,2
,3
Unknown,"Password123"
UnknownUnknown

Iron Barcode is proficient in reading barcodes from one or all pages of a PDF document, and those pages can be easily specified. It can also correct for badly scanned PDFs with perhaps skew or digital noise within their image. This can be set specifically by the developer, or automated using the QuicklyReadAllBarcodes method with the TryHarder flag set to true.

We may also add barcodes to a PDF document using the StampToExistingPdfPage method, or simply save our barcode as a standalone PDF file.

Human Support Directly From Our Development Team

Whether its product, integration or licensing queries, the Iron product development team are on hand to support all of your questions. Get in touch and start a dialog with Iron to make the most of our library in your project.

Ask a Question

Recognizes Many Different Barcode & QR Types

IronBarcode reads and writes the majority of barcode and QR standards including UPC A/E, EAN 8/13, Code 39/93/128, ITF, MSI, RSS 14/Expanded, Databar, CodaBar, QR, Styled QR, Data Matrix, MaxiCode, PDF417, Plessey, and Aztec. Results provide barcode data, type, page, text, and barcode image; ideal for archive or indexing systems.

See Full Function List

Fast & Accurate Reading with Image Pre Processing

IronBarcode automatically pre processes barcode images to improve speed and accuracy. Correcting rotation, noise, distortion and skewing to read scans or live video frames. Multi core, multi thread ready for batch processing server applications. Automatically find one or multiple barcodes in single and multi page documents. Search for specific barcode types or document locations without the need for complex APIs.

Learn More

Built for easy use in .Net Projects

Get started in minutes with a few lines of code. Built for the .Net Framework as an easy to use single DLL; without dependencies; supporting 32 & 64 bit; in any .Net Language. Use in Web, Cloud, Desktop or Console Applications; supporting Mobile & Desktop devices.

Get Started Now

Write Barcodes & QRs to multiple document formats

Save and Print to a file or stream, in an array of formats including PDF, JPG, TIFF, GIF, BMP, PNG, or HTML. Adjust colour, quality, rotation, size and text. Use with IronPDF and IronOCR for a complete .Net Document Library.

Learn More
Supports:
  • .Net Framework 4.0 and above support C#, VB, F#
  • Microsoft Visual Studio. .Net Development IDE Icon
  • Nuget Installer Support for Visual Studio
  • JetBrains ReSharper C# language assistant compatible
  • Microsoft Azure C# .NET  hosting platform compatible

Licensing & Pricing

Free community development licenses. Commercial licenses from $399.

Project C# + VB.NET Library Licensing

Project

Developer C# + VB.NET Library Licensing

Developer

Organization C# + VB.NET Library Licensing

Organization

Agency C# + VB.NET Library Licensing

Agency

SaaS C# + VB.NET Library Licensing

SaaS

OEM C# + VB.NET Library Licensing

OEM

View Full License Options  

Barcode & QR Tutorials for C# & VB .Net

Tutorial + Code Examples Reading Barcodes in C# | .NET Tutorial

C# .Net Barcode QR

Frank Walker .Net Product Developer

Read Barcodes & QRs | C# VB .NET Tutorial

See How Frank uses IronBarcode to Read Barcodes from Scans, Photos, and PDF documents inside his .Net Application...

View Frank's Barcode Reading Tutorial
Writing Barcode Tutorial + Code Examples in C# & VB.Net

C# .Net Barcode

Francesca Miller Junior .Net Engineer

Generating Barcode Images in C# or VB.NET

Francesca shares some tips and tricks for writing Barcodes to Images in C# or VB Applications. See how to write the barcodes and all the options available to you with IronBarcode...

See Francesca's Barcode Tutorial
Tutorial + Code Examples VB.Net PDF Creation and Editing | VB.Net & ASP.Net PDF

QR .Net C# VB

Jennifer Wright Application Architecture Lead

Tutorial for Writing QR codes in C# & VB .Net Applications

Jenny's Team use IronBarcode to write thousands of QRs per day. See their tutorial on getting the most out of IronBarcode...

QR Writing Tutorial from Jenny's Team
Thousands of developers use IronBarcode for...

Accounting and Finance Systems

  • # Recepits
  • # Reporting
  • # Invoice Printing
Add PDF Support to ASP.Net Accounting and Finance Systems

Business Digitization

  • # Documentation
  • # Ordering & Labelling
  • # Paper Replacement
C# Business Digitization Use Cases

Enterprise Content Management

  • # Content Production
  • # Document Management
  • # Content Distribution
.Net CMS PDF Support

Data and Reporting Applications

  • # Performance Tracking
  • # Trend Mapping
  • # Reports
C# PDF Reports
Join Them Today
Iron Software Enterprise .Net Component Developers

Thousands of corporations, governments, SME's and developers alike trust Iron software products.

Iron's team have over 10 years experience in the .Net software component market.

Iron Customer Icon
Iron Customer Icon
Iron Customer Icon
Iron Customer Icon
Iron Customer Icon
Iron Customer Icon
Iron Customer Icon
Iron Customer Icon