Impression à partir de Firefox
Aujourd'hui, j'ai été confronté à un problème :
Je dois développer pour un client un site web générant des codes barres et lui donner la possibilité de les imprimer facilement (c'est à dire en un clic) avec Firefox via son imprimante à étiquettes répondant au doux nom de « TSC_TTP-245 » .
Pour cela, j'ai généré des images de codes barres avec PHP, et affiché l'image à imprimer dans une nouvelle page vide sans marges. Mais le problème c'est comment imprimer sans devoir faire Fichier > Imprimer , puis redéfinir toutes les options d'impression, et ceci à chaque fois ? De plus, des en-têtes et bas de pages s'incrustaient dans l'impression, ce qui est hors de question.
Après de fastidieuses recherches, voici la solution que j'ai trouvée :
- aller dans la barre d'adresses de Firefox
- taper about:config pour aller dans les préférences avancées
- puis on modifie les valeurs :
Je définis l'imprimante par défaut :
print.print_printer -> TSC TTP-245
On enlève les notes d'en-tête et de bas de page :
print.printer_TSC_TTP-245.print_footerleft ->
print.printer_TSC_TTP-245.print_footerright ->
print.printer_TSC_TTP-245.print_headercenter ->
print.printer_TSC_TTP-245.print_headerleft ->
print.printer_TSC_TTP-245.print_headerright ->
On enlève les marges
print.printer_TSC_TTP-245.print_margin_left -> 0
print.printer_TSC_TTP-245.print_margin_right -> 0
print.printer_TSC_TTP-245.print_margin_top -> 0
On définit la taille de l'impression (pour moi je voulais imprimer exactement 98 x 33 mm)
print.printer_TSC_TTP-245.print_paper_height -> 33,00
print.printer_TSC_TTP-245.print_paper_size -> 0
print.printer_TSC_TTP-245.print_paper_size_type -> 0
print.printer_TSC_TTP-245.print_paper_size_unit -> 0
print.printer_TSC_TTP-245.print_paper_width -> 98,00
Il ne faut pas que l'image se redimensionne toute seule, le site doit y faire attention. On met donc :
Sachant que TSC_TTP-245 est définie par défaut, je en veux pas que la boite de dialogue d'impression s'affiche à chaque fois : qu'elle imprime directement sans confirmation ! Pour cela, on ajoute une nouvelle valeur booléenne à la liste :
En enfin, voici la page d'impression :
- <html>
- <head>
- <title>Print page</title>
- <style type="text/css">
- body
- {
- padding: 0;
- margin: 0;
- }
- </style>
- <script language="Javascript">
- function print_page()
- {
- window.print();
- self.close();
- }
- </script>
- </head>
- <body onLoad="print_page();">
- <img src="img.php?type=EAN13&code=9782218048690" />
- </body>
- </html>
Et voila, ça fonctionne parfaitement ! Dès qu'on appellera la page "print.php" avec target=_blank , celle-ci s'ouvrira dans une nouvelle fenêtre, imprimera le bon code barre et se refermera.
On peut dire que Firefox n'a pas simplifié la tâche en ne documentant absolument pas la chose (surtout la valeur print_paper_size qui m'a fait perdre un temps fou)