如何在C#中從資料建立條碼

從文字、URLs、IDs和二進位資料生成條碼於C

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

IronBarcode使C#開發者能夠從各種資料來源生成條碼,包括字串、位元組陣列和記憶體流,使用BarcodeWriter.CreateBarcode()方法支持多種條碼格式,如QR Code、Code128和PDF417。

快速入門:在一行中從字串建立條碼

使用IronBarcode的API來生成條碼,設置簡單。本範例展示了如何僅使用一行程式碼從簡單字串建立條碼。 如需完整範例,請查看條碼快速入門指南。

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/BarCode

    PM > Install-Package BarCode
  2. 複製並運行這段程式碼片段。

    var barcode = IronBarCode.BarcodeWriter.CreateBarcode("Order123", IronBarCode.BarcodeWriterEncoding.Code128);
  3. 部署以在您的實時環境中測試

    今天就開始在您的專案中使用IronBarcode,透過免費試用

    arrow pointer


如何從字串生成條碼?

不同字串型別的最佳條碼格式是什麼?

不同的條碼格式優化用於特定資料型別和用例。 了解支持的條碼格式有助於選擇合適的編碼:

  • QR Codes:最適合用于URLs、電子郵件地址和大型文字資料。 支持最多4,296個字母數字元,附帶錯誤修正
  • Code128:理想用於字母資料如訂單號和序列碼。 對現代應用程式高度有效。
  • PDF417:完美用於複雜資料如飛行票和政府身份證。 可儲存最多1,850個字母數字元。
  • Code93:對郵政服務和庫存跟蹤而言非常出色,使用緊湊的資料。
  • Aztec:適用於移動票務和交通,比QR碼更省空間。

以下程式碼演示了如何用字串寫入條碼:

:path=/static-assets/barcode/content-code-examples/how-to/create-barcode-from-string.cs
using IronBarCode;

string text = "Hello, World!";
string url = "https://ironsoftware.com/csharp/barcode/";
string receiptID = "2023-08-04-12345"; // Receipt ID (numeric id)
string flightID = "FLT2023NYC-LAX123456"; // Flight ID (alphanumeric id)
string number = "1234";

BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png");
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png");
BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png");
BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png");
BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png");
Imports IronBarCode

Private text As String = "Hello, World!"
Private url As String = "https://ironsoftware.com/csharp/barcode/"
Private receiptID As String = "2023-08-04-12345" ' Receipt ID (numeric id)
Private flightID As String = "FLT2023NYC-LAX123456" ' Flight ID (alphanumeric id)
Private number As String = "1234"

BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png")
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png")
BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png")
BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png")
BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png")
$vbLabelText   $csharpLabel

生成的條碼結果是什麼?

此程式碼將五種不同資料範例編碼成五種條碼型別:簡單字串至Aztec,URL至QR Code,數字ID至Code 93,字母數ID至PDF417,及數字至Codabar。 影像以PNG格式儲存。 如需進階匯出選項,請參閱建立條碼為影像指南。

包含 'Hello, World!' 文字的 Aztec 條碼,具有獨特的方形螺旋圖案
從 URL 輸入產生的 QR 碼,展示條碼建立功能
產生的 Code93 條碼範例,顯示黑白垂直條紋圖案
具有堆疊列的 PDF417 條碼,編碼航班 ID 的英數字元資料
顯示帶有起始/停止字元之數字資料的 Codabar 條碼

如何自訂生成的條碼?

建立條碼後,使用IronBarcode的造型功能提升其外觀。 這是如何建立帶有顏色、註解和邊距的自訂條碼:

:path=/static-assets/barcode/content-code-examples/how-to/create-barcode-from-data-3.cs
using IronBarCode;

// Create a barcode with custom styling
GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128);

// Apply custom styling
myBarcode.ResizeTo(300, 100);
myBarcode.SetMargins(10);
myBarcode.ChangeBarCodeColor(Color.DarkBlue);

// Add text annotations
myBarcode.AddBarcodeValueTextBelowBarcode();
myBarcode.AddAnnotationTextAboveBarcode("Product SKU", Font.Arial, Color.Black, 12);

// Save the customized barcode
myBarcode.SaveAsPng("customized-barcode.png");
Imports IronBarCode

' Create a barcode with custom styling
Dim myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128)

' Apply custom styling
myBarcode.ResizeTo(300, 100)
myBarcode.SetMargins(10)
myBarcode.ChangeBarCodeColor(Color.DarkBlue)

' Add text annotations
myBarcode.AddBarcodeValueTextBelowBarcode()
myBarcode.AddAnnotationTextAboveBarcode("Product SKU", Font.Arial, Color.Black, 12)

' Save the customized barcode
myBarcode.SaveAsPng("customized-barcode.png")
$vbLabelText   $csharpLabel

如需更多造型選項,請探索自訂與造型條碼教程。

如何從位元組陣列生成條碼?

為何位元組陣列條碼的字元編碼很重要?

要從位元組陣列建立條碼,請確保字元編碼與所需的BarcodeEncoding對齊,因為每種條碼型別接受的字元編碼不同。 了解輸出資料格式以確保相容性。 以下是IronBarcode中可用的字元編碼:

  • ASCII:對於英文字母、數字和標點符號每字元使用7位。 範例:'A' = 65。
  • UTF-8:適合所有Unicode字元的可變長度編碼。 範例:€ = 0xE2 0x82 0xAC。
  • UTF-16:對Unicode使用16位序列。 範例:α = 0x03B1。
  • UTF-32:每字元固定32位序列。 範例:α = 0x000003B1。
  • ISO-8859-1:延伸ASCII用於西歐語言。 範例:é = 233。

[{i:在IronBarcode中的預設字元編碼為ISO-8859-1。}]

如何將位元組陣列轉換為條碼?

以下程式碼展示了從位元資料生成條碼:

:path=/static-assets/barcode/content-code-examples/how-to/create-barcode-from-byte.cs
using IronBarCode;
using System.Text;

byte[] text = Encoding.UTF8.GetBytes("Hello, World!");
byte[] url = Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/");
byte[] receiptID = Encoding.UTF8.GetBytes("2023-08-04-12345"); // Receipt ID (numeric id)
byte[] flightID = Encoding.UTF8.GetBytes("FLT2023NYC-LAX123456"); // Flight id (alphanumeric id)
byte[] number = Encoding.UTF8.GetBytes("1234");

BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png");
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png");
BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png");
BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png");
BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png");
Imports IronBarCode
Imports System.Text

Private text() As Byte = Encoding.UTF8.GetBytes("Hello, World!")
Private url() As Byte = Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/")
Private receiptID() As Byte = Encoding.UTF8.GetBytes("2023-08-04-12345") ' Receipt ID (numeric id)
Private flightID() As Byte = Encoding.UTF8.GetBytes("FLT2023NYC-LAX123456") ' Flight id (alphanumeric id)
Private number() As Byte = Encoding.UTF8.GetBytes("1234")

BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png")
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png")
BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png")
BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png")
BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png")
$vbLabelText   $csharpLabel

此片段將五個字串輸入轉換為System.Byte[]物件。 要將這些位元組陣列轉換為條碼,將它們傳遞給BarcodeEncoding。 可選擇設置MaxHeight來控制條碼尺寸。

處理二進位資料和特殊字元

處理二進位資料或特殊字元時,請使用撰寫Unicode條碼以支持國際字元。 這是處理二進位資料的範例:

:path=/static-assets/barcode/content-code-examples/how-to/create-barcode-from-data-5.cs
using IronBarCode;
using System.Text;
using System.IO;

// Example: Encoding binary data (like a small file) into QR Code
byte[] binaryData = File.ReadAllBytes("document.pdf");
string base64Data = Convert.ToBase64String(binaryData);

// Create QR code with high error correction for binary data
GeneratedBarcode binaryBarcode = QRCodeWriter.CreateQrCode(
    base64Data,
    errorCorrectionLevel: QRCodeWriter.QrErrorCorrectionLevel.High
);

// Save with appropriate size for data density
binaryBarcode.ResizeTo(500, 500);
binaryBarcode.SaveAsPng("binary-data-qr.png");
Imports IronBarCode
Imports System.Text
Imports System.IO

' Example: Encoding binary data (like a small file) into QR Code
Dim binaryData As Byte() = File.ReadAllBytes("document.pdf")
Dim base64Data As String = Convert.ToBase64String(binaryData)

' Create QR code with high error correction for binary data
Dim binaryBarcode As GeneratedBarcode = QRCodeWriter.CreateQrCode(
    base64Data,
    errorCorrectionLevel:=QRCodeWriter.QrErrorCorrectionLevel.High
)

' Save with appropriate size for data density
binaryBarcode.ResizeTo(500, 500)
binaryBarcode.SaveAsPng("binary-data-qr.png")
$vbLabelText   $csharpLabel

如何從記憶體流生成條碼?

什麼時候應使用記憶體流生成條碼?

處理不需要磁碟儲存的資料時,記憶體流最有效,例如網頁應用程式或資料庫處理中的動態生成內容。 以流匯出條碼指南提供了附加的背景知識來進行基於流的工作流程。

以下程式碼展示了從記憶體流生成條碼:

:path=/static-assets/barcode/content-code-examples/how-to/create-barcode-from-stream.cs
using IronBarCode;
using System.IO;
using System.Text;

MemoryStream text = new MemoryStream(Encoding.UTF8.GetBytes("Hello, World!"));
MemoryStream url = new MemoryStream(Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/"));
MemoryStream receiptID = new MemoryStream(Encoding.UTF8.GetBytes("2023-08-04-12345")); // Receipt ID (numeric id)
MemoryStream flightID = new MemoryStream(Encoding.UTF8.GetBytes("FLT2023NYC-LAX123456")); // Flight id (alphanumeric id)
MemoryStream number = new MemoryStream(Encoding.UTF8.GetBytes("1234"));

BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png");
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png");
BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png");
BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png");
BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png");
Imports IronBarCode
Imports System.IO
Imports System.Text

Private text As New MemoryStream(Encoding.UTF8.GetBytes("Hello, World!"))
Private url As New MemoryStream(Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/"))
Private receiptID As New MemoryStream(Encoding.UTF8.GetBytes("2023-08-04-12345")) ' Receipt ID (numeric id)
Private flightID As New MemoryStream(Encoding.UTF8.GetBytes("FLT2023NYC-LAX123456")) ' Flight id (alphanumeric id)
Private number As New MemoryStream(Encoding.UTF8.GetBytes("1234"))

BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png")
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png")
BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png")
BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png")
BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png")
$vbLabelText   $csharpLabel

使用記憶體流有什麼好處?

此片段從MemoryStream資料生成條碼。 記憶體流提供了幾個優勢:

  1. 效能:無磁碟I/O操作,對暫時資料更快
  2. 安全性:資料保留在記憶體中,減少敏感資訊的暴露
  3. 靈活性:輕鬆整合到基於流的API和程式庫
  4. 資源效率:自動記憶體管理與處理

進階流處理範例

對於涉及流處理的複雜場景,將IronBarcode與其他流操作結合:

using IronBarCode;
using System.IO;
using System.Text;

// Example: Processing multiple barcodes in a batch using streams
public static List<Stream> GenerateBarcodeStreams(List<string> dataItems)
{
    var barcodeStreams = new List<Stream>();

    foreach (var item in dataItems)
    {
        // Convert string to stream
        var dataStream = new MemoryStream(Encoding.UTF8.GetBytes(item));

        // Generate barcode from stream
        var barcode = BarcodeWriter.CreateBarcode(dataStream, BarcodeEncoding.Code128);

        // Export barcode back to stream
        var outputStream = new MemoryStream();
        barcode.SaveAsPng(outputStream);
        outputStream.Position = 0; // Reset position for reading

        barcodeStreams.Add(outputStream);
    }

    return barcodeStreams;
}

// Usage example
var orderNumbers = new List<string> { "ORD-001", "ORD-002", "ORD-003" };
var barcodes = GenerateBarcodeStreams(orderNumbers);
using IronBarCode;
using System.IO;
using System.Text;

// Example: Processing multiple barcodes in a batch using streams
public static List<Stream> GenerateBarcodeStreams(List<string> dataItems)
{
    var barcodeStreams = new List<Stream>();

    foreach (var item in dataItems)
    {
        // Convert string to stream
        var dataStream = new MemoryStream(Encoding.UTF8.GetBytes(item));

        // Generate barcode from stream
        var barcode = BarcodeWriter.CreateBarcode(dataStream, BarcodeEncoding.Code128);

        // Export barcode back to stream
        var outputStream = new MemoryStream();
        barcode.SaveAsPng(outputStream);
        outputStream.Position = 0; // Reset position for reading

        barcodeStreams.Add(outputStream);
    }

    return barcodeStreams;
}

// Usage example
var orderNumbers = new List<string> { "ORD-001", "ORD-002", "ORD-003" };
var barcodes = GenerateBarcodeStreams(orderNumbers);
Imports IronBarCode
Imports System.IO
Imports System.Text

' Example: Processing multiple barcodes in a batch using streams
Public Shared Function GenerateBarcodeStreams(dataItems As List(Of String)) As List(Of Stream)
    Dim barcodeStreams As New List(Of Stream)()

    For Each item In dataItems
        ' Convert string to stream
        Dim dataStream As New MemoryStream(Encoding.UTF8.GetBytes(item))

        ' Generate barcode from stream
        Dim barcode = BarcodeWriter.CreateBarcode(dataStream, BarcodeEncoding.Code128)

        ' Export barcode back to stream
        Dim outputStream As New MemoryStream()
        barcode.SaveAsPng(outputStream)
        outputStream.Position = 0 ' Reset position for reading

        barcodeStreams.Add(outputStream)
    Next

    Return barcodeStreams
End Function

' Usage example
Dim orderNumbers As New List(Of String) From {"ORD-001", "ORD-002", "ORD-003"}
Dim barcodes = GenerateBarcodeStreams(orderNumbers)
$vbLabelText   $csharpLabel

對於多執行緒應用程式中的異步操作和改進效能,請參閱使用異步和多執行緒指南。

常見問題

如何在C#中從文字建立條碼?

您可以使用IronBarcode在C#中從文字建立條碼,只需一行程式碼:BarcodeWriter.CreateBarcode('YourText', BarcodeWriterEncoding.Code128)。IronBarcode支持多種格式,包括QR碼、Code128、PDF417、Aztec等。

我可以將哪些型別的資料編碼為條碼?

IronBarcode允許您編碼各種資料型別,包括字串、URL、ID、二進制資料(位元組陣列)和記憶流。程式庫會根據您選擇的條碼格式自動處理轉換和編碼。

我應該使用哪種條碼格式來標記URL?

QR碼是IronBarcode中編碼URL的最佳選擇。QR碼可儲存多達4,296個字母數字字元,並包括錯誤校正功能,使其非常適合於網頁地址和電子郵件地址。

哪種條碼格式最適合訂單號和序列碼?

當使用IronBarcode時,Code128是對字母資料如訂單號和序列碼的理想格式。它對於現代應用程式非常高效,並為混合字元集提供了出色的資料密度。

我可以從二進制資料建立條碼嗎?

是的,IronBarcode支持使用System.Byte[]陣列或System.IO.Stream輸入通過CreateBarcode方法建立來自二進制資料的條碼,使您能夠編碼任何型別的二進制資訊。

我可以用哪些影像格式保存條碼?

IronBarcode允許您將生成的條碼保存為多種影像格式,包括PNG、JPEG、BMP、GIF和TIFF。程式庫為不同的使用情境提供了靈活的導出選項。

PDF417條碼中能儲存多少資料?

使用IronBarcode建立的PDF417條碼可以儲存多達1,850個字母數字字元,使其非常適合複雜資料,如機票、運單標籤和政府ID。

哪種條碼格式最適合移動票務?

Aztec條碼在使用IronBarcode時是移動票務和交通應用的最佳選擇。它們需要的空間比QR碼少,同時在移動裝置上保持高資料容量和可讀性。

將IronBarcode實現於專案中需要什麼程式設計技能?

基本的C#程式設計知識足以將IronBarcode實現於專案中,因為它提供了簡單的方法和全面的文件來指導開發者。

IronBarcode適合於小型專案和大型企業應用嗎?

IronBarcode設計為可擴展且多功能,使其適合小型專案和需要強大條碼解決方案的大型企業應用。

Hairil Hasyimi Bin Omar
軟體工程師
和所有偉大的工程師一樣,Hairil是一位充滿熱情的學習者。他正在完善自己對C#、Python和Java的知識,並利用這些知識為Iron Software的團隊成員創造價值。Hairil從馬來西亞的瑪拉工藝大學畢業,擁有化學與流程工程學士學位,後加入Iron Software團隊。
準備好開始了嗎?
Nuget 下載 2,317,217 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

還在滾動嗎?

想快速驗證嗎? PM > Install-Package BarCode
運行範例觀看您的字串成為條碼。