Я нашел ответ Курта Пфайли очень полезным для моей аналогичной ситуации. Я думал, что мог бы поделиться своей модификацией решения с другими ...
У меня тоже был отсканированный PDF, в котором было по 2 страницы на каждом листе. Это был отсканированный в брошюру буклет размером 11 x 8,5 (дюйм), который был оставлен сшитым при первоначальном сканировании, поэтому: страница PDF 1 = задняя и передняя обложка; Страница PDF 2 = страницы 2 и 3 и т. Д. На экране это хорошо читается, но вы не можете распечатать его, а затем сшить, чтобы сделать больше копий буклета.
Мне нужно было распечатать это на дуплексном копире; то есть превратить его НАЗАД в «навязанный» PDF, готовый к печати. Таким образом, используя решение Курта, я сделал это (гм) "однострочным", чтобы преобразовать его обратно в полстраницы, в правильном порядке страниц снова. Он будет работать для любой высоты и ширины, а также для любого количества страниц. В моем случае у меня был 40-страничный буклет (20 отсканированных страниц в PDF.)
HEIGHT=8.5 WIDTH=11 ORIG_FILE_PATH="original.pdf" \
count=$(set -xe; \
gs -o left.pdf -sDEVICE=pdfwrite \
-g$(perl -e "print(($WIDTH / 2) * 720)")x$(perl -e "print($HEIGHT * 720)") \
-c "<</PageOffset [0 0]>> setpagedevice" \
-f "$ORIG_FILE_PATH" >/dev/null; \
gs -o right.pdf -sDEVICE=pdfwrite \
-g$(perl -e "print(($WIDTH / 2) * 720)")x$(perl -e "print($HEIGHT * 720)") \
-c "<</PageOffset [-$(perl -e "print(($WIDTH / 2) * 72)") 0]>> setpagedevice" \
-f "$ORIG_FILE_PATH" | grep Page | wc -l ); \
echo '>>>>>' Re-ordering $count pages...; \
(set -xe; pdftk A=right.pdf B=left.pdf cat \
A1 `set +xe; for x in $(seq 2 $count); do echo B$x A$x; done` B1 \
output ordered.pdf); \
echo "Done. See ordered.pdf"
Вам нужно только изменить первые несколько параметров в этой команде, чтобы указать HEIGHT, WIDTH и ORIG_FILE_PATH. Оставшаяся часть команды вычисляет различные размеры и дважды вызывает gs, затем pdftk. Он даже посчитает страницы вашего сканирования и затем выдаст правильную спецификацию сортировки (для сценария, который я дал).
Он выводит некоторый прогресс в том, что он делает, и будет выглядеть так:
+++ perl -e 'print((11 / 2) * 720)'
+++ perl -e 'print(8.5 * 720)'
++ gs -o left.pdf -sDEVICE=pdfwrite -g3960x6120 -c '<</PageOffset [0 0]>> setpagedevice' -f original.pdf
++ wc -l
++ grep Page
+++ perl -e 'print((11 / 2) * 720)'
+++ perl -e 'print(8.5 * 720)'
+++ perl -e 'print((11 / 2) * 72)'
++ gs -o right.pdf -sDEVICE=pdfwrite -g3960x6120 -c '<</PageOffset [-396 0]>> setpagedevice' -f original.pdf
>>>>> Re-ordering 20 pages...
++ set +xe
+ pdftk A=right.pdf B=left.pdf cat A1 B2 A2 B3 A3 B4 A4 B5 A5 B6 A6 B7 A7 B8 A8 B9 A9 B10 A10 B11 A11 B12 A12 B13 A13 B14 A14 B15 A15 B16 A16 B17 A17 B18 A18 B19 A19 B20 A20 B1 output ordered.pdf
Done. See ordered.pdf
Затем, чтобы получить верстку страницы, необходимую для печатного буклета, вы просто «печатаете» файл order.pdf на нестандартный размер страницы именно того размера, который вам нужен (в моем примере, 5,5 x 8,5), отправляя его в «создание буклета "инструмент (в моем случае я использовал« Создание буклета Кристофа Фогельбуша для Mac »по адресу http://download.cnet.com/Create-Booklet/3000-2088_4-86349.html ).
Полученный PDF-файл теперь вернется к исходному размеру страницы 11 x 8,5 с 2 страницами на листе, но порядок будет таким, что вы можете напечатать его двухсторонним, переплетом по короткому краю и вуаля! у вас будет распечатка, которую вы сможете фотокопировать, а также сложить и вышить крестиком, воспроизводя оригинальный буклет, даже не разбирая (или даже не видя) оригинал.
Надеюсь, это поможет кому-то!
-с