Produkt-Info


Überschau

Lizenzierung

FAQ

Forums

Beispiele

History


Download

Testversion

On-line manual

Referenzen


First of all, let me compliment you on your Barcode.NET Library. We evaluated a number of products to use in our application, and yours was our favorite.

Dan Konigsberg
CampMinder, LLC





VintaSoftBarcode.NET SDK - FAQ

Allgemeine Fragen:

 

Distribution:

 

Programmierung:

 

 

Für welche Zwecke kann ich die VintaSoftBarcode.NET Library nutzen?

Diese Bibliothek erlaubt das Lesen und Schreiben von 1D-, Post- und 2D-Barcodes in digitale Bilder und PDF-Dateien.

 

 

Was beinhaltet die Bibliothek?

Die Bibliothek beinhaltet:

  • VintaSoft.Barcode Komponente - eine 100% .NET-komponente (Vintasoft.Barcode.dll Datei)
  • Dokumentation in CHM-Format (Help\Vintasoft.Barcode.chm Datei)
  • Demo Programmen (Bin\vX.X\BarcodeDemo.exe Datei)
  • Beispiele für MS Visual Basic .NET, MS Visual C#, ASP.NET (Dateien in "Examples" Verzeichnis)
  • Beispiele von Demo-Bilder mit Barkodes (Dateien in "Images" Verzeichnis)

 

 

In welchen Programmiersprachen kann ich die VintaSoftBarcode.NET Library nutzen?

Mit der Entwickler-Lizenz oder der Site-Lizenz können sie die Komponente nutzen in:

  • Microsoft Visual Studio .NET : Visual Basic, Visual C#, Visual C++, Visual J#
  • Borland Delphi, Borland C# Builder, Borland C++ BuilderX
  • anderen Sprachen, die kompatibel sind mit .Net Framework.

Mit der Server-Lizenz können sie die Komponente nutzen in:

  • ASP.NET on server-side

 

 

Welche Beschränkungen hat die unregistrierte Version der Komponente?

Unregistrierte Version hat folgende Beschränkungen:

  • NAG Bildschirm ist vor jeder Barcode-Lesung Prozess in Bin/X.X/Vintasoft.Barcode.dll gezeigt.
  • Barkode-Wert ist durch den "*DEMO*" Zeile für QR, GS1 Databar und IntelligentMail Barkode Types ersetzt.
  • Einige Symbole aus den gelesenen Barcode werden von '*' in Bin/X.X/NoNagScreen/Vintasoft.Barcode.dll ersetzt.
  • Barcodes können nur aus der ersten Seite der PDF-Dokument gelesen werden.
  • Wasserzeichen wird zu alle erzeugten Barkodes hinzugefügt.

 

 

Ich habe eine Frage oder Problem. Was kann ich tun?

Die Antworten auf die meisten Fragen stehen bestimmt in der Dokumentation zur Komponente oder in den FAQ. Wenn Sie können nicht antwort zu Ihre Frage finden, dann schreiben Sie bitte an den technischen Support.

 

 

Welche Dateien muss ich in das Distributionpaket meines Programms einbinden?

Sie sollen nur die Vintasoft.Barcode.dll Datei in das Distributionpaket Ihres Programms ergänzen.

 

 

Kann ich die Vintasoft.Barcode.dll Datei zusammen mit meiner Anwendung ohne Lizenzzahlungen verbreiten?

Ja, Sie können die Vintasoft.Barcode.dll Datei zusammen mit ihrer Anwendung verbreiten. Sie zahlen nur für die primäre Registrierung. Die Site-Lizenz hat keine Beschränkungen zur Verbreitung. Die Entwickler-Lizenz hat Beschränkungen zur Verbreitung. Server-Lizenz Verbreitung ist nicht lizenzfrei. Bitte lesen Sie das Lizenzabkommen für ausführliche Informationen.

 

 

Wie kann ich maximieren die Barkode-Lesegeschwindigkeit?

Hier sind einige Tipps, die können Ihnen helfen zu maximieren die Barkode-Lesegeschwindigkeit:

  • Erkennen Sie nur die notwendige Barkode-Typen (siehe Settings.ScanBarcodeTypes property). Das kann erhöhen die Barkode-Lesegeschwindigkeit bis zu 2 mal.
  • Erkennen Sie Barkodes nur im notwendige Richtungen (siehe Settings.ScanDirection property). Das kann erhöhen die Barkode-Lesegeschwindigkeit bis zu 20%.
  • Finden und verwenden Sie "gut" Threshold für Ihre Farbbilder (siehe Settings.Threshold property), nutzen Sie keine automatisches Threshold-Modus (siehe Settings.ThresholdMode property), sofern dies möglich ist. Das kann erhöhen die Barkode-Lesegeschwindigkeit bis zu 10%.
  • Setzen Sie ein ExpectedBarcodes Property, wenn Number von Barkodes bekannt ist.
  • Verwenden Sie Schwarz-Weiss-Bilder mit Barkodes. Das kann erhöhen die Barkode-Lesegeschwindigkeit bis zu 20%.
  • Deaktivieren Sie Settings.RemovePeas Funktion, wenn das Bild mit Barcodes hat gute Qualität. Das kann erhöhen die Barkode-Lesegeschwindigkeit bis zu 5%.
  • Verwenden Sie ScanDirection.Angle45and135 Richtung nicht, wenn Sie nicht nutzen niedrige und breite Barcodes die auf 30-60 Grad gedreht sind. Das kann steigern Barcode-Lesegeschwindigkeit bis zu 30%.
  • Deaktivieren Settings.SearchDistortedDataMatrixBarcodes-Funktion, wenn Sie rechteckigen oder quadratischen DataMatrix Barcodes decodieren wollen. Dies kann steigern DataMatrix Barcode-Lesegeschwindigkeit bis zu 50%.

 

 

Wie kann ich bekommen die stabilste Barcode Erstellung und Erkennung System?

Hier ist eine Liste der Schritte, die Ihnen helfen stabiler Barcodelesung System zu schaffen:

  • Stellen Sammlung von Test-Bilder mit Barcodes (mindestens 10 Bilder).
    Wenn Sie die Bilder von einem Scanner bekommen - stellen die Sammlung von Test-Bilder mit unterschiedlichen Helligkeit und Kontrast.
  • Lesen von Barcodes zu Test-Bilder mit unterschiedlichen Threshold und berechnen minimale und durchschnittliche Wert der ReadingQuality property.
  • Wählen Sie Parameter der gibt die maximale durchschnittliche Wert der ReadingQuality property
  • Empfohlene minimale durchschnittliche Wert von ReadingQuality property ist 0,75 - so Sie können das stabilste Barcode-Erkennung System bekommen.
Wir empfehlen nicht die Bildern mit Barcodes bearbeiten (deskew, despeckle, etc) vor dem Lesen von Barcodes, da diese erheblich Qualität der Erkennung reduzieren.

 

 

Gibt es Empfehlungen für die Schaffung von 1D-Barcodes und weitere Lesung?

Code 39 und Code 128 sind die meisten stabilen linearen Barcodes für Schäden und Verzerrung.
Die meisten kompakten Barcode ist Code 128 (beide Zahlen- und Symbol-Daten).

Empfehlungen für die Barcode-Erstellung und weitere Erkennung:

  • Erstellen 1D Barcodes mit Zellgröße (Einzel-weiten bar) mindestens 2 Pixel
  • Je mehr Barcode-Höhe, desto besser Erkennung-Qualität
  • Verwenden Sie "padding" für Barcodes mit der Größe nicht weniger 4 Zellgröße
  • Verwenden Sie die optionale Prüfsumme für Barcodes die ohne Standard-Prüfsumme sind (Code 39, Interleaved 2of5, Standard 2of5). Das wird Ihnen helfen die Fehler in Anerkennung Barcodes aus Bildern mit niedriger Qualität zu vermeiden.

 

 

Gibt es Empfehlungen für die Schaffung von 2D-Barcodes und weitere Lesung?

Data Matrix sind die meisten stabilen 2D-Barcode für Schäden und Verzerrung. Aztec ist das kompakteste. Nach kommen DataMatrix, QR-Code und PDF417.
Alle 2D-Barcodes enthalten Text- und Binär-Daten und können renovieren bis zu 30% der beschädigten Daten mit Reed-Solomon-Fehlerkorrektur-Algorithmus.

Empfehlungen für die Barcode-Erstellung und weitere Erkennung:

  • Erstellen Sie Aztec, DataMatrix und QR-Code Barkodes mit Zellgröße mindestens 3 Pixel
  • Erstellen PDF417 Barkode mit Zellgröße mindestens 2 Pixel
  • Verwenden Sie "padding" für PDF417 und Data Matrix mit der Größe nicht weniger 2 Zellgröße
  • Verwenden Sie "padding" für QR-Code mit der Größe nicht weniger 4 Zellgröße

 

 

Hat die Bibliothek Mehrwegverarbeitung unterstützung?

Ja, Multithreading ist seit Version 5.0 unterstützt. Main-Algorithmus kann zur N-Threads skaliert werden.

 


 

Wie kann ich erkennen Barkode in farbiges Bild mit geringer Qualität?

Es gibt zwei Möglichkeiten:

  • Sie sollen die automatische Anerkennung nutzen (siehe ReaderSettings.AutomaticRecognition).
  • Sie sollen die Iteration Prozess der Threshold-Erkennung nutzen. Hier ist ein einfaches Beispiel, der zeigt wie man die Barkodes erkennen kann aus ein Farbbild wessen Threshold ist schwierig zu lokalisieren:

[VB.NET]
Private Shared Sub ScanWithIterations(ByVal fileName As String, ByVal barcodes As BarcodeType, _
ByVal expectedBarcodes As Integer, ByVal iterationCount As Integer, ByVal minThreshold As Integer, ByVal maxThreshold As Integer)
    Dim barcodeImage As Image = Image.FromFile(fileName)
    Dim reader As New BarcodeReader()
    reader.Settings.ScanBarcodeTypes = barcodes
    reader.Settings.ExpectedBarcodes = expectedBarcodes
    reader.Settings.ThresholdIterations = iterationCount
    reader.Settings.Threshold1D = minThreshold
    reader.Settings.Threshold2D = maxThreshold
    ' read barcodes
    Dim barcodesInfo As IBarcodeInfo() = reader.readBarcodes(barcodeImage)
    If barcodesInfo.Length = 0 Then
        Console.WriteLine("No barcodes found.")
    Else
        For i As Integer = 0 To barcodesInfo.Length - 1
            Dim inf As IBarcodeInfo = barcodesInfo(i)
            Console.WriteLine(String.Format("[{0}] {1} (Threshold: {2})", inf.BarcodeType, inf.Value, inf.Threshold))
        Next
    End If
    barcodeImage.Dispose()
End Sub

Private Shared Sub TestScanWithIterationsCode128orDataMatrix(ByVal fileName As String)
    ' find one Code 128 or DataMatrix barcode from 400 to 600 threshold (10 iterations)
    ScanWithIterations(fileName, BarcodeType.Code128 Or BarcodeType.DataMatrix, 1, 10, 400, 600)
End Sub

[C#]
static void ScanWithIterations(string fileName, BarcodeType barcodes, int expectedBarcodes, 
    int iterationCount, int minThreshold, int maxThreshold)
{
    Image barcodeImage = Image.FromFile(fileName);
    BarcodeReader reader = new BarcodeReader();
    reader.Settings.ScanBarcodeTypes = barcodes;
    reader.Settings.ExpectedBarcodes = expectedBarcodes;
    reader.Settings.ThresholdIterations = iterationCount;
    reader.Settings.Threshold1D = minThreshold;
    reader.Settings.Threshold2D = maxThreshold;
    // read barcodes
    IBarcodeInfo[] barcodesInfo = reader.ReadBarcodes(barcodeImage);
    if (barcodesInfo.Length == 0)
    {
        Console.WriteLine("No barcodes found.");
    }
    else
    {
        for (int i = 0; i < barcodesInfo.Length; i++)
        {
            IBarcodeInfo inf = barcodesInfo[i];
            Console.WriteLine(string.Format("[{0}] {1} (Threshold: {2})", inf.BarcodeType, inf.Value, inf.Threshold));
        }
    }
    barcodeImage.Dispose();
}

static void TestScanWithIterationsCode128orDataMatrix(string fileName)
{
    // find one Code 128 or DataMatrix barcode from 400 to 600 threshold (10 iterations)
    ScanWithIterations(fileName, BarcodeType.Code128 | BarcodeType.DataMatrix, 1, 10, 400, 600);
}
    

 

 

Wie kann ich Barcodes aus multipage TIFF Datei lesen?

Hier ist ein einfacher Code:

[VB.NET]
Private Shared Sub ReadBarcodesFromMiltipageTiffFile(ByVal fileName As String, ByVal barcodes As BarcodeType)
    ' open tiff image
    Dim tiffImage As Image = Image.FromFile(fileName)
    Dim index As Guid = tiffImage.FrameDimensionsList(0)
    Dim dimension As New FrameDimension(index)
    Dim pageCount As Integer = tiffImage.GetFrameCount(dimension)
    ' create reader
    Dim reader As New BarcodeReader()
    reader.Settings.ScanBarcodeTypes = barcodes
    ' read barcodes from all pages
    For i As Integer = 0 To pageCount - 1
        ' selects a page
        tiffImage.SelectActiveFrame(dimension, i)
        ' read barcodes from page i
        Dim barcodesInfo As IBarcodeInfo() = reader.readBarcodes(tiffImage)
        ' write information
        Console.WriteLine(String.Format("Page {0}: ", i))
        If barcodesInfo.Length = 0 Then
            Console.WriteLine("No barcodes found.")
        Else
            For j As Integer = 0 To barcodesInfo.Length - 1
                Console.WriteLine(String.Format("[{0}] {1}", barcodesInfo(j).BarcodeType, barcodesInfo(j).Value))
            Next
        End If
    Next
    ' free resources
    tiffImage.Dispose()
End Sub

[C#]
static void ReadBarcodesFromMiltipageTiffFile(string fileName, BarcodeType barcodes)
{
    // open tiff image
    Image tiffImage = Image.FromFile(fileName);
    Guid index = tiffImage.FrameDimensionsList[0];
    FrameDimension dimension = new FrameDimension(index);
    int pageCount = tiffImage.GetFrameCount(dimension);
    // create reader
    BarcodeReader reader = new BarcodeReader();
    reader.Settings.ScanBarcodeTypes = barcodes;
    // read barcodes from all pages
    for (int i = 0; i < pageCount; i++)
    {
        // selects a page
        tiffImage.SelectActiveFrame(dimension, i);
        // read barcodes from page i
        IBarcodeInfo[] barcodesInfo = reader.ReadBarcodes(tiffImage);
        // write information
        Console.WriteLine(string.Format("Page {0}: ", i));
        if (barcodesInfo.Length == 0)
        {
            Console.WriteLine("No barcodes found.");
        }
        else
        {
            for (int j = 0; j < barcodesInfo.Length; j++)
                Console.WriteLine(string.Format("[{0}] {1}", barcodesInfo[j].BarcodeType, barcodesInfo[j].Value));
        }
    }
    // free resources
    tiffImage.Dispose();
}

 

 

Wie kann ich Barcodes aus PDF Datei decodieren?

Hier ist ein einfacher Code:

[VB.NET]
Private Shared Sub ReadBarcodesFromPdfDocument(ByVal fileName As String, ByVal barcodes As BarcodeType)
    ' open PDF document
    Dim pdfImageViewer As New PdfImageViewer(fileName)
    ' create reader
    Dim reader As New BarcodeReader()
    reader.Settings.ScanBarcodeTypes = barcodes
    ' read barcodes from all pages
    For i As Integer = 0 To pdfImageViewer.PageCount - 1
        ' get all images names from page i
        Dim imageNames As String() = pdfImageViewer.GetImageNames(i)
        ' foreach images in page i
        For k As Integer = 0 To imageNames.Length - 1
            Console.WriteLine(String.Format("Page {0}, image {1}: ", i, imageNames(k)))
            Dim barcodeImage As Image
            ' get image with name imageNames[k]
            Try
                barcodeImage = pdfImageViewer.GetImage(i, imageNames(k))
            Catch e As Exception
                ' not supported image format
                Console.WriteLine(e.Message)
                Continue For
            End Try
            ' read barcodes 
            Dim barcodesInfo As IBarcodeInfo() = reader.readBarcodes(barcodeImage)
            ' write information
            If barcodesInfo.Length = 0 Then
                Console.WriteLine("No barcodes found.")
            Else
                For j As Integer = 0 To barcodesInfo.Length - 1
                    Console.WriteLine(String.Format("[{0}] {1}", barcodesInfo(j).BarcodeType, barcodesInfo(j).Value))
                Next
            End If
        Next
    Next
    ' free resources
    pdfImageViewer.Dispose()
End Sub

[C#]
static void ReadBarcodesFromPdfDocument(string fileName, BarcodeType barcodes)
{
    // open PDF document
    PdfImageViewer pdfImageViewer = new PdfImageViewer(fileName);
    // create reader
    BarcodeReader reader = new BarcodeReader();
    reader.Settings.ScanBarcodeTypes = barcodes;
    // read barcodes from all pages
    for (int i = 0; i < pdfImageViewer.PageCount; i++)
    {
        // get all images names from page i
        string[] imageNames = pdfImageViewer.GetImageNames(i);
        // foreach images in page i
        for (int k = 0; k < imageNames.Length; k++)
        {
            Console.WriteLine(string.Format("Page {0}, image {1}: ", i, imageNames[k]));
            Image barcodeImage;
            // get image with name imageNames[k]
            try
            {
                barcodeImage = pdfImageViewer.GetImage(i, imageNames[k]);
            }
            catch(Exception e)
            {
                // not supported image format
                Console.WriteLine(e.Message);
                continue;
            }
            // read barcodes 
            IBarcodeInfo[] barcodesInfo = reader.ReadBarcodes(barcodeImage);
            // write information
            if (barcodesInfo.Length == 0)
            {
                Console.WriteLine("No barcodes found.");
            }
            else
            {
                for (int j = 0; j < barcodesInfo.Length; j++)
                    Console.WriteLine(string.Format("[{0}] {1}", barcodesInfo[j].BarcodeType, barcodesInfo[j].Value));
            }
        }
    }
    // free resources
    pdfImageViewer.Dispose();
}

 

 

Wie kann ich Barkodes im PDF-Dokument in Vektor-Form schreiben?

Hier ist ein Beispiel:

[VB.NET]
' Important: You need Vintasoft.Barcode.dll, Vintasoft.Imaging.dll, Vintasoft.Pdf.dll assemblies to run this code.
Private Shared Sub MarkPDF(ByVal pdfFilename As String)
    ' create barcodeWriter
    Dim barcodeWriter As New BarcodeWriter()
    ' using DataMatrix 2D barcode
    barcodeWriter.Settings.Barcode = BarcodeType.Code128
    ' barcode padding
    Dim padding As Single = 5

    ' open PDF document
    Dim document As New PdfDocument(pdfFilename)
    ' foreach pages
    For i As Integer = 0 To document.Pages.Count - 1
        Dim page As PdfPage = document.Pages(i)
        ' barcode value - page number
        barcodeWriter.Settings.Value = (i + 1).ToString()
        ' write barcode graphics path
        Dim barcodePath As GraphicsPath = barcodeWriter.GetBarcodeAsGraphicsPath()
        ' translate barcode to right-bottom page corner
        Using m As New Matrix()
            Dim barcodeWidth As Single = barcodePath.GetBounds().Width
            m.Translate(page.MediaBox.Right - barcodeWidth - padding, padding)
            barcodePath.Transform(m)
        End Using
        ' fill barcode path
        Using g As PdfGraphics = page.GetGraphics()
            Dim brush As New PdfBrush(Color.Black)
            g.FillPath(brush, barcodePath)
        End Using
        barcodePath.Dispose()
    Next

    ' saving document
    Dim resultFileName As String = Path.GetFileNameWithoutExtension(pdfFilename) & "_marked.pdf"
    document.Save(Path.Combine(Path.GetDirectoryName(pdfFilename), resultFileName))
    ' free resources
    document.Dispose()
End Sub

[C#]
// Important: You need Vintasoft.Barcode.dll, Vintasoft.Imaging.dll, Vintasoft.Pdf.dll assemblies to run this code.
static void MarkPDF(string pdfFilename)
{
    // create barcodeWriter
    BarcodeWriter barcodeWriter = new BarcodeWriter();
    // using DataMatrix 2D barcode
    barcodeWriter.Settings.Barcode = BarcodeType.DataMatrix;
    // barcode padding
    float padding = 5;

    // open PDF document
    PdfDocument document = new PdfDocument(pdfFilename);
    // foreach pages
    for (int i = 0; i < document.Pages.Count; i++)
    {
        PdfPage page = document.Pages[i];
        // barcode value - page number
        barcodeWriter.Settings.Value = (i + 1).ToString();
        // write barcode graphics path
        GraphicsPath barcodePath = barcodeWriter.GetBarcodeAsGraphicsPath();
        // translate barcode to right-bottom page corner
        using (Matrix m = new Matrix())
        {
            float barcodeWidth = barcodePath.GetBounds().Width;
            m.Translate(page.MediaBox.Right - barcodeWidth - padding, padding);
            barcodePath.Transform(m);
        }
        // fill barcode path
        using (PdfGraphics g = page.GetGraphics())
        {
            PdfBrush brush = new PdfBrush(Color.Black);
            g.FillPath(brush, barcodePath);
        }
        barcodePath.Dispose();
    }

    // saving document
    string resultFileName = Path.GetFileNameWithoutExtension(pdfFilename) + "_marked.pdf";
    document.Save(Path.Combine(Path.GetDirectoryName(pdfFilename), resultFileName));
    // free resources
    document.Dispose();
}

 

 

Wie kann ich meine Abstimmsumme in Barcode Leser/Schreiber nutzen?

Sie müssen ReaderSettings.VerifyBarcodeMethod Eigenschaft nutzen um Barkode-Richtigkeit(Abstimmsumme) zu prüfen. Hier ist ein einfacher Code, der illustriert wie kann man Erstellen und Lesen Code 39 Barkodes mit Abstimmsumme an der Basis 1000:

[VB.NET]
' Generate checksum at base 1000.
Private Shared Function GenerateChecksum(ByVal value As String) As String
    Dim checkSum As Integer = 0
    For i As Integer = 0 To value.Length - 1
        checkSum += CByte(AscW(value(i))) * i
        checkSum = checkSum Mod 1000
    Next
    'result - [000..999]
    Return checkSum.ToString().PadLeft(3, "0"c)
End Function

' Testing Checksum in barcode value.
Private Shared Function TestChecksum(ByVal barcodeValue As String) As Boolean
    Dim value As String = barcodeValue.Substring(0, barcodeValue.Length - 3)
    Dim readChecksum As String = barcodeValue.Substring(barcodeValue.Length - 3)
    Return readChecksum = GenerateChecksum(value)
End Function

' Verify barcode method.
Private Shared Sub VerifyBarcodeMethod(ByVal reader As BarcodeReader, ByVal barcodeInfo As IBarcodeInfo)
    If TestChecksum(barcodeInfo.Value) Then
        barcodeInfo.Confidence = 100
    Else
        barcodeInfo.Confidence = 0
    End If
End Sub

Private Shared Sub TestCode39Barcode(ByVal value As String)
    ' create writer
    Dim writer As New BarcodeWriter()
    writer.Settings.Barcode = BarcodeType.Code39

    ' create reader
    Dim reader As New BarcodeReader()
    reader.Settings.ScanBarcodeTypes = BarcodeType.Code39
    reader.Settings.MinConfidence = 100
    reader.Settings.AutomaticRecognition = True
    reader.Settings.ExpectedBarcodes = 1

    ' write barcode without checksum
    writer.Settings.Value = value
    Dim barcodeNoChecksumImage As Image = writer.GetBarcodeAsBitmap()

    ' write barcode with checksum
    writer.Settings.Value = value & GenerateChecksum(value)
    Dim barcodeWithMyChecksumImage As Image = writer.GetBarcodeAsBitmap()

    'set VerifyBarcodeMethod
    reader.Settings.VerifyBarcodeMethod = AddressOf VerifyBarcodeMethod

    Dim infos As IBarcodeInfo()

    'read barcodes from barcode image without checksum
    'no barcodes found
    infos = reader.readBarcodes(barcodeNoChecksumImage)
    Console.WriteLine("Scan (NoChecksum):")
    For i As Integer = 0 To infos.Length - 1
        Console.WriteLine(infos(i).Value)
    Next

    'read barcodes from barcode image with checksum
    'found one barcode
    infos = reader.readBarcodes(barcodeWithMyChecksumImage)
    Console.WriteLine("Scan (MyChecksum):")
    For i As Integer = 0 To infos.Length - 1
        Console.WriteLine(infos(i).Value)
    Next
End Sub

[C#]
// Generate checksum at base 1000.
static string GenerateChecksum(string value)
{
    int checkSum = 0;
    for (int i = 0; i < value.Length; i++)
    {
        checkSum += ((byte)value[i]) * i;
        checkSum %= 1000;
    }
    //result - [000..999]
    return checkSum.ToString().PadLeft(3, '0');
}

// Testing Checksum in barcode value.
static bool TestChecksum(string barcodeValue)
{
    string value = barcodeValue.Substring(0, barcodeValue.Length - 3);
    string readChecksum = barcodeValue.Substring(barcodeValue.Length - 3);
    return readChecksum == GenerateChecksum(value);
}

// Verify barcode method.
static void VerifyBarcodeMethod(BarcodeReader reader, IBarcodeInfo barcodeInfo)
{
    if (TestChecksum(barcodeInfo.Value))
        barcodeInfo.Confidence = 100;
    else
        barcodeInfo.Confidence = 0;
}

static void TestCode39Barcode(string value)
{
    // create writer
    BarcodeWriter writer = new BarcodeWriter();
    writer.Settings.Barcode = BarcodeType.Code39;

    // create reader
    BarcodeReader reader = new BarcodeReader();
    reader.Settings.ScanBarcodeTypes = BarcodeType.Code39;
    reader.Settings.MinConfidence = 100;
    reader.Settings.AutomaticRecognition = true;
    reader.Settings.ExpectedBarcodes = 1;

    // write barcode without checksum
    writer.Settings.Value = value;
    Image barcodeNoChecksumImage = writer.GetBarcodeAsBitmap();

    // write barcode with checksum
    writer.Settings.Value = value + GenerateChecksum(value);
    Image barcodeWithMyChecksumImage = writer.GetBarcodeAsBitmap();

    //set VerifyBarcodeMethod
    reader.Settings.VerifyBarcodeMethod = VerifyBarcodeMethod;

    IBarcodeInfo[] infos;

    //read barcodes from barcode image without checksum
    //no barcodes found
    infos = reader.ReadBarcodes(barcodeNoChecksumImage);
    Console.WriteLine("Scan (NoChecksum):");
    for (int i = 0; i < infos.Length; i++)
        Console.WriteLine(infos[i].Value);

    //read barcodes from barcode image with checksum
    //found one barcode
    infos = reader.ReadBarcodes(barcodeWithMyChecksumImage);
    Console.WriteLine("Scan (MyChecksum):");
    for (int i = 0; i < infos.Length; i++)
        Console.WriteLine(infos[i].Value);
}

 

 

Wie kann ich Barkode mit bestimmten Größe und Auflösung generieren?

[VB.NET]
Private Shared Function DrawBarcode(ByVal barcode As BarcodeType, ByVal value As String, ByVal resolution As Single, _ 
ByVal width As Single, ByVal height As Single, ByVal units As UnitOfMeasure) As Image
    Dim writer As New BarcodeWriter()
    writer.Settings.Barcode = barcode
    writer.Settings.Value = value
    writer.Settings.Resolution = resolution
    writer.Settings.SetWidth(width, units)
    writer.Settings.SetHeight(height, units)
    Return writer.GetBarcodeAsBitmap()
End Function

Private Shared Sub TestDrawBarcode(ByVal fileName As String)
    ' Draw barcode 6x2 cm in 600 DPI
    Dim barcodeImage As Image = DrawBarcode(BarcodeType.Code128, "TESTBARCODE", 600, 6, 2, UnitOfMeasure.Centimeters)
    barcodeImage.Save(fileName)
    barcodeImage.Dispose()
End Sub

[C#]
static Image DrawBarcode(BarcodeType barcode, string value, float resolution, float width, float height, UnitOfMeasure units)
{
    BarcodeWriter writer = new BarcodeWriter();            
    writer.Settings.Barcode = barcode;
    writer.Settings.Value = value;
    writer.Settings.Resolution = resolution;
    writer.Settings.SetWidth(width, units);
    writer.Settings.SetHeight(height, units);
    return writer.GetBarcodeAsBitmap();
}

static void TestDrawBarcode(string fileName)
{
    // Draw barcode 6x2 cm in 600 DPI
    Image barcodeImage = DrawBarcode(BarcodeType.Code128, "TESTBARCODE", 600, 6, 2, UnitOfMeasure.Centimeters);
    barcodeImage.Save(fileName);
    barcodeImage.Dispose();
}