Вы можете решить это с помощью Ghostscript. pdftk
не может этого сделать (насколько мне известно). Я дам вам шаги командной строки, чтобы сделать это вручную. Это будет легко написать в виде процедуры, также с различными параметрами для размеров страницы и номеров страниц. Но вы сказали, что можете сделать это сами ;-)
Как решить эту проблему с помощью Ghostscript ...
... и ради забавы, я недавно сделал это не с помощью входного файла с двойными страницами, а с тройными. Вы можете прочитать ответ по этому делу здесь.
Ваш случай еще проще. Кажется, у вас есть что-то похожее на это:
+------------+------------+ ^
| | | |
| 1 | 2 | |
| | | 595 pt
| | | |
| | | |
| | | |
+------------+------------+ v
^
fold
v
+------------+------------+ ^
| | | |
| 3 | 4 | |
| | | 595 pt
| | | |
| | | |
| | | |
+------------+------------+ v
<---------- 842 pt -------->
Вы хотите создать 1 PDF с 4 страницами, каждая из которых имеет размер 421 пт х 595 пт.
Первый шаг
Давайте сначала извлечем левые разделы из каждой входной страницы:
gs \
-o left-sections.pdf \
-sDEVICE=pdfwrite \
-g4210x5950 \
-c "<</PageOffset [0 0]>> setpagedevice" \
-f double-page-input.pdf
Что сделали эти параметры?
Во-первых, знайте, что в PDF 1 дюйм == 72 балла. Тогда остальное:
-o ...............:
Имена выходного файла. Также подразумевается использование -dBATCH -dNOPAUSE -dSAFER
.
-sDEVICE=pdfwrite :
мы хотим PDF в качестве выходного формата.
-g................:
устанавливает размер носителя в пикселях. Стандартное разрешение pdfwrite - 720 точек на дюйм. Следовательно, умножьте на 10, чтобы получить соответствие для PageOffset.
-c "..............:
просит Ghostscript обработать данный фрагмент кода PostScript непосредственно перед основным входным файлом (который должен сопровождаться с -f
).
<</PageOffset ....:
устанавливает смещение изображения страницы на носителе. (Конечно, для левых страниц сдвиг на [0 0]
имеет никакого реального эффекта.)
-f ...............:
обработать этот входной файл.
Какой результат достигла последняя команда?
Вот этот:
Output file: left-sections.pdf, page 1
+------------+ ^
| | |
| 1 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
Output file: left-sections.pdf, page 2
+------------+ ^
| | |
| 3 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
<-- 421 pt -->
Второй шаг
Далее правые разделы:
gs \
-o right-sections.pdf \
-sDEVICE=pdfwrite \
-g4210x5950 \
-c "<</PageOffset [-421 0]>> setpagedevice" \
-f double-page-input.pdf
Обратите внимание на отрицательное смещение, так как мы смещаем страницу влево, оставляя область просмотра неподвижной.
Результат:
Output file: right-sections.pdf, page 1
+------------+ ^
| | |
| 2 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
Output file: right-sections.pdf, page 2
+------------+ ^
| | |
| 4 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
<-- 421 pt -->
Последний шаг
Теперь мы объединяем страницы в один файл. Мы могли бы сделать это и с ghostscript, но вместо этого мы будем использовать pdftk
, потому что он быстрее для этой работы:
pdftk \
A=right-sections.pdf \
B=left-sections.pdf \
shuffle \
output single-pages-output.pdf
verbose
Готово. Вот желаемый результат. 4 разных страницы размером 421х595 пт.
Результат:
+------------+ +------------+ +------------+ +------------+ ^
| | | | | | | | |
| 1 | | 2 | | 3 | | 4 | |
| | | | | | | |5595 pt
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
+------------+ +------------+ +------------+ +------------+ v
<-- 421 pt --> <-- 421 pt --> <-- 421 pt --> <-- 421 pt -->