如何在 C# 中從數據創建條碼

使用 C# 從文字、URL、ID 和二進位資料建立條碼

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

IronBarcode可讓 C# 開發人員使用 BarcodeWriter.CreateBarcode() 方法從各種資料來源(包括字串、位元組陣列和記憶體流)產生條碼,並支援多種條碼格式,如 QR 碼、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


如何從字串建立條碼?

哪些條碼格式最適合不同類型的字串?

不同的條碼格式針對特定的資料類型和使用情境進行了最佳化。 了解支援的條碼格式有助於選擇正確的編碼:

-二維碼:最適合用於網址、電子郵件地址和大段文字資料。 支援最多 4,296 個字母數字字符,並具有糾錯功能

  • Code128 :非常適合用於字母數字數據,例如訂單號碼和序號。 適用於現代應用,效率極高。
  • PDF417 :非常適合處理複雜數據,例如機票和政府身分證件。 最多可儲存 1,850 個字母數字字元。
  • Code93 :非常適合郵政服務和庫存跟踪,具有緊湊的數位數據。
  • Aztec :最適合移動票務和交通運輸,所需空間比二維碼少。

以下程式碼示範如何使用字串編寫條碼:

: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");
$vbLabelText   $csharpLabel

產生的條碼結果是什麼?

程式碼將五種不同的資料範例編碼為五種條碼類型:簡單文字到 Aztec,URL 到 QR 碼,數字 ID 到 Code 93,字母數字 ID 到 PDF417,數字到 Codabar。 圖片儲存為PNG格式。 如需進階匯出選項,請參閱"建立條碼影像"指南。

Aztec barcode containing 'Hello, World!' text with characteristic square spiral pattern
QR code generated from URL input demonstrating barcode creation functionality
Generated Code93 barcode example showing vertical black and white bars pattern
PDF417 barcode with stacked rows encoding flight ID alphanumeric data
Codabar barcode displaying numeric data with start/stop characters

如何自訂產生的條碼?

建立條碼後,使用 IronBarcode 的樣式功能來增強其外觀。 以下是如何建立帶有顏色、註釋和邊距的自訂條碼:

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.AddBarcodeValue文字BelowBarcode();
myBarcode.AddAnnotation文字AboveBarcode("Product SKU", Font.Arial, Color.Black, 12);

// Save the customized barcode
myBarcode.SaveAsPng("customized-barcode.png");
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.AddBarcodeValue文字BelowBarcode();
myBarcode.AddAnnotation文字AboveBarcode("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 :使用 16 位元序列表示 Unicode。 例如:α = 0x03B1。
  • UTF-32 :每個字元固定為 32 位元序列。 例如:α = 0x000003B1。
  • ISO-8859-1 :擴展 ASCII 以支援西歐語言。 例如:é = 233。

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");
$vbLabelText   $csharpLabel

這段程式碼將五個字串輸入轉換為 System.Byte[] 物件。 若要將這些位元組陣列轉換為條碼,請將它們傳遞給 BarcodeWriter,並指定所需的 BarcodeEncoding。 (可選)設定 MaxWidthMaxHeight 以指定條碼尺寸。

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

處理二進位資料或特殊字元時,請使用"編寫 Unicode 條碼"功能以支援國際字元。 以下是一個處理二進位資料的範例:

using IronBarCode;
using System.文字;
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 = BarcodeWriter.CreateBarcode(
    base64Data, 
    BarcodeEncoding.QRCode
);

// Set high error correction for data integrity
binaryBarcode.SetQRCodeErrorCorrection(QRCodeErrorCorrection.High);

// Save with appropriate size for data density
binaryBarcode.ResizeTo(500, 500);
binaryBarcode.SaveAsPng("binary-data-qr.png");
using IronBarCode;
using System.文字;
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 = BarcodeWriter.CreateBarcode(
    base64Data, 
    BarcodeEncoding.QRCode
);

// Set high error correction for data integrity
binaryBarcode.SetQRCodeErrorCorrection(QRCodeErrorCorrection.High);

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

如何從記憶體流建立條碼?

何時應該使用記憶體流產生條碼?

記憶體流最適用於處理不需要磁碟儲存的數據,例如 Web 應用程式中動態產生的內容或資料庫處理。 《將條碼匯出為串流》指南為基於串流的工作流程提供了更多背景資訊。

以下程式碼示範如何從記憶體流產生條碼:

: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");
$vbLabelText   $csharpLabel

使用記憶體流有哪些好處?

此程式碼片段從 System.Byte[] 物件建立 MemoryStream,然後將其用作 BarcodeWriter.CreateBarcode() 的輸入,以從記憶體流資料產生條碼。 記憶體流具有以下幾個優點:

1.效能:無磁碟 I/O 操作,臨時資料傳輸速度更快 2.安全性:資料保留在記憶體中,減少了敏感資訊外洩的風險。 3.靈活性:易於與基於流的 API 和庫集成 4.資源效率:自動記憶體管理與處置

進階流程處理範例

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

using IronBarCode;
using System.IO;
using System.文字;

// 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 order數位s = new List<string> { "ORD-001", "ORD-002", "ORD-003" };
var barcodes = GenerateBarcodeStreams(order數位s);
using IronBarCode;
using System.IO;
using System.文字;

// 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 order數位s = new List<string> { "ORD-001", "ORD-002", "ORD-003" };
var barcodes = GenerateBarcodeStreams(order數位s);
$vbLabelText   $csharpLabel

有關非同步操作和提高多執行緒應用程式效能的信息,請參閱"使用非同步和多執行緒"指南。

常見問題解答

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

在 C# 中使用 IronBarcode 只需一行代碼即可從文本创建條形碼:BarcodeWriter.CreateBarcode("YourText",BarcodeWriterEncoding.Code128)。IronBarcode 支援多種格式,包括 QR Code、Code128、PDF417、Aztec 等。

哪些類型的資料可以編碼到 BarCode 中?

IronBarcode 可讓您對各種資料類型進行編碼,包括字串、URL、ID、二進位資料(位元組陣列)和記憶體串流。該程式庫會根據您所選擇的 BarCode 格式自動處理轉換和編碼。

URL 應該使用哪種 BarCode 格式?

QR 碼是 IronBarcode 編碼 URL 的最佳選擇。QR 碼最多可儲存 4,296 個字母與數位字元,並包含錯誤修正功能,因此是網址與電子郵件地址的理想選擇。

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

使用 IronBarcode 時,Code128 是字母數字資料(如訂單號碼和序列代碼)的理想格式。它對於現代應用程式而言非常有效率,並為混合字元集提供優異的資料密度。

我可以從二進位資料建立 BarCode 嗎?

是的,IronBarcode 支持通過 CreateBarcode 方法使用 System.Byte[] 數组或 System.IO.Stream 輸入的二進制數据创建條形碼,允許您對任何类型的二進制信息進行编碼。

我可以用哪些影像格式儲存 BarCode?

IronBarcode 允許您將產生的 BarCode 儲存為多種圖像格式,包括 PNG、JPEG、BMP、GIF 和 TIFF。該程式庫針對不同的使用情況提供了靈活的匯出選項。

PDF417 BarCode 可以儲存多少資料?

使用 IronBarcode 製作的 PDF417 BarCode 可儲存多達 1,850 個字母數字字符,使其成為複雜資料(如機票、運輸標籤和政府 ID)的完美選擇。

哪種 BarCode 格式最適合行動購票?

使用 IronBarcode 時,Aztec BarCode 是行動票務和運輸應用程式的最佳選擇。與 QR 條碼相比,它們所需的空間更少,同時在行動裝置上維持高資料容量和可讀性。

Hairil Hasyimi Bin Omar
軟體工程師
和所有优秀的工程师一样,Hairil 是個努力学习者。他正在细化自己的 C# 、Python 和 Java 知识,将这些知识應用于 Iron Software 各個团队成员以增加价值。Hairil 自马来西亚 Universiti Teknologi MARA 加入 Iron Software 团队,并以化学与工艺工程学士学位毕业。
準備好開始了嗎?
Nuget 下載 2,121,847 | 版本: 2026.3 剛剛發布
Still Scrolling Icon

還在捲動嗎?

想要快速證明? PM > Install-Package BarCode
執行範例 看您的字串變成 BarCode。