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
Möglich auftretender Fehler
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.
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
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.