printing library

Oeffentliches Barrel fuer den vendierten ESC/POS-Druck-Stack.

Integratoren, die selbst Bytes bauen wollen, importieren dieses Barrel und senden das Ergebnis via KeckPrinterService.printRawBytes:

import 'package:kasseneck_api/printing.dart';

final gen = EscPosGenerator(EscPaperSize.mm80, CapabilityProfile());
final bytes = <int>[
  ...gen.text('Hallo', styles: const PosStyles(align: PosAlign.center)),
  ...gen.cut(),
];
await KeckPrinterService.printRawBytes(bytes);

Classes

BluetoothTransport
PrinterTransport ueber einen Bluetooth-Drucker.
CapabilityProfile
Minimales Ersatz-Profil fuer den ESC/POS-Generator. Statt der 66-KB- capabilities.json nur die tatsaechlich genutzten Codepages: die alten Namen CP437/CP1252 und jede Tabelle des Katalogs unter ihrem Namen (pc858 -> 19 ...).
CodeTable
Eine Code-Tabelle des Katalogs.
CodeTableTestSheet
Das Testblatt im Zeilenmodell des Beleg-Blatts, dazu die Testzeilen.
CodeTableTestSheetRow
Eine Testzeile: Nummer, Tabelle und die Zeichen, die ihr fehlen (fuer „ohne €“ am Bildschirm).
CustomPrintJob
Sammelt mehrere Custom-Druckbefehle und baut daraus EINEN Byte-Strom, der mit KeckPrinterService.printJob in einem einzigen Sendevorgang gedruckt wird (fuer Bluetooth deutlich robuster als viele Einzel-Sends).
EscPaperSize
EscPosGenerator
KeckPrinter
Einheitliche Druck-Fassade ueber einer PrinterTransport.
KeckPrinterService
KeckPrintResult
Ergebnis eines direkten Druckvorgangs (z. B. KeckPrinterService.printRawBytesWifi).
LogoRaster
PosColumn
Column contains text, styles and width (an integer in 1..12 range) containsChinese not used if the text passed as textEncoded
PosStyles
Text styles
PosTextSize
PrinterTransport
Transport-Abstraktion fuer den ESC/POS-Druck.
Firmenlogo fuer den Druck: Stufe, Pixelmass des Originals und das fertige Rasterbild aus logoRaster (Zwilling von PrintLogo im npm-Paket).
PrintPaper
QRCode
QRCorrection
QrMetrics
Die Rechenregel fuer die Modulgroesse des Beleg-QR — rein, ohne Drucker.
QRSize
QrSizing
Ergebnis der Modulgroessen-Rechnung.
RasterImage
Einfaches RGBA-Bild (4 Bytes/Pixel: R,G,B,A) als Ersatz fuer image.Image. Bewusst minimal — nur was der Druckpfad braucht.
WifiTransport
PrinterTransport ueber einen WLAN-/Netzwerkdrucker (Roh-TCP, Port 9100).

Enums

BarcodeHri
Position der HRI-Klartextzeichen (Human Readable Interpretation) relativ zum Barcode. Der Wert geht als n in GS H n.
BarcodeType
1D-Barcode-Symbologien fuer GS k (Form 2). Der Wert m ist der ESC/POS-Selektor (65..73) im Befehl GS k m n <payload>.
CodeTableId
Kennung einer Code-Tabelle. name ist der Wert, den das npm-Paket fuehrt und den eine Kasse je Drucker speichert.
KeckPaperSize
PosAlign
PosCutMode
PosDrawer
PosFontType
PosImageFn
bitImageRaster: GS v 0 (obsolete); graphics: GS ( L
QrModuleSize
Wie gross die Module des Beleg-QR werden duerfen — ein Deckel, keine Vorgabe: gedruckt wird immer die groesste Groesse, die noch aufs Papier passt, hoechstens aber diese hier.
QrPrintMode
Druckmodus für den Beleg-QR-Code.
SheetLogoSize

Extensions

PosQrModePrint on PosQrMode
Der eingestellte QR-Modus des Geräts als Druckbefehl.

Constants

codeTableTestSheetChars → const int
Spalten des Testblatts -- immer 58-mm-Format.
logoPixelMax → const int
Obergrenze der Rohpixel, die logoRaster noch anfasst (Zwilling von LOGO_PIXEL_MAX im Druck-Kit der Browser-Kasse). Die Flaechenmittel- Schleife in logoRaster laeuft synchron ueber pixelWidth x pxHoehe -- bei einem stark komprimierten Logo unter der Upload-Grenze (1 MB), das trotzdem auf z. B. 6000x6000 Rohpixel entpackt, blockiert das den UI-Isolate weit laenger als die Drei-Sekunden-Hausregel; Future.timeout in loadPrintLogo kann laufenden synchronen Code nicht unterbrechen. Eigene, pure Funktion, damit die Grenze ohne echtes Bild testbar ist.

Properties

codeTables → List<CodeTable>
Alle Code-Tabellen in der Reihenfolge des Testblatts (Nummer 1-6).
final

Functions

codeTableById(CodeTableId id) → CodeTable
Die Tabelle zu einer Kennung.
codeTableFromSetting(PosCodePage? setting) → CodeTableId
Tabelle aus der gespeicherten Einstellung codePage (CP1252/CP437). Keine Einstellung ist die Vorgabe wpc1252.
codeTablePreviewText(CodeTableId table) → String
Das Beispiel mit den Ersetzungen der Tabelle, Zeilen durch \n getrennt: fehlt der Tabelle ein Zeichen, stehen seine Ersatzbuchstaben da (pc437 -> „Käsekrainer 3,50 EUR“, replacement -> „Kaesekrainer 3,50 EUR“).
codeTableReferenceImage() → LogoRaster
Die Vorlage-Zeile als Rasterbild (384 x 24 Punkte), wie sie am Papier steht.
codeTableTestSheet({required String cashregisterLabel, required DateTime time, required KeckPaperSize paper}) → CodeTableTestSheet
Das Testblatt im Zeilenmodell des Beleg-Blatts -- dieselben Zeilen wie am Papier. cashregisterLabel steht in der Kopfzeile (keine Personendaten), time in Wiener Zeit; paper aendert das Blatt nicht (immer 32 Spalten).
codeTableTestSheetBytes({required String cashregisterLabel, required DateTime time, required KeckPaperSize paper}) → Uint8List
Das Testblatt als ESC/POS-Bytes. Jede Testzeile schaltet nach ihrer Nummer einmal mit FS . + ESC t n auf ihre Tabelle und traegt deren Bytes (encodeForCodeTable, also das echte €-Byte, wo die Tabelle es hat). Die Nummer steht doppelt breit und hoch (GS !) und fett, die Vorlage als Rasterbild (GS v 0).
encodeForCodeTable(String text, CodeTableId table) → Uint8List
Wandelt Text in die Bytes einer Code-Tabelle: erst die vorhandenen Ersetzungen (’ ´ •), dann die zehn deutschen Zeichen je Tabelle (Byte oder Ersatzbuchstaben), ASCII unveraendert, alles uebrige ueber die Abbildung der Tabelle, sonst ?. Ein Zeichen, das die Tabelle nicht kennt, ist genau ein Byte (auch ausserhalb der BMP); nur die Ersatzbuchstaben machen aus einem Zeichen mehrere. Spalten darum immer an den fertigen Bytes messen.
isLogoPixelSizeAllowed(int width, int height) → bool
true, wenn logoRaster das Bild noch anfassen darf.
Laedt das Logo unter url und rastert es in die Groesse, die das Blatt size und paper geben (logoDimensions/logoRaster) -- null ohne Adresse oder bei jedem Fehler (Netz, Decode, Pixelmass). pixel ersetzt den Standardweg ueber LogoService/decodePng (Tests, andere Quellen).
logoDimensions(int chars) → LogoDimensions
Ins Kaestchen der Stufe eingepasst, nie hochgerechnet (1 Bildpixel hoechstens 1 Druckpunkt).
logoRasterSize(LogoDimensions dimensions, int chars) → ({int height, int width})