Puede resolver esto con la ayuda de Ghostscript. pdftk
solo no puedo hacer eso (que yo sepa). Te daré los pasos de la línea de comandos para hacer esto manualmente. Será fácil escribir esto como un procedimiento, también con diferentes parámetros para tamaños de página y números de página. Pero dijiste que puedes hacerlo tú mismo ;-)
Cómo resolver esto con la ayuda de Ghostscript ...
... y por diversión, lo he hecho recientemente no con un archivo de entrada con páginas "dobles", sino uno con "agudos". Puede leer la respuesta para este caso en esta otra respuesta .
Tu caso es aún más simple. Parece que tienes algo similar a esto:
+------------+------------+ ^
| | | |
| 1 | 2 | |
| | | 595 pt
| | | |
| | | |
| | | |
+------------+------------+ v
^
fold
v
+------------+------------+ ^
| | | |
| 3 | 4 | |
| | | 595 pt
| | | |
| | | |
| | | |
+------------+------------+ v
<---------- 842 pt -------->
Desea crear 1 PDF con 4 páginas, cada una de las cuales tiene un tamaño de 421 pt x 595 pt.
Primer paso
Primero extraigamos las secciones izquierdas de cada una de las páginas de entrada:
gs \
-o left-sections.pdf \
-sDEVICE=pdfwrite \
-g4210x5950 \
-c "<</PageOffset [0 0]>> setpagedevice" \
-f double-page-input.pdf
¿Qué hicieron estos parámetros?
Primero, sepa que en PDF 1 pulgada == 72 puntos . Entonces el resto es:
-o ...............:
Nombre de archivo de salida. Implícitamente también utiliza -dBATCH -dNOPAUSE -dSAFER
.
-sDEVICE=pdfwrite :
Queremos PDF como formato de salida.
-g................:
establece el tamaño del medio de salida en píxeles. La resolución predeterminada de pdfwrite es 720 ppp. Por lo tanto, multiplique por 10 para obtener una coincidencia para PageOffset.
-c "..............:
le pide a Ghostscript que procese el fragmento de código PostScript dado justo antes del archivo de entrada principal (que debe seguir -f
).
<</PageOffset ....:
establece el desplazamiento de la imagen de la página en el medio. (Por supuesto, para las páginas de la izquierda el desplazamiento [0 0]
no tiene ningún efecto real).
-f ...............:
procesar este archivo de entrada.
¿Qué resultado logró el último comando?
Éste:
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 paso
A continuación, las secciones correctas:
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 -->
Último paso
Ahora combinamos las páginas en un archivo. Podríamos hacer eso también con ghostscript, pero usaremos pdftk
en su lugar, porque es más rápido para este trabajo:
pdftk \
A=right-sections.pdf \
B=left-sections.pdf \
shuffle A B \
output single-pages-output.pdf
verbose
Hecho. Aquí está el resultado deseado. 4 páginas diferentes, tamaño 421x595 pt.
Resultado:
+------------+ +------------+ +------------+ +------------+ ^
| | | | | | | | |
| 1 | | 2 | | 3 | | 4 | |
| | | | | | | | 595 pt
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
+------------+ +------------+ +------------+ +------------+ v
<-- 421 pt --> <-- 421 pt --> <-- 421 pt --> <-- 421 pt -->