Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Question Cups backend

5 réponses
Avatar
S
Bonjour,

Voilà : je travaille avec Gnome sous OpenSuse 10.3 et il n'y a pas
d'imprimante PDF installée par défaut accessible depuis, par exemple,
Firefox. Je cherche un peu et je trouve un backend bash sur le site de
Novell qui permet, grâce à GS et ps2pdf, de fabriquer des PDF avec Cups.
Cela fonctionne très bien, à ceci près que les fichiers PDF sont
enregistrés dans un répertoire fixe (l'URI du backend) avec un nom
composé par le script sans possibilité pour l'utilisateur de choisir nom
et répertoire de destination, ce qui est ennuyeux parce qu'il faut
déplacer et renommer les fichiers «à la main».
J'ai donc tenté de modifier le script du backend pour que la variable
FILENAME (path + nom fichier) soit obtenue interactivement de
l'utilisateur avec «zenity --file-selection», mais zenity ne fonctionne
pas depuis le backend, pas plus d'ailleurs que différents essais que j'ai
réalisés comme simplement déplacer le fichier pdf crée vers un autre
répertoire quelconque avec la commande mv (mv $FILENAME /test/test.pdf) :
le pdf est correctement créé dans le dossier URI mais ne bouge pas, sans
qu'aucune erreur n'apparaisse dans les log Cups ou messages.

Est-ce que quelqu'un parmi vous aurait une idée pour réaliser cette chose
qui, a priori, semble simple ????

SW

5 réponses

Avatar
CoolFox31
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Sébastien Weber wrote:
Bonjour,

Voilà : je travaille avec Gnome sous OpenSuse 10.3 et il n'y a pas
d'imprimante PDF installée par défaut accessible depuis, par exemple,
Firefox. Je cherche un peu et je trouve un backend bash sur le site de
Novell qui permet, grâce à GS et ps2pdf, de fabriquer des PDF avec Cups.
Cela fonctionne trÃ?s bien, Ã ceci prÃ?s que les fichiers PDF sont
enregistrés dans un répertoire fixe (l'URI du backend) avec un nom
composé par le script sans possibilité pour l'utilisateur de choisir nom
et répertoire de destination, ce qui est ennuyeux parce qu'il faut
déplacer et renommer les fichiers «à la main».
J'ai donc tenté de modifier le script du backend pour que la variable
FILENAME (path + nom fichier) soit obtenue interactivement de
l'utilisateur avec «zenity --file-selection», mais zenity ne fonctionne
pas depuis le backend, pas plus d'ailleurs que différents essais que j'ai
réalisés comme simplement déplacer le fichier pdf crée vers un autre
répertoire quelconque avec la commande mv (mv $FILENAME /test/test.pdf) :
le pdf est correctement créé dans le dossier URI mais ne bouge pas, sans
qu'aucune erreur n'apparaisse dans les log Cups ou messages.

Est-ce que quelqu'un parmi vous aurait une idée pour réaliser cette chose
qui, a priori, semble simple ????

SW
Bonjour !


Une idée pourrait être de faire un script permettant de déplacer les
fichiers crées dans le répertoire de l'utilisateur lancant le script
(sous forme de tache cron par exemple)

Cela ne résoud pas le pbm mais c'est une idée comme une autre....

Cordialement,

- --
Cle GnuPG disponible sur http://pgp.mit.edu (0x7D9DBDE7)

Un jour, Dieu a dit :
"il faut partager : les riches auront de la nourriture, les pauvres de
l'appétit!"

Coluche
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)

iD8DBQFHE296spCmGn2dvecRCm8qAKCLP793DTQDxaXc4FyRe1Q0AqSd7ACffv0H
0cEWxJu8Vo/5H1f3ONV2BVY =MdU1
-----END PGP SIGNATURE-----

Avatar
S
Merci beaucoup pour votre réponse.
J'ai pensé à cette solution, mais les méthodes possibles présentent
toutes des inconvénients :
- avec une boucle while True sous python, par exemple, la consommation de
ressources CPU est rédhibitoire.
- avec cron, le déclenchement est forcément retardé, à moins d'imprimer
quelques secondes avant que le démon n'accomplisse son petit tour.
En C# il existe une classe intéressante qui permet de surveiller les
modifications sur un répertoire. Inclue dans un démon, peut-être que...
En tout cas, merci.
SW.

Le Mon, 15 Oct 2007 15:47:40 +0200, CoolFox31 a écrit :

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Sébastien Weber wrote:
Bonjour,

Voilà : je travaille avec Gnome sous OpenSuse 10.3 et il n'y a pas
d'imprimante PDF installée par défaut accessible depuis, par exemple,
Firefox. Je cherche un peu et je trouve un backend bash sur le site de
Novell qui permet, grâce à GS et ps2pdf, de fabriquer des PDF avec
Cups. Cela fonctionne trÃ?s bien, Ã ceci prÃ?s que les fichiers PDF
sont enregistrés dans un répertoire fixe (l'URI du backend) avec un
nom composé par le script sans possibilité pour l'utilisateur de
choisir nom et répertoire de destination, ce qui est ennuyeux parce
qu'il faut déplacer et renommer les fichiers «à la main». J'ai donc
tenté de modifier le script du backend pour que la variable FILENAME
(path + nom fichier) soit obtenue interactivement de l'utilisateur avec
«zenity --file-selection», mais zenity ne fonctionne pas depuis le
backend, pas plus d'ailleurs que différents essais que j'ai réalisés
comme simplement déplacer le fichier pdf crée vers un autre
répertoire quelconque avec la commande mv (mv $FILENAME
/test/test.pdf) : le pdf est correctement créé dans le dossier URI
mais ne bouge pas, sans qu'aucune erreur n'apparaisse dans les log Cups
ou messages.

Est-ce que quelqu'un parmi vous aurait une idée pour réaliser cette
chose qui, a priori, semble simple ????

SW
Bonjour !


Une idée pourrait être de faire un script permettant de déplacer les
fichiers crées dans le répertoire de l'utilisateur lancant le script
(sous forme de tache cron par exemple)

Cela ne résoud pas le pbm mais c'est une idée comme une autre....

Cordialement,

- --
Cle GnuPG disponible sur http://pgp.mit.edu (0x7D9DBDE7)

Un jour, Dieu a dit :
"il faut partager : les riches auront de la nourriture, les pauvres de
l'appétit!"

Coluche
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)

iD8DBQFHE296spCmGn2dvecRCm8qAKCLP793DTQDxaXc4FyRe1Q0AqSd7ACffv0H
0cEWxJu8Vo/5H1f3ONV2BVY > =MdU1
-----END PGP SIGNATURE-----



Avatar
S
Le Mon, 15 Oct 2007 16:46:56 +0200, CoolFox31 a écrit :

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Sébastien Weber wrote:
Merci beaucoup pour votre réponse. J'ai pensé à cette solution, mais
les méthodes possibles présentent toutes des inconvénients :
- avec une boucle while True sous python, par exemple, la consommation
de ressources CPU est rédhibitoire.
- avec cron, le déclenchement est forcément retardé, à moins
d'imprimer quelques secondes avant que le démon n'accomplisse son
petit tour. En C# il existe une classe intéressante qui permet de
surveiller les modifications sur un répertoire. Inclue dans un démon,
peut-être que... En tout cas, merci.
SW.

Le Mon, 15 Oct 2007 15:47:40 +0200, CoolFox31 a écrit :

Sébastien Weber wrote:
Bonjour,

VoilÃ? : je travaille avec Gnome sous OpenSuse 10.3 et il n'y a pas
d'imprimante PDF install�©e par d�©faut accessible depuis, par
exemple, Firefox. Je cherche un peu et je trouve un backend bash sur
le site de Novell qui permet, gr�¢ce � GS et ps2pdf, de
fabriquer des PDF avec Cups. Cela fonctionne trÃ??s bien, Ã? ceci
pr�?s que les fichiers PDF sont enregistr�©s dans un
r�©pertoire fixe (l'URI du backend) avec un nom compos�© par le
script sans possibilit�© pour l'utilisateur de choisir nom et
r�©pertoire de destination, ce qui est ennuyeux parce qu'il faut
dÃ?©placer et renommer les fichiers ëÃ? la mainû. J'ai
donc





tent�© de modifier le script du backend pour que la variable
FILENAME (path + nom fichier) soit obtenue interactivement de
l'utilisateur avec ëzenity --file-selectionû, mais zenity ne
fonctionne pas depuis le backend, pas plus d'ailleurs que
diff�©rents essais que j'ai r�©alis�©s comme simplement
d�©placer le fichier pdf cr�©e vers un autre r�©pertoire
quelconque avec la commande mv (mv $FILENAME /test/test.pdf) : le
pdf est correctement cr�©�© dans le dossier URI mais ne bouge
pas, sans qu'aucune erreur n'apparaisse dans les log Cups ou
messages.

Est-ce que quelqu'un parmi vous aurait une id�©e pour r�©aliser
cette chose qui, a priori, semble simple ????

SW
Bonjour !




Une idée pourrait être de faire un script permettant de déplacer les
fichiers crées dans le répertoire de l'utilisateur lancant le script
(sous forme de tache cron par exemple)

Cela ne résoud pas le pbm mais c'est une idée comme une autre....

Cordialement,

Vous est-il possible de modifier le script afin de sauvegarder toujours

dans le même répertoire (en spécifiant le ~ afin de le placer dans le
home de l'utilisateur)?
Hélas non, car Cups tourne avec le compte d'impression lp qui n'a pas de

droits sur les répertoires personnels (et mieux vaut ne pas lui en
donner, je suppose). Le répertoire utilisé par le backend est en écriture
universelle (drwxwrxwrx /export/share/pdf/).
Je sais bien que votre objectif est d'avoir un menu permettant de
choisir le path (peut-être voir du coté de la fonction select de bash)
mais ca permettrait déjà d'avancer sur la compréhension du/des
mécanisme(s) mis en oeuvre.

Cordialement,
- --
Cle GnuPG disponible sur http://pgp.mit.edu (0x7D9DBDE7)

Un jour, Dieu a dit :
"il faut partager : les riches auront de la nourriture, les pauvres de
l'appétit!"

Coluche
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)

iD8DBQFHE31dspCmGn2dvecRCmGAAJ9D+C4Vdj+vW/ENDcoaP+HY6KnrhQCfVkPd
L8UP4daSFWayOAnMiW4GHDQ > =1MHu
-----END PGP SIGNATURE-----






Avatar
S
En fait, l'excellent HowTo dont vous me donnez le lien est celui dont je
me sers à la base pour créer les pdf et il est l'objet de mon post.
Mais j'ai trouvé une solution, un peu bancale mais assez fonctionnelle.
En utilisant la librairie "gamin", qui est une interface pour les
fonctions inotify du kernel disponible pour plusieurs langages et qui
permet, entre autres, la surveillance d'un répertoire, je peux lancer au
démarrage de la session un script d'arrière-plan python qui propose
d'enregistrer le fichier pdf créé par Cups dans le répertoire fixe dans
le répertoire et sous le nom que l'utilisateur choisit via une boite de
dialogue Zenity.
L'intérêt de gamin, c'est que sa consommation de ressources est minime.
Pour les curieux :

#================================================================ #!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import sys
import shutil
import time
import gamin
import commands

def formatage(des):
name, ext = os.path.splitext(des)
if not ext == '.pdf':
des = name + '.pdf'
return des
def deletesrc(src):
try:
os.remove(src)
except:
commands.getstatusoutput("zenity --warning --text "Erreur lors du traitement du PDF.nArrêt du script."")
sys.exit()

def testpath(path):
print path
if not os.access(path, os.W_OK):
print "Interdit d’écrire dans", path
return 0
else:return 1

def deplacer(src, des):
try:
shutil.move(src, des)
except:
commands.getstatusoutput("zenity --warning --text "Erreur lors du traitement du PDF.nArrêt du script."")
sys.exit()

def callback(obj, event):
if event != 1:return
if os.path.isdir(obj):return
fullname = os.path.join(reppdf, obj)
if os.path.isfile(fullname):
name, ext = os.path.splitext(obj)
if not ext.lower() == ".pdf":return
st, out = commands.getstatusoutput("zenity --file-selection --
title="Nom et emplacement du fichier PDF"")
#Si il y a eu choix:
if not st:
out = out.split('n')
if len(out) > 1:
out = out[1]
if not testpath(os.path.dirname(out)):
commands.getstatusoutput("zenity --warning --text "Vous n’avez pas la permission d’écrire dans ce dossier.nReccomencez
l’impression et choisissez un dossier valide."")
deletesrc(fullname)
else:
deplacer(fullname, formatage(out))
else:
deletesrc(fullname)
print "Callback sur %s : %s" % (obj, event)

reppdf = '/export/share/pdf' #Répertoire URI pdf-writer à surveiller
surveillance = gamin.WatchMonitor() # Instance de monitoring
surveillance.watch_directory(reppdf, callback) #Définition de l'objet
monitoré

try:
while 1:
ret = surveillance.event_pending() #Interception des événements
if ret == 1: #Action sur un événement "Changed"
ret = surveillance.handle_one_event()
time.sleep(0.5)
except KeyboardInterrupt:
surveillance.stop_watch(reppdf)
del surveillance
sys.exit()

#=======================================================
Merci à tous,

SW.

Le Mon, 15 Oct 2007 17:33:38 +0200, CoolFox31 a écrit :

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Sébastien Weber wrote:

Le Mon, 15 Oct 2007 16:46:56 +0200, CoolFox31 a écrit :

Sébastien Weber wrote:
Merci beaucoup pour votre r�©ponse. J'ai pens�© � cette
solution, mais les m�©thodes possibles pr�©sentent toutes des
inconv�©nients : - avec une boucle while True sous python, par
exemple, la consommation de ressources CPU est r�©dhibitoire. -
avec cron, le d�©clenchement est forc�©ment retard�©, �
moins d'imprimer quelques secondes avant que le d�©mon
n'accomplisse son petit tour. En C# il existe une classe
int�©ressante qui permet de surveiller les modifications sur un
r�©pertoire. Inclue dans un d�©mon, peut-�ªtre que... En tout
cas, merci. SW.

Le Mon, 15 Oct 2007 15:47:40 +0200, CoolFox31 a Ã?©crità :

S�©bastien Weber wrote:
Bonjour,

VoilÃ?? : je travaille avec Gnome sous OpenSuse 10.3 et il n'y a
pas d'imprimante PDF install�?ée par d�?éfaut
accessible








depuis, par exemple, Firefox. Je cherche un peu et je trouve un
backend bash sur le site de Novell qui permet, gr�?âce �?
GS et ps2pdf, de fabriquer des PDF avec Cups. Cela fonctionne
trÃ???s bien, Ã?? ceci prÃ???s que les fichiers PDF sont
enregistr�?és dans un r�?épertoire fixe (l'URI du
backend) avec un nom compos�?é par le script sans
possibilit�?é pour l'utilisateur de choisir nom et
r�?épertoire de destination, ce qui est ennuyeux parce qu'il
faut d�?éplacer et renommer les fichiers �ë�? la
main�û. J'ai
donc





tent�?é de modifier le script du backend pour que la
variable








FILENAME (path + nom fichier) soit obtenue interactivement de
l'utilisateur avec �ëzenity --file-selection�û,
mais








zenity ne fonctionne pas depuis le backend, pas plus d'ailleurs
que diff�?érents essais que j'ai r�?éalis�?és
comme








simplement d�?éplacer le fichier pdf cr�?ée vers un
autre








r�?épertoire quelconque avec la commande mv (mv $FILENAME
/test/test.pdf) : le pdf est correctement cr�?é�?é dans
le dossier URI mais ne bouge pas, sans qu'aucune erreur
n'apparaisse dans les log Cups ou messages.

Est-ce que quelqu'un parmi vous aurait une id�?ée pour
r�?éaliser cette chose qui, a priori, semble simple ????

SW
Bonjour !




Une id�©e pourrait �ªtre de faire un script permettant de
d�©placer les fichiers cr�©es dans le r�©pertoire de
l'utilisateur lancant le script (sous forme de tache cron par
exemple)

Cela ne r�©soud pas le pbm mais c'est une id�©e comme une
autre....

Cordialement,

Vous est-il possible de modifier le script afin de sauvegarder toujours



dans le même répertoire (en spécifiant le ~ afin de le placer dans
le home de l'utilisateur)?
Hélas non, car Cups tourne avec le compte d'impression lp qui n'a pas
de droits sur les répertoires personnels (et mieux vaut ne pas lui en
donner, je suppose). Le répertoire utilisé par le backend est en
écriture universelle (drwxwrxwrx /export/share/pdf/).
Je sais bien que votre objectif est d'avoir un menu permettant de

choisir le path (peut-être voir du coté de la fonction select de
bash) mais ca permettrait déjà d'avancer sur la compréhension du/des
mécanisme(s) mis en oeuvre.

Cordialement,


Juste pour infos:
http://en.opensuse.org/Printing_to_PDF_HOWTO

Ca ne résoud pas votre pbm?

Cordialement,
- --
Cle GnuPG disponible sur http://pgp.mit.edu (0x7D9DBDE7)

Un jour, Dieu a dit :
"il faut partager : les riches auront de la nourriture, les pauvres de
l'appétit!"

Coluche
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)

iD8DBQFHE4hRspCmGn2dvecRCsKdAKCe/Avq1KBqsKHC+5Qu5gF6KCBN0wCfW6bi
mjGaBnUSpqmmXEEDmX6ucbg > ¬a9
-----END PGP SIGNATURE-----









Avatar
Cumbalero
Bonjour,

Voilà : je travaille avec Gnome sous OpenSuse 10.3 et il n'y a pas
d'imprimante PDF installée par défaut


<Troll>
Sous Kubuntu j'en ai une
</Troll>

A+
JF