Вы можете решить это с помощью 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 -->