Problème impression python CANON SELPHY CP1300

Bonjour, je vais peut-ètre déterrer un vieux sujet mais bon…

Mon problème: impossible d’imprimer une photos à partir d’un code python.

Mes vérifications:
- Imprimante bien reconnue dans CUPS
- Ouverture et impression de ma photo réussie via chromium
- je peux également imprimer à partir de text éditor

J’ai essayé de l’imprimer avec un bout de code le plus simple du monde:

import os
os.system("lp test.jpg")

L’interpréteur me donne ce message: request id is Canon_SELPHY_CP1300_USB_-25 (1 file(s))
Donc je présume que l’image à bien été transférée mais mon imprimante me dit: Impossible de lire les données.

Donc en résumé j’arrive à imprimer via Chromium mais pas via une ligne de code…

Quelqu’un aurait une solution svp?

Bon finalement, j’ai trouvé une solution…
Je converti mon image en PNG avec PIL et là ça marche…

import os
from PIL import Image

im1 = Image.open('test.jpg')
im1.save('test.png')

os.system('lp test.png')

Ma photo d’origine a justement été créé par PIL en jpg, c’est pour cela que je ne comprend pas pourquoi il ne voulait pas l’imprimer.

Je n’ai pas d’explication, mais j’ai le même problème avec un projet. lors de la création du Jpeg avec PIL, mon code me retourne un format invalide quand je désire l’utiliser.

Il semble, d’après mon analyse et le fait que tu rencontre le même problème, que le créateur de Jpeg de PIL ne soit pas conforme. Étrange quand même.

C’est même encore pire que ça, lorsque je demarre le rpi, que j’essaye d’imprimer par mon bout de code, il me sort une photo(png) entièrement blanche… puis je test l’impression avec chromium, ça marche, et lorsque je re test avec mon bout de code la photo s’imprime.
De plus je n’arrive pas à changer les paramètres d’impression (lp -o fit-to-page test.png) du coup ma photo ne prend pas tout l’espace de la photo…
C’est très déconcertant.
Personne n’a une idée du problème???

Mes tests d’impression sont avec une Brother QL-700.

J’ai eu moi aussi de la difficulté, c’est comme si l’imprimante disparait et réapparait après une demande.

Je m’explique…
J’ai codé un app Python pour gérer mes étiquettes, lorsque le RPi boot et je lance la première impression, j’ai également un « vide ». Si je relance, la j’ai le résultat attendu. Mon code génère une image et l’envoie à l’imprimante via le pilote et l’outil Python dédié.

Si je laisse le RPi allumé (ce qui est le cas, car il me fait aussi office de Dashbord), le device n’est plus utilisable. Les demandes sont mis en attente (selon le retour de code). Je dois power off, et power on l’imprimante, les demandes en attente ne sont pas traité (ignoré) et je peux dès lors, recommencer à l’utiliser. ENcore une fois, la première demande sortira un « vide ».

Mon hypothèse…
J’ai pas vraiment d’idée sur, disont je croit que la gestion d’imprimante n’est pas super bonne sous Linux, ou du moins, avec Raspbian OS (j’utilise la version Lite). Il faut idéalement avoir les pilotes (J’ai le pilote conçu spécialement pour Raspberry Pi depuis le site de Brother) et que ce matériel ne soit pas trop capricieux.

Dans mes tests, avant de commencer ce projet, j’ai également tenter de passer directement sur le Printer pour ajouter le texte et gérer le format de sortie, mais tout les paramètres semble ignoré, et dans mon cas, seul les images « full page » sont correctement imprimé, alors je crois que tout le module d’impression Linux/Raspbian est problématique. Car sous un PC Linux, j’ai aucun de ces problèmes et j’arrive a travailler directement sur l’imprimante sans devoir créer des images.

Conclusion…
Alors ton problème n’est pas unique à toi et semble de provenir de la gestion de l’imprimante par le OS. Chrome utilise un moyen différent pour « parler » avec l’imprimante, je ne sais pas comment, mais même sous Windows, j’ai remarqué qu’il ne travail pas comme les autres. Cela vien du module qui prépare le document, car si ont observe sous Windows, la majorité des applications vont passer via le dialoguqe de Windows pour imprimer, parfois une autre interface est présente avant d’aboutir quand même sur celle de Windows. Mais Chrome lui à ça propre interface et semble ne pas utiliser la méthode standard (sous Windows) pour le faire, et offre des options , que dans la version dialogue par défaut n’offre pas. Alors je crois fortement que Chrome utilise sont propre moyen pour imprimer, et que dans certains cas, il va ce basé sous les paramètres de Windows si il ne peut pas tout prendre en charge.

Alors si ont prend cette observation, Chrome n’est pas le moyen le plus fiable de valider si tout est « OK » sur la méthode d’impression, peut importe le OS. Faudrait tester avec une application plus « basic » pour utiliser le même « chemin » que le script Python.

Le document « vide » créé doit être un moyen au système de communiquer et d’initialiser l’imprimante, et pour une raison obscure « Purge » la demande et envoie du vide. Une fois initialisé, les documents passes.