Você pode resolver isso com a ajuda do Ghostscript. pdftk
sozinho não pode fazer isso (tanto quanto sei). Darei a você as etapas da linha de comando para fazer isso manualmente. Será fácil escrever isso como um procedimento, também com parâmetros diferentes para tamanhos e números de páginas. Mas você disse que pode fazer isso sozinho ;-)
Como resolver isso com a ajuda do Ghostscript ...
... e, por diversão, recentemente fiz isso não com um arquivo de entrada com páginas "dobradas", mas com um "triplo". Você pode ler a resposta para este caso aqui .
Seu caso é ainda mais simples. Você parece ter algo parecido com isto:
+------------+------------+ ^
| | | |
| 1 | 2 | |
| | | 595 pt
| | | |
| | | |
| | | |
+------------+------------+ v
^
fold
v
+------------+------------+ ^
| | | |
| 3 | 4 | |
| | | 595 pt
| | | |
| | | |
| | | |
+------------+------------+ v
<---------- 842 pt -------->
Você deseja criar 1 PDF com 4 páginas, cada uma com o tamanho de 421 pt x 595 pt.
Primeiro passo
Vamos primeiro extrair as seções esquerdas de cada uma das páginas de entrada:
gs \
-o left-sections.pdf \
-sDEVICE=pdfwrite \
-g4210x5950 \
-c "<</PageOffset [0 0]>> setpagedevice" \
-f double-page-input.pdf
O que esses parâmetros fizeram?
Primeiro, saiba que no PDF 1 polegada == 72 pontos . Então o resto é:
-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 é 720 dpi. Portanto, multiplique por 10 para obter uma correspondência para o PageOffset.
-c "..............:
solicita ao Ghostscript que processe o snippet de código PostScript fornecido antes do arquivo de entrada principal (que precisa ser seguido -f
).
<</PageOffset ....:
define o deslocamento da imagem da página no meio. (É claro que, para as páginas da esquerda, a troca por [0 0]
não tem efeito real.)
-f ...............:
processe esse arquivo de entrada.
Qual resultado o último comando alcançou?
Este:
Output file: left-sections.pdf, page 1
+------------+ ^
| | |
| 1 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
Output file: left-sections.pdf, page 2
+------------+ ^
| | |
| 3 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
<-- 421 pt -->
Segundo passo
A seguir, as seções corretas:
gs \
-o right-sections.pdf \
-sDEVICE=pdfwrite \
-g4210x5950 \
-c "<</PageOffset [-421 0]>> setpagedevice" \
-f double-page-input.pdf
Observe o deslocamento negativo, pois estamos deslocando a página para a esquerda enquanto mantemos a área de visualização estacionária.
Resultado:
Output file: right-sections.pdf, page 1
+------------+ ^
| | |
| 2 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
Output file: right-sections.pdf, page 2
+------------+ ^
| | |
| 4 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
<-- 421 pt -->
Último passo
Agora combinamos as páginas em um arquivo. Poderíamos fazer isso com o ghostscript também, mas usaremos em pdftk
vez disso, porque é mais rápido para este trabalho:
pdftk \
A=right-sections.pdf \
B=left-sections.pdf \
shuffle \
output single-pages-output.pdf
verbose
Feito. Aqui está o resultado desejado. 4 páginas diferentes, tamanho 421x595 pt.
Resultado:
+------------+ +------------+ +------------+ +------------+ ^
| | | | | | | | |
| 1 | | 2 | | 3 | | 4 | |
| | | | | | | |5595 pt
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
+------------+ +------------+ +------------+ +------------+ v
<-- 421 pt --> <-- 421 pt --> <-- 421 pt --> <-- 421 pt -->