Qu’est-ce que QZ Tray Lite ?

Plateau QZ Lite est un serveur d'impression local qui émule entièrement le protocole QZ Tray mais sans son infrastructure massive. Il permet d'imprimer des reçus sur des imprimantes thermiques directement depuis votre navigateur en utilisant qz-tray.js - et votre code frontend nécessite zéro changement.

Si vous avez déjà configuré le QZ Tray d'origine pour une impression silencieuse, vous connaissez la difficulté : générer des paires de clés, distribuer des certificats, configurer un point de terminaison de signature back-end, collecter {appel, paramètres, horodatage}, calculez l'hexagone SHA-256, signez-le avec la clé privée RSA, renvoyez base64 au navigateur et priez. Toute erreur — et au lieu d'un reçu, votre utilisateur voit un message « Autoriser ? » dialogue.

QZ Tray Lite supprime tout cela.

  • Le signature et signeAlgorithme les champs sont ignoré. Votre client envoie des signatures comme d'habitude et reçoit des réponses positives : il ne sait jamais qu'il s'adresse à une implémentation différente.

  • Aucun point de terminaison de signature backend requis. La chaîne de confiance se réduit à seulement deux parties : navigateur ↔ processus local.

  • Réutilise les certificats existants, par exemple à partir d'un QZ Tray installé (Windows fait déjà confiance CN = hôte local), ou vous pouvez fournir votre propre PKCS#12.


Avantages clés

Fonctionnalité Plateau QZ original Plateau QZ Lite
Taille d'installation 164 Mo, 232 fichiers (y compris JRE) 90 Ko, 15 .py fichiers
Durée d'exécution Java intégré Python 3.12+ (déjà sur votre système)
Exigences d'impression silencieuse Certificat + backend de signature + configuration des boîtes de dialogue Rien de plus
Modifications du front-end Aucunqz-tray.js fonctionne tel quel
Lisibilité du code 40 Mo de bytecode 2 600 lignes avec commentaires
Basculement automatique des ports Oui Oui

Comment ça marche

Le navigateur se connecte via WebSocket à localhost (wss://8181 ou ws://8182). QZ Tray Lite répond aux mêmes appels que l'original :

  • obtenir la version — rapports 2.2.6 (compatibles avec les qz-tray.js);

  • certificat — accepte le certificat du client et confirme ;

  • imprimantes.find / imprimantes.getDefault — énumère les imprimantes système via win32print;

  • imprimer - met les travaux en file d'attente pour l'impression.

A file d'attente séquentielle par imprimante garantit que les copies ne s'entrelacent pas et que les travaux longs ne bloquent pas le WebSocket.


Modes d'impression pris en charge

1. ESC/POS brut

  • Texte avec sélection d'encodage (CP1250–CP1258, IBM8xx, ISO-8859-x, GBK, Big5, Shift_JIS, UTF-8).

  • Cyrillique: CP1251 + ESCt commande dans le reçu (le numéro de page dépend du firmware).

  • Images : prise en charge totale de ÉCHAP * (simple/double/triple, y compris Legacy) et GSv0. Quantification: luma, alpha, noir.

  • Activé via tapez : "brut" avec options.langue : "escpos".

2. Impression de pixels (GDI)

  • Impression raster via le pilote d'imprimante avec échelleContenu, marges, unités (pouces ou mm).

  • Non options.langue requis — idéal pour les logos, les codes-barres et les étiquettes.

  • Activé via tapez : "pixels".


Considérations de sécurité

Important: QZ Tray Lite est conçu pour postes de travail de caisse fiables dans les réseaux locaux. C'est ce qu'il fait délibérément pas valider:

  • demander des signatures (signature, signeAlgorithme);

  • certificats clients et chaînes de confiance ;

  • horodatages (fenêtre de ± 15 minutes dans l'original) ;

  • autorisé.dat / bloqué.dat contrôle d'accès.

Implication pratique : n'importe quelle page ouverte dans le navigateur sur cette machine peut être imprimée. Il s'agit d'un compromis acceptable pour un ordinateur de point de vente dédié. Cependant, ne pas exposer le serveur sur 0.0.0.0 ou utilisez-le sur des machines sur lesquelles les utilisateurs parcourent des sites Web arbitraires.

Toutes les actions sont enregistrées - chaque requête, chaque octet, chaque URL chargée via format : "image" sans explicite saveur.


Installation et démarrage rapide

Exigences: Windows 10/11, Python 3.12+

PowerShell
git clone <dépôt>
cd qz-tray-lite
Python -m pip installer -r exigences.SMS

Courir:

PowerShell
python principal.py

Le serveur automatiquement :

  • trouve un port libre (si 8181 est occupé, essaie 8282, etc.) ;

  • utilise le certificat du QZ Tray d'origine s'il est installé, ou permet une personnalisation --keystore / --storepass;

  • démarre les écouteurs WSS et WS pour des raisons de compatibilité.

Opération en arrière-plan : compris outils/service.ps1 installe QZ Tray Lite en tant que service Windows ou tâche planifiée (sélectionnée automatiquement en fonction de l'environnement). Prend en charge la rotation des journaux, la surveillance de l’état et les politiques de redémarrage.


Ce qui n'est PAS implémenté

Nous avons intentionnellement omis des fonctionnalités rarement utilisées dans les scénarios de point de vente :

  • en série, USB, caché, déposer, mise en réseau;

  • imprimantes.détail, démarrerl'écoute / obtenir le statut;

  • impression de pixels à partir de pdf et HTML;

  • encodage d'image : GS_L, quantification : tramage, rotation / orientation.

Les appels à ceux-ci renvoient des erreurs claires plutôt que d’échouer silencieusement.


Test et débogage

Le outils/probe.py utilitaire:

  • effectue une poignée de main QZ Tray ;

  • envoie des travaux d'impression de test (le logo en damier détecte les décalages de bits, le cadre détecte l'écrêtage des bords) ;

  • démontre que les signatures ne sont pas validées — même les signatures invalides sont acceptées.

PowerShell
outils/sonde python.py --imprimer XP-58          # reçu de test
outils/sonde python.py --imprimer XP-58 --pixels  # mode pixel

65 tests unitaires pour le convertisseur d'image ESC/POS (831 lignes) — octets attendus calculés manuellement par rapport aux spécifications Epson.


À qui est-ce destiné ?

  • Développeurs de systèmes de point de vente qui souhaitent éliminer les QZ Tray encombrants et simplifier le déploiement sur des centaines de postes de travail.

  • Intégrateurs fatigué de configurer des certificats et de signer des backends pour chaque magasin.

  • Propriétaires d'entreprise qui ont un site avec qz-tray.js mais vous avez besoin d'un serveur d'impression local stable et rapide pour les reçus thermiques de 58 mm.

  • Amateurs qui apprécient le code transparent et souhaitent voir exactement ce qui est envoyé à l'imprimante (les journaux affichent chaque octet et paramètre de conversion).


Licence

Licence MIT © 2026 IDNK Doux

Gratuit pour un usage commercial, une modification ou une intégration : conservez simplement le texte de la licence et la mention de droit d'auteur.

La compatibilité du protocole QZ Tray est basée sur l'original qzind/plateau projet (LGPL-2.1). QZ Tray Lite est une implémentation Python indépendante du protocole côté serveur.


Choisir Plateau QZ Lite - l'alternative légère qui fait exactement ce dont votre point de vente a besoin, et rien de plus.

  • Marque
  • En stock
    100 Produits

Serveur local d'impression silencieuse de tickets, compatible avec le protocole QZ Tray, utilisant le même protocole WebSocket

Prix habituel : 10 € (Économisez 50%)
Prix : 5 €

Serveur d'impression de reçus léger et silencieux pour terminaux POS. Entièrement compatible avec QZ Tray – aucune modification de code n’est nécessaire. Imprime sur des imprimantes thermiques 58 mm avec texte, images et support cyrillique. Pas de signature backend, pas de certificats, pas de boîtes de dialogue. Seulement 90 Ko, alimenté par Python. Détection automatique des ports.

Partager

Commentaires (0)

Aucun avis n'a été publié pour le moment.
Chargement...
Retour en haut