Question
Comment appeler lpr en Python?
Ce n'est pas dans le sys -module qui est surprenant.
Je souhaite utiliser le lpr comme suit, avec pseudo-code
10*i for i in range(77):
lpr --pages(i,i+1) file.pdf
La solution
Tout d’abord, je ne comprends pas votre pseudo-code. (Que signifie 10 * i pour i dans la plage (77):
dans ce cas?)
En règle générale, vous utilisez sous-processus.Popen
pour exécuter des commandes externes. La recette ActiveState 511505 montre un exemple spécifique avec lpr
. En gros, vous pouvez appeler lpr
comme ceci:
subprocess.Popen(['lpr', 'some_filename'])
Toutefois: en fonction de votre version de lpr
, il peut ne pas être possible de sélectionner un sous-ensemble de toutes les pages, ou cette fonctionnalité peut être disponible uniquement pour par exemple fichiers dvi .
Modifier: Comme vous semblez vouloir imprimer des pages sélectionnées de fichiers PDF, consultez le Boîte à outils PDF . Ce logiciel semble fournir une fonctionnalité de fractionnement. Assurez-vous également que l'impression directe de fichiers PDF est prise en charge. Vous devrez peut-être convertir l’entrée en postscript d’abord (par exemple, en utilisant pdf2ps
). Bien entendu, vous pouvez également automatiser ces tâches à l'aide de subprocess.Popen
.
Autres conseils
Appelez-le simplement à partir de la ligne de commande:
import commands
for i in range(77):
# I'm making no assumptions about lpr command syntax here.
cmd = "lpr --pages(%s,%s) file.pdf" % (2*i, 2*i+1)
commands.getoutput(cmd)
Quelque chose comme ça.
Je ne l'ai pas essayé, mais pycups semble être une liaison en python pour des tasses.