Você pode resolver isso com a ajuda do Ghostscript. pdftk
sozinho não pode fazer isso (até onde eu sei). Vou te dar os passos da linha de comando para fazer isso manualmente. Será fácil roteirizar isso como um procedimento, também com parâmetros diferentes para tamanhos de página e números de página. Mas você disse que pode fazer isso sozinho;)
Como resolver isso com a ajuda do Ghostscript ...
... e por diversão, eu recentemente fiz não com um arquivo de entrada com páginas "double-up", mas uma com "treble-ups". Você pode ler a resposta para este caso nesta outra resposta .
Seu caso é ainda mais simples. Você parece ter algo parecido com isso:
+------------+------------+ ^
| | | |
| 1 | 2 | |
| | | 595 pt
| | | |
| | | |
| | | |
+------------+------------+ v
^
fold
v
+------------+------------+ ^
| | | |
| 3 | 4 | |
| | | 595 pt
| | | |
| | | |
| | | |
+------------+------------+ v
<---------- 842 pt -------->
Você deseja criar um PDF com 4 páginas, cada uma com o tamanho de 421 pt x 595 pt.
Primeiro passo
Vamos primeiro extrair as seções à esquerda 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 fazem?
Primeiro, saiba que em 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 é 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
+------------+ ^
| | |
| 1 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
Output file: left-sections.pdf, page 2
+------------+ ^
| | |
| 3 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
<-- 421 pt -->
Segundo passo
Em seguida, as seções certas:
gs \
-o right-sections.pdf \
-sDEVICE=pdfwrite \
-g4210x5950 \
-c "<</PageOffset [-421 0]>> setpagedevice" \
-f double-page-input.pdf
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 -->
Última etapa
Agora combinamos as páginas em um único arquivo. Poderíamos fazer isso com ghostscript também, mas usaremos pdftk
, porque é mais rápido para esse trabalho:
pdftk \
A=right-sections.pdf \
B=left-sections.pdf \
shuffle A B \
output single-pages-output.pdf
verbose
Concluído. Aqui está o resultado desejado. 4 páginas diferentes, tamanho 421x595 pt.
Resultado:
+------------+ +------------+ +------------+ +------------+ ^
| | | | | | | | |
| 1 | | 2 | | 3 | | 4 | |
| | | | | | | | 595 pt
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
+------------+ +------------+ +------------+ +------------+ v
<-- 421 pt --> <-- 421 pt --> <-- 421 pt --> <-- 421 pt -->