Barcode Rendering Framework
Auf dieser Seite gibt es einen kurzen Erfahrungsbericht über das Arbeiten mit dem Barcode Rendering Framework (BRF):

Was ist die Barcode Rendering Framework (BRF)?

Das Barcode Rendering Framework (BRF) ist eine .NET-Library, die man für für das Erstellen von Barcode Bildern in C# Programme einbinden kann.

Über diese StackOverflow Seite bin ich zu dieser Library gekommen.

Wie bindet man BRF in C# ein?

Folgende Schritte sind umzusetzen:
  • Auf die BRF-Download-Seite gehen und die Barcode Render Binaries herunterladen. (Ich habe dabei die Datei Barcode.Render.Release.3.1.10729.zip heruntergeladen.)
  • Die Zip-Datei entpacken und die darin enthaltene Zen.Barcode.Core.dll in das bin-Verzeichnis der C# Applikation kopieren.
  • In den C# Dateien, in denen ein Barcode Bild erstellt werden soll, sind die entsprechenden Packages hinzuzufügen. Bisher habe ich nur folgendes Package benötigt:
                using Zen.Barcode;
              
  • Im Sourcecode wird beispielsweise folgende Anweisung verwendet, um ein Barcode Bild zu erzeugen:
              Code128BarcodeDraw pDraw = BarcodeDrawFactory.Code128WithChecksum;
              Image pImage = pDraw.Draw("MyBarcodeText", 3, 3);
              
    Damit wird ein Bild von einem Code 128 Barcode mit Checksumme erzeugt, der den Text MyBarcodeText repräsentiert. Der zweite Parameter gibt die maximale Bar-Höhe an und der dritte Parameter den Skalierungsfaktor für die Balkenbreite.
  • Beim Kompilieren der Sourcen, die DLL Datei als Referenz hinzufügen mit /r:bin\Zen.Barcode.Core.dll.

    So ergab sich beispielsweise folgende Anweisung bei mir, wenn man das Programm in eine DLL kompiliert:
    C:\WINDOWS\Microsoft.NET\Framework\v3.5\csc /target:library /r:bin\Zen.Barcode.Core.dll /out:bin\<LibraryName>.dll src\<LibraryName>\*.cs
Um andere Barcode-Typen zu suchen, habe ich auch die Source-Datei (Barcode.Render.Source.3.1.10729.zip) heruntergeladen und entpackt. In der Datei BarcodeDrawFactory.cs kann man nachschauen, welche Barcode-Typen zur Verfügung stehen.

Ein erstes Code-Beispiel

Im folgenden Beispiel wird ein Barcode Bild in eine RTF-Datei eingelagert. (Die Anleitung zu diesem Code habe ich auf dieser Stackoverflow-Seite erhalten.)
      Code128BarcodeDraw pDraw = BarcodeDrawFactory.Code128WithChecksum;
      Image pImage = pDraw.Draw("MyBarcodeText", 3, 3);

      MemoryStream stream = new MemoryStream();
      pImage.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
      byte [] bytes = stream.ToArray();
      string str = BitConverter.ToString(bytes, 0).Replace("-", string.Empty);
     
      string mpic = @"{\pict\pngblip\picw" + 
        pImage.Width.ToString() + @"\pich" + pImage.Height.ToString() + 
        @"\picwgoal" + 3500 + @"\pichgoal" + 500 + 
        @"\bin " + str + "}"; 
      
In diesem Code-Ausschnitt sieht man wieder die Erstellung des Barcode-Bildes wie in der obigen Beschreibung.

Danach wird das Bild in einen Byte Array umgewandelt und dieser danach in einen String, der im RTF-Format als Bild erkannt wird.

Danach werden die umgewandelten Bilddaten in den RTF-Code eingesetzt, der das Bild repräsentiert. Dabei werden noch die Breite und die Höhe des Bildes übergeben. Zusätzlich müssen mit \picwgoal und \pichgoal die Zielbreite und die Zielhöhe des Bildes angegeben werden. (Hier habe ich nach dem Try-And-Error-Prinzip die optimale Darstellung für unsere Barcode-Scanner ermittelt.)