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/CP1252und 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.
- PrintLogo
-
Firmenlogo fuer den Druck: Stufe, Pixelmass des Originals und das fertige
Rasterbild aus logoRaster (Zwilling von
PrintLogoim 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.
- SheetLogo
- 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.
nameist 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_MAXim Druck-Kit der Browser-Kasse). Die Flaechenmittel- Schleife in logoRaster laeuft synchron ueberpixelWidth 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.timeoutinloadPrintLogokann 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 Vorgabewpc1252. -
codeTablePreviewText(
CodeTableId table) → String -
Das Beispiel mit den Ersetzungen der Tabelle, Zeilen durch
\ngetrennt: 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.
cashregisterLabelsteht in der Kopfzeile (keine Personendaten),timein Wiener Zeit;paperaendert 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 nauf 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. -
loadPrintLogo(
String? url, SheetLogoSize size, KeckPaperSize paper, {PixelLoader? pixel, Duration timeout = const Duration(seconds: 3), Duration negativeCacheTtl = defaultNegativeCacheTtl}) → Future< PrintLogo?> -
Laedt das Logo unter
urlund rastert es in die Groesse, die das Blattsizeundpapergeben (logoDimensions/logoRaster) --nullohne Adresse oder bei jedem Fehler (Netz, Decode, Pixelmass).pixelersetzt den Standardweg ueber LogoService/decodePng(Tests, andere Quellen). -
logoDimensions(
SheetLogo logo, int chars) → LogoDimensions - Ins Kaestchen der Stufe eingepasst, nie hochgerechnet (1 Bildpixel hoechstens 1 Druckpunkt).
-
logoRasterSize(
LogoDimensions dimensions, int chars) → ({int height, int width})