mart1ver/oressource

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 ^^

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