Domanda
Come puoi chiamare lpr in Python?
Non è sorprendente il modulo sys che è sorprendente.
Mi propongo di usare lpr come mostrato dallo pseudo-codice
10*i for i in range(77):
lpr --pages(i,i+1) file.pdf
Soluzione
Prima di tutto, non capisco il tuo pseudo codice. (Cosa significa 10 * i per i nell'intervallo (77):
in questo caso?)
In genere, si utilizza subprocess.Popen
per eseguire comandi esterni. Ricetta 511505 di ActiveState mostra un esempio specifico con lpr
. Fondamentalmente, puoi invocare lpr
in questo modo:
subprocess.Popen(['lpr', 'some_filename'])
Tuttavia: a seconda della versione di lpr
, potrebbe non esserci un'opzione per selezionare un sottoinsieme di tutte le pagine oppure questa funzionalità potrebbe essere disponibile solo per ad es. file dvi .
Modifica: poiché sembra che tu voglia stampare pagine selezionate di file PDF, dai un'occhiata a PDF toolkit . Quel software sembra fornire funzionalità di suddivisione. Inoltre, assicurarsi che sia supportata la stampa diretta di file PDF. Potrebbe essere necessario convertire prima l'input in postscript (ad esempio utilizzando pdf2ps
). Ovviamente puoi automatizzare queste attività anche usando subprocess.Popen
.
Altri suggerimenti
Basta chiamarlo dalla riga di comando:
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)
Qualcosa del genere.
Non l'ho provato, ma i pycup sembrano essere attacchi di pitone per tazze.