Mise en page des tickets de caisse footer de 20cm et marge à gauche
darnuria opened this issue · 6 comments
Sur les impressions termiques avec une imprimante EPSON TM20 on a des soucis de mise en page de l'impression lorsque l'ont imprime une page depuis l'interface window.print()
du navigateur doc spec WHATWG.
Les problèmes principaux sont: Une marge gauche (left margin) trop importante et non réglable par le CSS et une marge basse (footer) de 20cm environ.
Piste de solution: Quelques essai avec PDFmake http://pdfmake.org/playground.html permettent de dépasser ces soucis mais il faut jouer avec la configuration du pdf pour obtenir un résultat net.
Doc de pdfMake: https://pdfmake.github.io/docs/
Pistes: voir comment d'autres logiciels font ou comment firefox génére une impression/pdf depuis la page web
une librairie PHP qui gere les Epson POS : https://github.com/mike42/escpos-php ^^
Je suis tombé la dessus: https://parzibyte.me/blog/en/2019/10/10/print-receipt-thermal-printer-javascript-css-html/ à explorer.
Exemple a etudier: https://parzibyte.github.io/print-receipt-thermal-printer/index.html
Par rapport a faire en depuis le navigateur ou le serveur, pas vraiment d'avis. Limite si on peut utiliser un mini-programme libre tiers qu'on appel depuis php/js a qui on envoie en Json et evite de trop coder c'est bien car c'est pas simple a maintenir comme code spécifique.
Autre possibilité application tierce sur le Poste de caisse connecté a l'imprimante qui communique avec le navigateur: https://github.com/neodynamic/JSPrintManager
Explorer aussi si on peut utiliser https://github.com/Klemen1337/node-thermal-printer en mode juste navigateur et parler a l'imprimante avec un websocket.
En gardant la solution initiale avec window.print(), j'ai réussi à règler la taille du ticket à imprimer 👍
Dans la fonction impressionTicket
(utils.js
), ajouter dans <style>
👍
@page
size: 8cm 15cm
Ceci règle la largeur du ticket (ici à 80mm)
Pour les marges sous Chromium, il faut faire les règlages dans les paramèttres d'impression (Chromium les conserve)
En supprimant l'impression des header et footer, on arrive à imprimer un ticket à peu près correct
Par contre je n'arrive pas à règler la police des caractères
A plus long terme, pour avoir quelque chose qui s'adapte à toutes les imprimantes , je suis d'accord qu'il faut trouver une autre solution que window.print()
Wow c'est genial je prends du temps dans le weekend hesite pas a m'envoyer ton code ici je te mettrais en auteur