OK, o problema já foi resolvido com a ajuda do Acrobat (versão completa, não Reader). Mas o que fazer se você não tiver acesso ao Acrobat? Isso poderia ser feito com o Ghostscript e o pdftk também?
Como resolver isso com a ajuda do Ghostscript ...
... e por diversão, não vamos usar um arquivo de entrada com páginas "double-up", mas uma com "treble-up". Na verdade, recebi um PDF hoje por email. Foi um panfleto, dobrado em Esquema de Leporello . O tamanho da folha era paisagem A4 (842pt x 595pt), e foi dobrado e colocado assim:
Front side to be printed, page 1 of PDF
+--------+--------+--------+ ^
| | | | |
| 5 | 6 | 1 | |
| | | | 595 pt
| | | | |
| | | | |
| | | | |
+--------+--------+--------+ v
^ ^
fold fold
v v
+--------+--------+--------+ ^
| | | | |
| 2 | 3 | 4 | |
| | | | 595 pt
| | | | |
| | | | |
| | | | |
+--------+--------+--------+ v
Back side to be printed, page 2 of PDF
<---------- 842 pt -------->
Eu quero criar 1 PDF com 6 páginas, cada uma com o tamanho incomum de 280.67pt x 595 pt.
Primeiro passo
Vamos primeiro extrair as seções à esquerda de cada uma das páginas de entrada:
gswin32c.exe ^
-o left-sections.pdf ^
-sDEVICE=pdfwrite ^
-g2807x5950 ^
-c "<</PageOffset [0 0]>> setpagedevice" ^
-f myflyer.pdf
O que esses parâmetros fazem?
-
-o ...............:
Nomeia o arquivo de saída. Implicitamente também usa-dBATCH -dNOPAUSE -dSAFER
. -
-sDEVICE=pdfwrite :
queremos PDF como formato de saída. -
-g................:
define o tamanho da mídia de saída em pixels. A resolução padrão do pdfwrite é de 720 dpi. Por isso, multiplique por 10 para obter uma correspondência para PageOffset. -
-c "..............:
pede ao Ghostscript para processar o trecho de código PostScript fornecido antes do arquivo de entrada principal (que precisa seguir com-f
). -
<</PageOffset ....:
configura o deslocamento da imagem da página no meio. (Claro que, para as páginas da esquerda, a mudança de[0 0]
não tem efeito real.) -
-f ...............:
processa este arquivo de entrada.
Qual foi o resultado do último comando?
Este aqui:
Output file: left-sections.pdf, page 1
+--------+ ^
| | |
| 5 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
Output file: right-sections.pdf, page 2
+--------+ ^
| | |
| 2 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
< 280 pt >
Segundo passo
Agora vamos fazer o que é análogo para as seções centrais:
gswin32c.exe ^
-o center-sections.pdf ^
-sDEVICE=pdfwrite ^
-g2807x5950 ^
-c "<</PageOffset [280.67 0]>> setpagedevice" ^
-f myflyer.pdf
Resultado:
Output file: center-sections.pdf, page 1
+--------+ ^
| | |
| 6 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
Output file: center-sections.pdf, page 2
+--------+ ^
| | |
| 3 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
< 280 pt >
Terceiro passo
Por último, as seções certas:
gswin32c.exe ^
-o right-sections.pdf ^
-sDEVICE=pdfwrite ^
-g2807x5950 ^
-c "<</PageOffset [561.34 0]>> setpagedevice" ^
-f myflyer.pdf
Resultado:
Output file: right-sections.pdf, page 1
+--------+ ^
| | |
| 1 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
Output file: right-sections.pdf, page 2
+--------+ ^
| | |
| 4 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
< 280 pt >
Última etapa
Agora combinamos as páginas em um arquivo:
pdftk.exe ^
A=right-sections.pdf ^
B=center-sections.pdf ^
C=left-sections.pdf ^
cat A1 B2 C2 A2 B1 C1 ^
output single-files-input.pdf
verbose
Concluído. Aqui está o resultado desejado. 6 páginas diferentes, tamanho 280.67x595.
Resultado:
+--------+ +--------+ +--------+ +--------+ +--------+ +--------+ ^
| | | | | | | | | | | | |
| 1 | | 2 | | 3 | | 4 | | 5 | | 6 | |
| | | | | | | | | | | | 595 pt
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
+--------+ +--------+ +--------+ +--------+ +--------+ +--------+ v
< 280 pt > < 280 pt > < 280 pt > < 280 pt > < 280 pt > < 280 pt >