GS1 Sunrise 2027:全球贸易转向二维条码
2025/08/07
using System;
using System.Text;
using Vintasoft.Barcode;
using Vintasoft.Barcode.BarcodeInfo;
using Vintasoft.Barcode.SymbologySubsets;
using Vintasoft.Barcode.GS1;
using Vintasoft.Imaging;
/// <summary>
/// Test that shows how to encode the barcode data in GS1 Digital Link format,
/// create image with GS1 Digital Link barcode,
/// read GS1 Digital Link barcode from image and print data stored in GS1 format.
/// </summary>
class GS1DigitalLinkExample
{
/// <summary>
/// Runs the test (available barcode types QR, DataMatrix).
/// </summary>
public static void TestGS1DigitalLink(BarcodeType digitalLinkBarcodeType)
{
// GS1 Digital Link barcode
GS1DigitalLinkBarcodeSymbologySubset barcodeSubset;
if (digitalLinkBarcodeType == BarcodeType.QR)
barcodeSubset = BarcodeSymbologySubsets.GS1DigitalLinkQR;
else if (digitalLinkBarcodeType == BarcodeType.DataMatrix)
barcodeSubset = BarcodeSymbologySubsets.GS1DigitalLinkDataMatrix;
else
throw new NotSupportedException();
// form the GS1 Application identifiers
//
GS1ApplicationIdentifierValue[] aiValues = new GS1ApplicationIdentifierValue[4];
GS1ApplicationIdentifier ai;
// 01 - Global Trade Item Number
ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("01");
aiValues[0] = new GS1ApplicationIdentifierValue(ai, "0123456789123C");
// 310 - Net weight, kilograms
ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("310");
aiValues[1] = new GS1ApplicationIdentifierValue(ai, "0012.55");
// 30 - Count of Items
ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("30");
aiValues[2] = new GS1ApplicationIdentifierValue(ai, "10");
// 90 - Company Internal Information
ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("90");
aiValues[3] = new GS1ApplicationIdentifierValue(ai, "ABCabc12345");
// create GS1 value item
GS1DigitalLinkValueItem gs1DigitalLinkValue = new GS1DigitalLinkValueItem(new GS1DigitalLink("vintasoft.com", aiValues));
// create the barcode writer
using (BarcodeWriter writer = new BarcodeWriter())
{
// specify that writer must create output image as 24-bpp image
writer.Settings.PixelFormat = BarcodeImagePixelFormat.Bgr24;
// encode GS1 Digital Link barcode
barcodeSubset.Encode(gs1DigitalLinkValue, writer.Settings);
// create image with barcode
using (VintasoftBitmap barcodeImage = writer.GetBarcodeAsVintasoftBitmap())
{
// delete aiValues array
aiValues = null;
// read barcode with GS1 value
// create barcode reader
using (BarcodeReader reader = new BarcodeReader())
{
// specify that reader must search for GS1 Digital Link barcodes only
reader.Settings.ScanBarcodeTypes = BarcodeType.None;
reader.Settings.ScanBarcodeSubsets.Add(barcodeSubset);
// read barcode from image
IBarcodeInfo[] infos = reader.ReadBarcodes(barcodeImage);
// gets GS1 value from barcode value
gs1DigitalLinkValue = (GS1DigitalLinkValueItem)(infos[0].ValueItems[0]);
// print barcode type
Console.WriteLine("Barcode Type: {0}", infos[0].BarcodeType);
Console.WriteLine();
// print GS1 Digital Link URI value
Console.WriteLine("GS1 Digital Link URI:\n{0}", gs1DigitalLinkValue.DigitalLink.DigitalLinkUri);
Console.WriteLine();
// gets a GS1 Application identifiers from barcode value
aiValues = gs1DigitalLinkValue.ApplicationIdentifierValues;
StringBuilder printableValue = new StringBuilder();
// print Application identifiers values
for (int i = 0; i < aiValues.Length; i++)
{
GS1ApplicationIdentifierValue aiValue = aiValues[i];
ai = aiValue.ApplicationIdentifier;
Console.WriteLine(string.Format("[{0}] {1}", i + 1, aiValue));
Console.WriteLine(string.Format("Application identifier : {0}", ai.ApplicationIdentifier));
Console.WriteLine(string.Format("Value : {0}", aiValue.Value));
Console.WriteLine(string.Format("Data title : {0}", ai.DataTitle));
Console.WriteLine(string.Format("Data content : {0}", ai.DataContent));
Console.WriteLine(string.Format("Format : {0}", ai.Format));
Console.WriteLine(string.Format("Is contains decimal point: {0}", ai.IsContainsDecimalPoint));
Console.WriteLine(string.Format("Is variable length : {0}", ai.IsVariableLength));
Console.WriteLine();
printableValue.Append(aiValue.ToString());
}
// print GS1 printable value
Console.WriteLine("Printable GS1 value: " + printableValue.ToString());
}
}
}
}
}