mart1ver / oressource

Système simple, libre, léger et adaptable de quantification et de bilan écologique pour ressourcerie
Other
18 stars 17 forks source link

Mise en page des tickets de caisse footer de 20cm et marge à gauche #397

Open darnuria opened 4 years ago

darnuria commented 4 years ago

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.

darnuria commented 4 years ago

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

mart1ver commented 4 years ago

une librairie PHP qui gere les Epson POS : https://github.com/mike42/escpos-php ^^

darnuria commented 4 years ago

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

darnuria commented 4 years ago

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.

jean140950 commented 3 years ago

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()

darnuria commented 3 years ago

Wow c'est genial je prends du temps dans le weekend hesite pas a m'envoyer ton code ici je te mettrais en auteur