Was ist QZ Tray Lite?
QZ Tray Lite ist ein lokaler Druckserver, der das QZ-Tray-Protokoll vollständig emuliert, jedoch ohne seine umfangreiche Infrastruktur. Es ermöglicht das Drucken von Quittungen auf Thermodruckern direkt von Ihrem Browser aus qz-tray.js – und Ihr Frontend-Code erfordert Null Änderungen.
Wenn Sie jemals das Original-QZ-Tray für stilles Drucken konfiguriert haben, kennen Sie die Schmerzen: Schlüsselpaare generieren, Zertifikate verteilen, einen Backend-Signatur-Endpunkt einrichten, sammeln {Aufruf, Parameter, Zeitstempel}, berechnen Sie den SHA-256-Hex, signieren Sie ihn mit dem privaten RSA-Schlüssel, geben Sie base64 an den Browser zurück und beten Sie. Irgendein Fehler – und statt einer Quittung sieht Ihr Benutzer ein „Zulassen?“ Dialog.
QZ Tray Lite beseitigt all dies.
-
Der
UnterschriftUndsignAlgorithmusFelder sind ignoriert. Ihr Client sendet wie gewohnt Signaturen und erhält erfolgreiche Antworten – er weiß nie, dass es sich um eine andere Implementierung handelt. -
Kein Backend-Signaturendpunkt erforderlich. Die Vertrauenskette reduziert sich auf nur zwei Parteien: Browser ↔ lokaler Prozess.
-
Verwendet vorhandene Zertifikate wieder – zum Beispiel von einem installierten QZ-Tray (Windows vertraut bereits).
CN=localhost), oder Sie können Ihr eigenes PKCS#12 bereitstellen.
Hauptvorteile
| Besonderheit | Originales QZ-Tablett | QZ Tray Lite |
|---|---|---|
| Installationsgröße | 164 MB, 232 Dateien (einschließlich JRE) | 90 KB, 15 .py Dateien |
| Laufzeit | Eingebettetes Java | Python 3.12+ (bereits auf Ihrem System) |
| Anforderungen an geräuschloses Drucken | Zertifikat + Signatur-Backend + Dialogkonfiguration | Nichts Besonderes |
| Frontend-Änderungen | — | Keiner — qz-tray.js Funktioniert wie es ist |
| Lesbarkeit des Codes | 40 MB Bytecode | 2.600 Zeilen mit Kommentaren |
| Automatisches Port-Failover | Ja | Ja |
Wie es funktioniert
Browser verbindet sich über WebSocket mit localhost (wss://8181 oder ws://8182). QZ Tray Lite reagiert auf die gleichen Anrufe wie das Original:
-
getVersion— Berichte 2.2.6 (kompatibel mit modernenqz-tray.js); -
Zertifikat– akzeptiert das Client-Zertifikat und bestätigt; -
Drucker.find/Printers.getDefault– listet Systemdrucker auf überwin32print; -
drucken– Stellt Aufträge zum Drucken in die Warteschlange.
A sequentielle Warteschlange pro Drucker stellt sicher, dass sich Kopien nicht überlappen und lange Jobs den WebSocket nicht blockieren.
Unterstützte Druckmodi
1. Rohes ESC/POS
-
Text mit Kodierungsauswahl (CP1250–CP1258, IBM8xx, ISO-8859-x, GBK, Big5, Shift_JIS, UTF-8).
-
Kyrillisch:
CP1251+ESC tBefehl in der Quittung (Seitenzahl abhängig von der Firmware). -
Bilder: volle Unterstützung für
ESC *(Einzel/Doppel/Dreifach, einschließlich Legacy) undGS v 0. Quantisierung:luma,Alpha,Schwarz. -
Aktiviert über
Typ: „roh“mitOptionen.Sprache: „escpos“.
2. Pixeldruck (GDI).
-
Rasterdruck über Druckertreiber mit
ScaleContent,Ränder,Einheiten(Zoll oder mm). -
NEIN
Optionen.Spracheerforderlich – ideal für Logos, Barcodes, Etiketten. -
Aktiviert über
Typ: „Pixel“.
Sicherheitsüberlegungen
Wichtig: QZ Tray Lite ist für konzipiert vertrauenswürdige Kassenarbeitsplätze in lokalen Netzwerken. Das tut es bewusst nicht bestätigen:
-
Unterschriften anfordern (
Unterschrift,signAlgorithmus); -
Client-Zertifikate und Vertrauensketten;
-
Zeitstempel (±15-Minuten-Fenster im Original);
-
erlaubt.dat/blockiert.datZugangskontrolle.
Praktische Implikation: Jede im Browser auf diesem Gerät geöffnete Seite kann gedruckt werden. Dies ist ein akzeptabler Kompromiss für einen dedizierten POS-Computer. Jedoch, nicht Stellen Sie den Server bereit 0.0.0.0 oder verwenden Sie es auf Computern, auf denen Benutzer beliebige Websites durchsuchen.
Alle Aktionen werden protokolliert – jede Anfrage, jedes Byte, jede über geladene URL Format: „Bild“ ohne explizit Geschmack.
Installation und Schnellstart
Anforderungen: Windows 10/11, Python 3.12+
Git-Klon <Repository> cd qz-tray-lite Python -m pip install -r Anforderungen.txt
Laufen:
Python-Haupt.py
Der Server automatisch:
-
findet einen freien Port (wenn 8181 belegt ist, versucht es 8282 usw.);
-
Verwendet das Zertifikat des Original-QZ-Trays, sofern installiert, oder ermöglicht benutzerdefinierte Einstellungen
--keystore/--storepass; -
Startet aus Kompatibilitätsgründen sowohl WSS- als auch WS-Listener.
Hintergrundbetrieb: enthalten tools/service.ps1 installiert QZ Tray Lite als Windows-Dienst oder geplante Aufgabe (automatische Auswahl basierend auf der Umgebung). Unterstützt Protokollrotation, Gesundheitsüberwachung und Neustartrichtlinien.
Was NICHT implementiert ist
Wir haben bewusst auf Funktionen verzichtet, die in POS-Szenarien selten verwendet werden:
-
seriell,USB,versteckt,Datei,Vernetzung; -
Druckerdetails,startListening/getStatus; -
Pixeldruck von
pdfUndhtml; -
Bildkodierung: GS_L,Quantisierung: Dither,Drehung/Orientierung.
Aufrufe an diese geben eindeutige Fehler zurück, anstatt stillschweigend fehlzuschlagen.
Testen und Debuggen
Der tools/probe.py Dienstprogramm:
-
führt einen QZ-Tray-Handshake durch;
-
sendet Testdruckaufträge (Schachbrettlogo erkennt Bitverschiebungen, Rahmen erkennt Kantenbeschneidung);
-
zeigt, dass Signaturen nicht validiert werden – selbst ungültige Signaturen werden bestanden.
Python-Tools/Sonde.py --XP-58 drucken # Testbeleg Python-Tools/Sonde.py --XP-58 drucken --Pixel # Pixelmodus
65 Unit-Tests für ESC/POS-Bildkonverter (831 Zeilen) – erwartete Bytes manuell anhand der Epson-Spezifikation berechnet.
Für wen ist das?
-
Entwickler von POS-Systemen die auf das sperrige QZ-Tray verzichten und die Bereitstellung auf Hunderten von Workstations vereinfachen möchten.
-
Integratoren Sie sind es leid, für jedes Geschäft Zertifikate zu konfigurieren und Backends zu signieren.
-
Unternehmer Wer hat eine Seite mit
qz-tray.jsbenötigen aber einen stabilen, schnellen lokalen Druckserver für 58-mm-Thermobelege. -
Hobbyisten die Wert auf transparenten Code legen und genau sehen wollen, was an den Drucker gesendet wird (Protokolle zeigen jedes Byte und jeden Konvertierungsparameter).
Lizenz
MIT-Lizenz © 2026 IDNK Soft
Kostenlos für kommerzielle Nutzung, Änderung und Einbettung – behalten Sie einfach den Lizenztext und den Copyright-Hinweis bei.
Die Kompatibilität des QZ-Tray-Protokolls basiert auf dem Original qzind/tray Projekt (LGPL-2.1). QZ Tray Lite ist eine unabhängige Python-Implementierung des serverseitigen Protokolls.
Wählen QZ Tray Lite – die leichte Alternative, die genau das tut, was Ihr POS braucht, und nicht mehr.
Lokaler stiller Server für Belegdruck, kompatibel mit dem QZ-Tray-Protokoll, das dasselbe WebSocket-Protokoll verwendet
Leichter, lautloser Belegdruckserver für POS-Terminals. Vollständig QZ-Tray-kompatibel – keine Codeänderungen erforderlich. Druckt auf 58-mm-Thermodruckern mit Text, Bildern und kyrillischer Unterstützung. Keine Backend-Signierung, keine Zertifikate, keine Dialoge. Nur 90 KB, Python-basiert. Automatische Porterkennung.
Kommentare (0)
Ihre Bewertung der Rezension kann nicht gesendet werden
Kommentar melden
Meldung gesendet
Ihre Meldung kann nicht gesendet werden