Microsoft bietet zwar eigene DotNet-Funktionen zum Erstellen von QR-Codes (Microsoft.Dynamics.Nav.MX), diese sind aber merkbar gealtert und nicht mehr auf dem Stand der Dinge. Es gibt aber ein Open Source .NET-Bibliothek, welche deutlich schneller und schlanker daher kommt, ohne aber dabei auf Funktionalitäten zu verzichten. ZXing.Net ist eine Portierung der ursprünglichen auf Java-basierten Barcode-Lese- und Generatorbibliothek ZXing. ZXing.Net kann mit wenigen einfachen Schritten installiert und genutzt werden.

C/AL

  1. ZXing.Net herunterladen

  2. ZXing.Net installieren Client (nur für Entwicklung) und Server

    • Den Ordner net4.5 aus der heruntergeladenen ZIP-Datei in das Add-ins Verzeichnis der NAV-Installation ablegen.

Möglich auftretender Fehler

Could not load type Name der DLL ...

Da die genutzten DLLs auf einem anderen Computer kompiliert wurden, schätzt sie Windows gegebenenfalls als nicht sicher ein. In diesem Fall, können Sie unter den Dateieinstellungen der DLLs den Zugriff freigeben.

Eigenschaften der zxing.dll

Code Beispiel

Name DataType Subtype
BarcodeFormat DotNet ZXing.BarcodeFormat
barcodeWriter DotNet ZXing.BarcodeWriter
EncodingOption DotNet ZXing.Common.EncodingOptions
BitMatrix DotNet ZXing.Common.BitMatrix
ImageFormat DotNet System.Drawing.Imaging.ImageFormat
bitmap DotNet System.Drawing.Bitmap.
QRCode Text  

Bei den DotNet-Variablen müssen Sie darauf achten, dass die Property "RunOnClient" auf "No" gesetzt ist. Dies bezweckt, dass beim Ausführen des Codes die DLLs, welche auf dem Server abgelegt wurden, angesprochen werden.

EncodingOption := EncodingOption.EncodingOptions();
EncodingOption.Height := 2000;
EncodingOption.Width := 2000;

barcodeWriter := barcodeWriter.BarcodeWriter();
barcodeWriter.Format := BarcodeFormat.QR_CODE
barcodeWriter.Options := EncodingOption;
QRCode := 'MECARD:' +
  'N:' + 'Richter,Joachim' + ';' +
  'TEL:' + '0251 924329-0' + ';' +
  'EMAIL:' + 'jr@cronus.ag' + ';' +
  'URL:' + 'https://navision24.de/' + ';';

BitMatrix := barcodeWriter.Encode(QRCode);
bitmap := barcodeWriter.Write(BitMatrix);

bitmap.Save('c:\windows\temp\qrcode-Mecard.bmp');

Ergebnis

QR-Code in NAV erzeugen

AL (On-Premise)

Siehe C/AL

Wenn Sie die DLL in einer AL-Extension nutzen wollen, geht dies nur, wenn es sich um eine On-Premise-Installation handelt. In der app.json Datei der Extension muss der Parameter "target" auf "Internal" gesetzt werden.