Barcodes
report nutzt die System-eigene Logik um Barcodes in den verschiedensten Ausprägungen im Beleg-Druck verfügbar zu machen. Diese setzten allerdings auf eine seitens Microsoft definierte Logik und Schriftarten auf. Es gibt allerdings die Möglichkeit diese durch eingene Routinen zu ersetzten.
Alternative Barcode-Logik nutzen
Es wird je nach Barcode Art (1D oder 2D Barcode) ein Publisher aus der addon|base App genutzt, die aber identisch arbeiten.
[EventSubscriber(ObjectType::Codeunit, Codeunit::"base_extras", 'OnBefore1DBarCode', '', true, true)]
local procedure OnBefore1DBarCode(var Handled: Boolean; var String: Text; BarcodeSymbology: Enum "Barcode Symbology"; var BarcodeString: Text)
begin
// do some coding
end;
[EventSubscriber(ObjectType::Codeunit, Codeunit::"base_extras", 'OnBefore2DBarCode', '', true, true)]
local procedure OnBefore2DBarCode(var Handled: Boolean; var String: Text; BarcodeSymbology: Enum "Barcode Symbology 2D"; var BarcodeString: Text; ToHtml: Boolean)
begin
// do some coding
end;
Parameter:
- Handled: Dieser Parameter wird auf true gesetzt um die Standard Verarbeitung zu unterbinden.
- String: Beinhaltet den Text, der zu einem Barcode werden soll.
- BarcodeSymbology: Standard Enum, beinhaltet das benötigte Barcode Format
- BarcodeString: Der codierte Barcode als Text
- toHtml: Falls der Barcode in einem HTML Format vorliegen soll (zum Druck z.B. innerhalb eines Fließtextes). (nur für 2D
Barcodes im Texteditor nutzen
Wenn Sie Barcodes innerhalb des Texteditors einsetzen wollen, ist dieses z.B. über einen Platzhalter möglich, den Sie bereits erstellt haben.
[EventSubscriber(ObjectType::Codeunit, Codeunit::"RPT_Report Functions", 'ProcessCustomPlaceholder', '', true, true)]
local procedure ProcessCustomPlaceholder(VarRec: Variant; var Placeholder: Code[20]; var ResultString: Text; ReportObjectSetup: Record "RPT_Object Setup"; var ReportParameters: Record "Name/Value Buffer")
var
extra: Codeunit base_extras;
BarcodeFormat: Enum "BASE Barcode Symbology";
TmpBarcodeString: Text;
begin
case Placeholder of
'55':
begin
//Do some coding
TmpBarcodeString := 'This is a dope barcode';
TmpBarcodeString := extra.EncodeBarcode(ResultString, BarcodeFormat::"QR-Code",true);
sender.AddTmpTextLine(ResultString,'',TmpBarcodeString,0,7,'2DAutomation','',0,0);
end;
end
end;
Der ermittelte Text, der in einen Barcode formatiert werden soll, wird über die EncodeBarcode Funktion aus addon|base mit der Information des gewünschten Barcode Formates übertragen. Im Anschluss können sie (optional) den Text mittels der AddTmpTextLine Funktion aus der RPT_Report Functions mit einem gewünschten Format versehen.
Die Funktion AddTmpTextLine hat hier folgende Parameter:
- NewString: Der neu formatierte Text
- VarValue: Der zu formatierende Text
- FontStyle: Formatierungs-Optionen (Fett,Kursiv,FettKursiv) muss hier 0 sein.
- FontFamily: Die Schriftart die für diesen Barcode zum Einsatz kommt, z.B. 2DAutomation
- FontColor: (optionale) HTML konforme Schriftfarbe
- Align: Ausrichtung (Linksbündig,Zentriert,Rechtsbündig) muss hier 0 sein.
- Effekt: Formatierungs-Option (durchgestrichen,unterstrichen) muss hier 0 sein.