lpr: Como especificar o intervalo de páginas “3 to end”?

6

O documento do CUPS não informa como especificar um intervalo de páginas como "3 to end" . Isso pode ser feito sem saber o número de páginas do documento? Então, algo como lpr -o page-ranges=3-end -P myprinter ?

    
por Marius Hofert 02.09.2013 / 10:32

2 respostas

4

Se você especificar um número maior do que o número real de páginas, o Cups ignorará a solicitação de páginas além do final.

lpr -o page-ranges=3-999999999 …

(Não use mais do que nove 9 s, pois os Cups irão silenciosamente envolver números além de 2 31 .)

De volta quando esta pergunta foi feita, a Cups poderia fazer isso sozinha. Se você deixou de fora um dos lados do intervalo, isso significou o fim. page-ranges=-42 foi um atalho (bastante inútil) para page-ranges=1-42 . Para especificar um intervalo que vai até o final do arquivo, você pode deixar a parte final em branco: page-ranges=3- . Infelizmente, esse recurso parece ter desaparecido.

    
por 03.09.2013 / 02:23
4

intervalos de lpr

Não tenho certeza sobre o bit "end", mas você pode tentar esse método se souber o último número da página na série:

$ lpr -P myprinter -o page-ranges=3-10

lpoptions

Você pode tentar consultar a impressora para ver quais opções ela oferece.

$ lpoptions -p <printer name> -l

Exemplo

$ lpoptions -p mfc-8480dn -l
OptionTrays/Number of Input Trays: 1Trays *2Trays
PageSize/Media Size: *Letter Legal Executive A4 A5 A6 Env10 EnvMonarch EnvDL EnvC5 EnvISOB5 EnvISOB6
BrMediaType/BrMediaType: *PLAIN THIN THICK THICKERPAPER2 BOND TRANSPARENCIES ENV ENVTHICK ENVTHIN
InputSlot/InputSlot: MPTRAY TRAY1 TRAY2 *AUTO
Duplex/Duplex: DuplexTumble DuplexNoTumble *None
Resolution/Resolution: 300dpi *600dpi 2400x600dpi 1200dpi
TonerSaveMode/Toner Save: *Off On
Sleep/Sleep Time [Min.]: *PrinterDefault 2minutes 10minutes 30minutes

psselect

Se você tiver um fluxo de postscript (PS) que está tentando enviar para o comando lpr , poderá usar o comando psselect para selecionar intervalos de páginas no fluxo de postscript.

Dados de amostra

  • PDF : Um arquivo PDF de amostra está disponível aqui, intitulado: example.pdf
  • texto : Podemos criar um exemplo de arquivo .txt assim:

    $ seq 1000 > example.txt
    

Exemplos

texto

usando o enscript

$ enscript sample.txt -o - | psselect -p3- | ps2pdf - textfile.pdf
[ 16 pages * 1 copy ] left in -
[3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] 
Wrote 14 pages, 30417 bytes

$ enscript sample.txt -o - | psselect -p3-5 | ps2pdf - textfile.pdf
[ 16 pages * 1 copy ] left in -
[3] [4] [5] Wrote 3 pages, 16329 bytes

usando paps

$ paps sample.txt - | psselect -p3- | ps2pdf - textfile.pdf
[3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] 
Wrote 17 pages, 44159 bytes
[saml@grinchy bin]$ paps sample.txt - | psselect -p3-5 | ps2pdf - textfile.pdf
[3] [4] [5] Wrote 3 pages, 15851 bytes

PDF

$ pdftops example.pdf - | psselect -p3- | ps2pdf - pdffile.pdf
[3] [4] [5] [6] [7] [8] [9] [10] Wrote 8 pages, 687796 bytes

$ pdftops example.pdf - | psselect -p3-5 | ps2pdf - pdffile.pdf
[3] [4] [5] Wrote 3 pages, 372422 bytes

Enviando para lpr

Você pode alterar os comandos acima para que, em vez de enviar a saída para ps2pdf , envie para lpr , assim:

$ pdftops example.pdf - | psselect -p3-5 | lpr -P myprinter

O que mais?

Você pode controlar o número de colunas usando lpr ou enscript ou paps . Você também pode controlar o duplex (estilo dos dois lados) usando lpr também.

Exemplos

2 colunas

$ paps --columns=2 sample.txt - | psselect -p3-5 | ps2pdf - textfile.pdf
[3] [4] [5] Wrote 3 pages, 22244 bytes

$ enscript -2 sample.txt -o - | psselect -p3-5 | ps2pdf - textfile.pdf
[ 8 pages * 1 copy ] left in -
[3] [4] [5] Wrote 3 pages, 19700 bytes

$ pdftops example.pdf - | psselect -p3-5 | lpr -o number-up=2

duplex

$ pdftops example.pdf - | psselect -p3-5 | lpr -o number-up=2 -o sides=two-sided-short-edge

Referências

por 02.09.2013 / 11:33

Tags