Pregunta
¿Cómo puedes llamar a lpr en Python?
No está en el módulo sys, lo que es sorprendente.
Mi objetivo es usar el lpr como se muestra a continuación con el pseudo-código
10*i for i in range(77):
lpr --pages(i,i+1) file.pdf
Solución
Primero que nada, no entiendo tu pseudo código. (¿Qué significa 10 * i para i en el rango (77):
en este caso?)
En general, utiliza subprocess.Popen
para ejecutar comandos externos. receta ActiveState 511505 muestra un ejemplo específicamente con lpr
. Básicamente, puedes invocar lpr
de esta manera:
subprocess.Popen(['lpr', 'some_filename'])
Sin embargo: Dependiendo de su versión de lpr
, es posible que no haya una opción para seleccionar un subconjunto de todas las páginas, o esta funcionalidad puede estar disponible solo para por ejemplo archivos dvi .
Editar: Como parece que desea imprimir páginas seleccionadas de archivos PDF, eche un vistazo a kit de herramientas PDF . Ese software parece proporcionar funcionalidad de división. Además, asegúrese de que la impresión directa de archivos PDF sea compatible. Es posible que deba convertir la entrada a postscript primero (por ejemplo, utilizando pdf2ps
). Por supuesto, también puede automatizar estas tareas utilizando subprocess.Popen
.
Otros consejos
Simplemente llámalo desde la línea de comandos:
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)
Algo así.
No lo he probado, pero los pycups parecen ser enlaces de python para tazas.