VintaSoft Barcode .NET SDK v11.0
In This Topic
    How to create barcode which stores text with different encodings?
    In This Topic

    Aztec, DataMatrix, QR, PDF417 or Micro PDF417 barcodes can contain ECI characters in a data message, this feature allows to store text with different encodings in the barcode value.

    Example: Here is an example that shows how to create image with Aztec, DataMatrix, QR, PDF417 or Micro PDF417 barcode, which stores text in different encodings.

    Imports System.Drawing
    Imports System.Text
    Imports Vintasoft.Barcode
    Imports Vintasoft.Barcode.BarcodeInfo
    
    ''' <summary>
    ''' Class that shows how to create an image with barcode Aztec, DataMatrix, QR, PDF417
    ''' or Micro PDF417, which stores text in different encodings.
    ''' Barcode value is encoded using the EciCharacterEncoder class.
    ''' </summary>
    Class EciCharacterEncoderExample
            ''' <summary>
            ''' Runs the test.
            ''' </summary>
            Public Shared Sub Run()
                    ' ECI characters are available only for Aztec, DataMatrix, QR, Han Xin Code, PDF417 or Micro PDF417 barcodes
                    Dim barcodeType__1 As BarcodeType = BarcodeType.DataMatrix
    
                    ' create the encoder of Extended Channel Interpretation (ECI) characters
                    Dim eciEncoder As New EciCharacterEncoder(barcodeType__1)
    
                    ' create the ECI encoding for encoding text in codepage 28592
                    Dim cp28592EciEncoding As EciCharacterEncoding = EciCharacterEncoding.GetEciCharacterEncodingForEncoding(Encoding.GetEncoding(28592))
                    ' append text in codepage 28592 to ECI encoder
                    eciEncoder.AppendText(cp28592EciEncoding, "azszecnolAZSZECNOL")
    
                    ' create the ECI encoding for encoding text in codepage 28595
                    Dim cp28595EciEncoding As EciCharacterEncoding = EciCharacterEncoding.GetEciCharacterEncodingForEncoding(Encoding.GetEncoding(28595))
                    ' append text in codepage 28595 to ECI encoder
                    eciEncoder.AppendText(cp28595EciEncoding, "����������������")
    
                    ' create the ECI encoding for encoding text in codepage 950
                    Dim cp950EciEncoding As EciCharacterEncoding = EciCharacterEncoding.GetEciCharacterEncodingForEncoding(Encoding.GetEncoding(950))
                    ' append text in codepage 950 to ECI encoder
                    eciEncoder.AppendText(cp950EciEncoding, "???????")
    
                    ' create the ECI encoding for encoding text in codepage 28591
                    Dim cp28591EciEncoding As EciCharacterEncoding = EciCharacterEncoding.GetEciCharacterEncodingForEncoding(Encoding.GetEncoding(28591))
                    ' append text in codepage 28591 to ECI encoder
                    eciEncoder.AppendText(cp28591EciEncoding, "test!")
    
    
                    ' create the barcode writer
                    Dim writer As New BarcodeWriter()
    
                    ' specify that writer must generate barcode of specified type
                    writer.Settings.Barcode = barcodeType__1
    
                    ' set the barcode value as value encoded by ECI encoder
                    writer.Settings.ValueItems = eciEncoder.ToValueItems()
    
                    ' create image with barcode
                    Using barcodeImage As Image = writer.GetBarcodeAsBitmap()
                            ' create the barcode reader
                            Using reader As New BarcodeReader()
                                    ' specify that reader must search for barcodes of specified type
                                    reader.Settings.ScanBarcodeTypes = barcodeType__1
    
                                    ' read barcode from image
                                    Dim decodeItems As ValueItemBase() = reader.ReadBarcodes(barcodeImage)(0).ValueItems
    
                                    ' decode the barcode value
                                    Dim decodedString As String = EciCharacterDecoder.Decode(decodeItems)
    
                                    ' if decoded value does not match source value
                                    If decodedString <> "azszecnolAZSZECNOL����������������???????test!" Then
                                            ' throw exception
                                            Throw New ApplicationException()
                                    End If
                            End Using
                    End Using
    
                    Console.WriteLine("OK")
            End Sub
    End Class
                  
    
    using System;
    using System.Drawing;
    using System.Text;
    using Vintasoft.Barcode;
    using Vintasoft.Barcode.BarcodeInfo;
    
    /// <summary>
    /// Class that shows how to create an image with barcode Aztec, DataMatrix, QR, PDF417
    /// or Micro PDF417, which stores text in different encodings.
    /// Barcode value is encoded using the EciCharacterEncoder class.
    /// </summary>
    class EciCharacterEncoderExample
    {
        /// <summary>
        /// Runs the test.
        /// </summary>
        public static void Run()
        {
            // ECI characters are available only for Aztec, DataMatrix, QR, Han Xin Code, PDF417 or Micro PDF417 barcodes
            BarcodeType barcodeType = BarcodeType.DataMatrix;
    
            // create the encoder of Extended Channel Interpretation (ECI) characters
            EciCharacterEncoder eciEncoder = new EciCharacterEncoder(barcodeType);
    
            // create the ECI encoding for encoding text in codepage 28592
            EciCharacterEncoding cp28592EciEncoding =
                EciCharacterEncoding.GetEciCharacterEncodingForEncoding(Encoding.GetEncoding(28592));
            // append text in codepage 28592 to ECI encoder
            eciEncoder.AppendText(cp28592EciEncoding, "azszecnolAZSZECNOL");
    
            // create the ECI encoding for encoding text in codepage 28595
            EciCharacterEncoding cp28595EciEncoding =
                EciCharacterEncoding.GetEciCharacterEncodingForEncoding(Encoding.GetEncoding(28595));
            // append text in codepage 28595 to ECI encoder
            eciEncoder.AppendText(cp28595EciEncoding, "����������������");
    
            // create the ECI encoding for encoding text in codepage 950
            EciCharacterEncoding cp950EciEncoding =
                EciCharacterEncoding.GetEciCharacterEncodingForEncoding(Encoding.GetEncoding(950));
            // append text in codepage 950 to ECI encoder
            eciEncoder.AppendText(cp950EciEncoding, "???????");
    
            // create the ECI encoding for encoding text in codepage 28591
            EciCharacterEncoding cp28591EciEncoding =
                EciCharacterEncoding.GetEciCharacterEncodingForEncoding(Encoding.GetEncoding(28591));
            // append text in codepage 28591 to ECI encoder
            eciEncoder.AppendText(cp28591EciEncoding, "test!");
    
    
            // create the barcode writer
            BarcodeWriter writer = new BarcodeWriter();
    
            // specify that writer must generate barcode of specified type
            writer.Settings.Barcode = barcodeType;
    
            // set the barcode value as value encoded by ECI encoder
            writer.Settings.ValueItems = eciEncoder.ToValueItems();
            
            // create image with barcode
            using (Image barcodeImage = writer.GetBarcodeAsBitmap())
            {
                // create the barcode reader
                using (BarcodeReader reader = new BarcodeReader())
                {
                    // specify that reader must search for barcodes of specified type
                    reader.Settings.ScanBarcodeTypes = barcodeType;
                    
                    // read barcode from image
                    ValueItemBase[] decodeItems = reader.ReadBarcodes(barcodeImage)[0].ValueItems;
                    
                    // decode the barcode value
                    string decodedString = EciCharacterDecoder.Decode(decodeItems);
                    
                    // if decoded value does not match source value
                    if (decodedString != "azszecnolAZSZECNOL����������������???????test!")
                        // throw exception
                        throw new ApplicationException();
                }
            }
    
            Console.WriteLine("OK");
        }
    }