Info Produit


Revue

Licence

FAQ

Forums

Exemples

History


Téléchargements

Version d'évaluation

On-line manual

Opinions


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

Questions d'ordre général:

 

Redistribution:

 

Programmation:

 

 

Pour quels buts je peux utiliser VintaSoftBarcode.NET Library?

La bibliothèque permet de lire et écrire 1D, postaux et codes-barres 2D à partir d'images numériques et des fichiers PDF.

 

 

La bibliothèque, que-ce qu’elle comprend?

La bibliothèque comprend:

  • Fichier Vintasoft.Barcode.dll - bibliothèque de classes pour. NET entièrement gérée
  • Documentation en format MS Help Workshop (fichier Help\Vintasoft.Barcode.chm)
  • L'application de démonstration (fichier Bin\vX.X\BarcodeDemo.exe)
  • Exemples pour MS VB.NET, C#, ASP.NET (fichiers dans le catalogue Examples)
  • Exemples d'images avec des codes à barres (fichiers dans le catalogue Images)

 

 

Dans quels langages de programmation je peux utiliser la bibliothèque VintaSoftBarcode.NET?

La licence du développeur et la licence pour la société permettent utiliser composant à:

  • Microsoft Visual Studio .NET : Visual Basic, Visual C#, Visual C++, Visual J#
  • Borland Delphi, Borland C# Builder, Borland C++ BuilderX
  • N'importe quels langages de programmation et les applications compatibles avec la technologie .NET.

Licence pour serveur permet d’utiliser composant à:

  • ASP.NET on server-side

 

 

Quels restrictions existe dans la version non enregistrée de la bibliothèque?

La version non enregistrée de la bibliothèque a les limitations suivantes:

  • Dans Bin/X.X/Vintasoft.Barcode.dll, l'écran "Programme" paraît chaque fois avant la recherche des codes à barres.
  • La valeur du code à barres trouvé est remplacé par la ligne “*DEMO*" pour les codes à barres trouvés comme QR, GS1 Databar et IntelligentMail.
  • Dans Bin/X.X/NoNagScreen/Vintasoft.Barcode.dll, certains symboles du code à barres trouvés sont remplacés par le symbole '*'.
  • Сodes à barres peut être lu que de la première page du document PDF.
  • Ligne "Demo" est ajouté au code à barres généré par hasard.

 

 

Je n'ai pas trouvé la réponse à ma question. Qu’est-ce que je dois faire?

L'information sur la plupart des questions peut être trouvée dans la documentation sur le composant ou dans ce FAQ. Si vous n'avez pas trouvé la réponse à votre question, alors écrivez la lettre au service de la maintenance.

 

 

Quels fichiers je dois incorparer dans le distributif de mon logiciel?

Vous ne devez insérer dans le distributif de votre logiciel qu’un fichier: Vintasoft.Barcode.dll. Après l'installation de Votre logiciel sur l'ordinateur ce fichier doit être placé au catalogue où il y avait une référence à la compilation du logiciel.

 

 

Est-ce que je peux diffuser le composant Vintasoft.Barcode.dll avec mon application?

Oui, vous pouvez diffuser le composant avec votre application. Vous ne payez que pour l’enregistrement initial. La licence pour la société n'ont pas les restrictions de la diffusion. La licence du développeur a certains restrictions de la diffusion. La diffusion de licence du serveur n'est pas libre de droits. Regardez, s'il vous plaît, l'accord de licence.

 

 

Comment puis – je maximiser la vitesse de la lecture du code de barre?

Voilà quelques conseils qui permettent de maximiser la vitesse de la lecture des codes de barre:

  • Reconnaître seulement des types necéssaires du code de barre (voir Settings.ScanBarcodeTypes), cela peut augmenter la vitesse de la lecture des codes de barre à 2 fois.
  • Reconnaître les codes de barre seulement dans les directions necéssaires (voir propriétés de Settings.ScanDirection). Cela peut augmenter la vitesse de la lecture des codes de barre à 20%.
  • Trouver un seuil “necéssaire” pour votre image colorée et l’utilisez (voir propriétés de Settings.Threshold) n’utilisez pas le mode automatique de seuil (voir propriétés de Settings.ThresholdMode)si c’est possible. Cela peut augmenter la vitesse de la lecture des codes de barre à 10%.
  • Mettez la propriété de ExpectedBarcodes si le nombre de codes de barre est connu.
  • Utilisez des images en noir et blanc avec les codes de barre. Cela peut augmenter la vitesse de la lecture des codes de barre à 20%.
  • Débrayer la fonction Settings.RemovePeas si l’image avec des codes de barre est de bon qualité. Cela peut augmenter la vitesse de la lecture des codes de barre à 5%.
  • N’utilisez pas la direction ScanDirection.Angle45and135 si vous n’avez pas de bas et de larges codes de barre tournés à 30-60 degrés. Cela peut augmenter la vitesse de la lecture des codes de barre à 30%.
  • Débrayer la fonction Settings.SearchDistortedDataMatrixBarcodes si vous avez des codes de barre DataMatix rectangulaires ou carrés. Cela peut augmenter la vitesse de la lecture des codes de barre до 50%.

 

 

Quel est le moyen d’obtenir le plus stable système de création et d’identification des codes de barre?

Pour accorder le système il faut utiliser l’attribut IBarcodeInfo.ReadingQuality.

  • Réalisez une série d’expérimentations de valeurs différents de Threshold (ou de paramètre de l’intensité de scanner) et de l’ensemble de codes de barre différents (de 10).
  • Choisissez les paramètres où la valeur moyenne de Reading Quality est maximale.
  • La moyenne valeur minimale recommendée de Reading Quality est de 0.75. La valeur énoncée ci-dessus de ce paramètre vous permettra de recevoir le système le plus stable.
Au début on réccomende de lire des codes de barre de l’image, et après de corriger l’image et d’accomplir le traitement de l’image.

 

 

Est-ce qu’il y a des recommandations à propos du création des codes de barre à une dimension pour leur identification réussie?

Les codes de barre les plus résistants aux ruptures et déformations sont les codes de barre du type Code 39 et Code 128 (avec la somme de contrôle!).
Le code de barre le plus compact est le Code 128 (tant pour les résultats numériques, que pour les résultats de symbole).

Recommandations à la qualité du tirage:

  • La valeur récommandée de la bande unitaire dans l’image scannée est deux pixels et plus at least 2 pixels.
  • Le plus est la hauteur du code de barre, le plus est la qualité de la lecture.
  • La valeur récommandée du recul est 4 bandes unitaires et plus.
  • Si le code de barre n’a pas de somme de contrôle (Code 39, Interleaved 2of5, Standard 2of5) utilisez la somme de contrôle optionnel, ce qui laisse éviter les erreurs au cours de la lecture des codes de barre de l’images de mauvaise qualité.

 

 

Est-ce qu’il y a des recommandations à propos du création des codes de barre dimétriques pour leur identification réussie?

Le code de barre les plus résistant aux ruptures et déformations est le code de barre du type Data Matrix. Le code de barre le plus compact est Aztec, puis DataMatrix, QR Code, et après PDF417.
Tous les trois types de codes de barre peuvent contenir tant les données de texte que les données binaires et utilisent l’algorithme de définition et correction d’erreurs Reed-Solomon, ce qui laisse restituer à 30% des données défectueuses du code de barre.

Recommandations à la qualité du tirage:

  • Aztec, Data Matrix, QR Code: la valeur récommandée de la cellule du code de barre dans l’image scannée est trois pixels et plus
  • PDF417: la valeur récommandée de la bande unitaire dans l’image scannée est deux pixels et plus.
  • Le recul récommandé pour PDF417 et DataMatrix est 2 valeurs unitaires de la taille de cellule.
  • Le recul récommandé pour QR Code est 4 valeurs unitaires de la taille de cellule.

 

 

Est-ce que la librairie supporte le multiflux?

Oui. Commençant par la version 5.0 l’algorithme principal se divise en N flux.

 


 

Comment puis – je reconnaître le code de barre en image colorée de qualité inférieure?

Il existe deux variantes:

  • Utiliser le discernement automatique (voir ReaderSettings.AutomaticRecognition).
  • Utiliser le processus de la lecture itératif des codes de barre (voir Settings.ThresholdIterations). Voilà un simple exemple, qui démontre comment reconnaître des codes de barre en image en couleur, dont threshold (seuil chromatique) est déterminé difficilement:

[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);
}
    

 

 

Est-ce que je peux lire des codes à barres du fichier TIFF multi-page?

Oui, l'exemple:

[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();
}

 

 

Est-ce que je peux lire des codes à barres du document PDF?

Oui, l'exemple:

[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();
}

 

 

Comment puis-je placer le code de barre en document PDF en forme vectorielle?

L'exemple:

[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();
}

 

 

Comment puis-je utiliser mon contrôle(checksum) dans le lecteur/écrivain de code barres?

Vous devez utiliser la propriété ReaderSettings.VerifyBarcodeMethod pour la vérification du code de barre (de sa somme de contrôle). Voila l’exemple du code qui montre comment créer et reconnaître Code 39 le code de barre avec la somme de contrôle par le module 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);
}

 

 

Comment puis-je dessiner un code de barre avec la dimension et résolution donnée (DPI)?

[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();
}