# Barcodes & QRs in C# & VB.NET Applications
A leitura e escrita de códigos de barras em C# e todas as outras linguagens .NET é um processo fácil com nossa biblioteca de software IronBarcode.
## Instalar IronBarcode
O primeiro passo da jornada será a instalação do IronBarcode, que pode ser feita baixando do NuGet ou [baixando o DLL](https://www.nuget.org/packages/Barcode/).
Para instalar o pacote NuGet do IronBarcode, você pode usar o Gerenciador de Pacotes NuGet para Visual Studio:
```shell
:ProductInstall
```
Alternativamente, você também pode instalar usando o .NET CLI:
```shell
:InstallCmd dotnet add package IronBarCode
```
## Lendo um Código de Barra ou QR
Ler um código de barras requer apenas uma linha de código com o IronBarcode.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-1.cs
```
Com esta única linha de código, você tem a capacidade de detectar e escanear todos os tipos de códigos de barras do documento de entrada com desempenho excepcional—tudo que você precisa em um passo! Este método suporta uma ampla variedade de formatos de imagem, como JPEG, PNG e BMP, bem como PDFs e formatos multi-frame como GIF e TIFF. Para desempenho aprimorado, opções de configuração personalizáveis estão disponíveis.
Para melhorar a velocidade de leitura, você pode criar um objeto `BarcodeReaderOptions` com a configuração `Speed` configurada para melhor desempenho. O padrão é `Balanced`, mas a opção `Faster` está disponível para ignorar certas verificações.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-2.cs
```
Você também pode definir o `ScanMode` para `OnlyBasicScan` para otimizar o processo de leitura.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-3.cs
```
Outras configurações incluem especificar os formatos de código de barras para procurar, o que pode ajudar a acelerar o processamento reduzindo escaneamentos desnecessários.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-4.cs
```
## Escrevendo Códigos de Barra
Para escrever códigos de barras usando o IronBarcode, usamos a classe `BarcodeWriter`.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-5.cs
```
## Estilizando Códigos de Barra
O IronBarcode oferece várias opções para manipular a representação visual de um código de barras.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-7.cs
```
## Exportando Código de Barras como HTML
O IronBarcode pode exportar códigos de barras como documentos HTML ou como parte de conteúdo HTML.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-8.cs
```
## Gerando Códigos QR
Para códigos QR, use a classe `QRCodeWriter` que oferece configurações adicionais para recursos específicos de QR como correção de erros.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-9.cs
```
## Formatos de Código de Barra Suportados
O IronBarcode suporta uma ampla variedade de formatos de código de barras comumente usados para leitura e escrita:
- **QR**, **Micro QR** e códigos **Rectangular Micro QR (rMQR)**.
- Outros códigos de barras bidimensionais, como **Aztec**, **Data Matrix**, **MaxiCode** e **PDF417**.
- Códigos de barras lineares empilhados, como **Databar**.
- Formatos de códigos de barras unidimensionais convencionais, como **UPC-A**, **UPC-E**, **EAN-8**, **EAN-13**, **Codabar**, **ITF**, **MSI** e **Plessey**.
## Por que escolher IronBarcode?
IronBarcode oferece uma API amigável e fácil de usar para desenvolvedores lerem e escreverem códigos de barras para .NET, otimizando para precisão, exatidão e velocidade em casos de uso real.
A classe `BarcodeWriter`, por exemplo, valida e corrige automaticamente 'checksums' em códigos de barras UPCA e UPCE e lida com restrições de formato numérico. IronBarcode ajuda os desenvolvedores a escolher o formato de código de barras mais adequado para seus dados.
A biblioteca é robusta, com técnicas de pré-processamento de imagem, como rotação automática e remoção de ruído, para maximizar as taxas de sucesso na detecção de códigos de barras.
## Seguindo em frente
Para aproveitar ao máximo o IronBarcode, recomendamos que você leia os tutoriais nesta seção de documentação e nos visite no [GitHub](https://github.com/iron-software).
A leitura e escrita de códigos de barras em C# e todas as outras linguagens .NET é um processo fácil com nossa biblioteca de software IronBarcode.
Instalar IronBarcode
O primeiro passo da jornada será a instalação do IronBarcode, que pode ser feita baixando do NuGet ou baixando o DLL.
Para instalar o pacote NuGet do IronBarcode, você pode usar o Gerenciador de Pacotes NuGet para Visual Studio:
PM > Install-Package BarCode
Install-Package BarCode
Alternativamente, você também pode instalar usando o .NET CLI:
> dotnet add package IronBarCode
dotnet add package IronBarCode
Lendo um Código de Barra ou QR
Ler um código de barras requer apenas uma linha de código com o IronBarcode.
using IronBarCode;BarcodeResults results = BarcodeReader.Read("QuickStart.jpg");if (results != null){ foreach (BarcodeResult result in results) {Console.WriteLine(result.Text); }}
using IronBarCode;
BarcodeResults results = BarcodeReader.Read("QuickStart.jpg");
if (results != null)
{
foreach (BarcodeResult result in results)
{
Console.WriteLine(result.Text);
}
}
ImportsIronBarCodePrivate results AsBarcodeResults = BarcodeReader.Read("QuickStart.jpg")If results IsNot Nothing Then For Each result AsBarcodeResultIn resultsConsole.WriteLine(result.Text) Next resultEnd If
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
Com esta única linha de código, você tem a capacidade de detectar e escanear todos os tipos de códigos de barras do documento de entrada com desempenho excepcional—tudo que você precisa em um passo! Este método suporta uma ampla variedade de formatos de imagem, como JPEG, PNG e BMP, bem como PDFs e formatos multi-frame como GIF e TIFF. Para desempenho aprimorado, opções de configuração personalizáveis estão disponíveis.
Para melhorar a velocidade de leitura, você pode criar um objeto BarcodeReaderOptions com a configuração Speed configurada para melhor desempenho. O padrão é Balanced, mas a opção Faster está disponível para ignorar certas verificações.
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);}
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);
}
ImportsIronBarCodePrivate myOptionsExample As New BarcodeReaderOptions() With { .ExpectMultipleBarcodes = False, .ExpectBarcodeTypes = BarcodeEncoding.QRCodeOrBarcodeEncoding.Code128, .CropArea = New System.Drawing.Rectangle(100, 200, 300, 400)}Private result AsBarcodeResults = BarcodeReader.Read("QuickStart.jpg", myOptionsExample)If result IsNot Nothing ThenConsole.WriteLine(result.First().Text)End If
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
Você também pode definir o ScanMode para OnlyBasicScan para otimizar o processo de leitura.
using IronBarCode;BarcodeResults results = BarcodeReader.Read("MultipleBarcodes.png");// Loop through the resultsforeach (BarcodeResult result in results){ string value = result.Value; Bitmap img = result.BarcodeImage; BarcodeEncoding barcodeType = result.BarcodeType; byte[] binary = result.BinaryValue;Console.WriteLine(result.Value);}
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);
}
ImportsIronBarCodePrivate results AsBarcodeResults = BarcodeReader.Read("MultipleBarcodes.png")' Loop through the resultsFor Each result AsBarcodeResultIn results Dim value AsString = result.Value Dim img AsBitmap = result.BarcodeImage Dim barcodeType AsBarcodeEncoding = result.BarcodeType Dim binary() AsByte = result.BinaryValueConsole.WriteLine(result.Value)Next result
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
Outras configurações incluem especificar os formatos de código de barras para procurar, o que pode ajudar a acelerar o processamento reduzindo escaneamentos desnecessários.
using IronBarCode;BarcodeResults pagedResults = BarcodeReader.Read("MultipleBarcodes.pdf");// Loop through the resultsforeach (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});
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
});
ImportsIronBarCodePrivate pagedResults AsBarcodeResults = BarcodeReader.Read("MultipleBarcodes.pdf")' Loop through the resultsFor Each result AsBarcodeResultIn pagedResults Dim pageNumber AsInteger = result.PageNumber Dim value AsString = result.Value Dim img AsBitmap = result.BarcodeImage Dim barcodeType AsBarcodeEncoding = result.BarcodeType Dim binary() AsByte = result.BinaryValueConsole.WriteLine(result.Value)Next result' or from a multi-page TIFF scan with image correction:Dim multiFrameResults AsBarcodeResults = BarcodeReader.Read(inputImage:= "Multiframe.tiff", New BarcodeReaderOptionsWith { .Speed = ReadingSpeed.Detailed, .ExpectMultipleBarcodes = True, .ExpectBarcodeTypes = BarcodeEncoding.Code128, .Multithreaded = False, .RemoveFalsePositive = False, .ImageFilters = Nothing})
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
})
Escrevendo Códigos de Barra
Para escrever códigos de barras usando o IronBarcode, usamos a classe BarcodeWriter.
using IronBarCode;GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);myBarcode.SaveAsImage("myBarcode.png");
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")
Estilizando Códigos de Barra
O IronBarcode oferece várias opções para manipular a representação visual de um código de barras.
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 HTMLmyBarcode.SaveAsPng("myBarcode.png");
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");
ImportsIronBarCodePrivate myBarcode AsGeneratedBarcode = 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 HTMLmyBarcode.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")
Exportando Código de Barras como HTML
O IronBarcode pode exportar códigos de barras como documentos HTML ou como parte de conteúdo HTML.
using IronBarCode;QRCodeWriter.CreateQrCode("https://ironsoftware.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPdf("MyQR.pdf");
using IronBarCode;
QRCodeWriter.CreateQrCode("https://ironsoftware.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPdf("MyQR.pdf");
Para códigos QR, use a classe QRCodeWriter que oferece configurações adicionais para recursos específicos de QR como correção de erros.
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");
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");
ImportsIronBarCodeImportsIronSoftware.DrawingPrivate qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")Private myQRCodeWithLogo AsGeneratedBarcode = 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")
Formatos de Código de Barra Suportados
O IronBarcode suporta uma ampla variedade de formatos de código de barras comumente usados para leitura e escrita:
QR, Micro QR e códigos Rectangular Micro QR (rMQR).
Outros códigos de barras bidimensionais, como Aztec, Data Matrix, MaxiCode e PDF417.
Códigos de barras lineares empilhados, como Databar.
Formatos de códigos de barras unidimensionais convencionais, como UPC-A, UPC-E, EAN-8, EAN-13, Codabar, ITF, MSI e Plessey.
Por que escolher IronBarcode?
IronBarcode oferece uma API amigável e fácil de usar para desenvolvedores lerem e escreverem códigos de barras para .NET, otimizando para precisão, exatidão e velocidade em casos de uso real.
A classe BarcodeWriter, por exemplo, valida e corrige automaticamente 'checksums' em códigos de barras UPCA e UPCE e lida com restrições de formato numérico. IronBarcode ajuda os desenvolvedores a escolher o formato de código de barras mais adequado para seus dados.
A biblioteca é robusta, com técnicas de pré-processamento de imagem, como rotação automática e remoção de ruído, para maximizar as taxas de sucesso na detecção de códigos de barras.
Seguindo em frente
Para aproveitar ao máximo o IronBarcode, recomendamos que você leia os tutoriais nesta seção de documentação e nos visite no GitHub.
Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.