36

Кто-нибудь знает хороший способ разделить страницы PDF по середине на две новые страницы?

Чтобы было ясно, я не пытаюсь отделить уже существующие страницы из PDF; Я пытаюсь создать две новые страницы из существующей одной страницы.

4 ответа4

36

Вы можете решить это с помощью 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 A B \
  output single-pages-output.pdf
  verbose

Готово. Вот желаемый результат. 4 разных страницы размером 421х595 пт.

Результат:

+------------+ +------------+ +------------+ +------------+   ^
|            | |            | |            | |            |   |
|     1      | |     2      | |     3      | |     4      |   |
|            | |            | |            | |            | 595 pt
|            | |            | |            | |            |   |
|            | |            | |            | |            |   |
|            | |            | |            | |            |   |
+------------+ +------------+ +------------+ +------------+   v
<-- 421 pt --> <-- 421 pt --> <-- 421 pt --> <-- 421 pt -->
26

Попробуйте BRISS.

альтернативный текст

Он позволяет разбить каждую страницу на столько страниц, сколько вы хотите, определяя регионы с помощью графического интерфейса. Он группирует все похожие страницы в группы для вас, поэтому вы можете определить регионы для этой группы один раз.

Он кроссплатформенный, бесплатный и с открытым исходным кодом.

6

Спасибо @marttt и их ответу в Unix & Linux.

Вы можете использовать mutool (который входит в состав mupdf):

mutool poster -x 2 input.pdf output.pdf

Вы также можете использовать -y если хотите выполнить вертикальное разбиение.

0

Чтобы расширить ответ @ Kurt (поскольку у меня недостаточно очков репутации, чтобы комментировать), сначала убедитесь, что используемые вами измерения не основаны на измерениях Crop Box, если они отличаются от измерений Media Box. Размер вывода основан на размерах Media Box, но смещение, похоже, использует размеры Crop Box.

Для страницы с разворотными воротами, которая имела мультимедийный блок 20.0833 x 13.833 и обрезку 19.25 x 13.0, которые были такими же, как поле обрезки в моем документе, разделить его на две страницы в Ubuntu для левой стороны:

gs -o left.pdf -sDEVICE=pdfwrite -g7230x9960 -c "<</PageOffset [0 0]>> setpagedevice" -f gatefold.pdf

Правая сторона:

gs -o right.pdf -sDEVICE=pdfwrite -g7230x9960 -c "<</PageOffset [-693 0]>> setpagedevice" -f gatefold.pdf

А затем сшил их с помощью pdftk left.pdf right.pdf output final.pdf .

Альтернативой может быть установка поля кадрирования на то же, что и поле медиа; тогда смещение будет равно -723. Но тогда придется обрезать кадрирование, чтобы страницы выглядели без шва. В противном случае установите носитель на обрезку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .