Как я могу разделить страницы PDF по середине?

38

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

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

YGA
источник
почему ты хочешь сделать это? получать меньшие страницы?
Акира
Ну, MS Office не является бесплатной программой, но если у вас MS Office 2007, вы можете просто сохранить документы в виде файлов PDF и делать все, что вам угодно ...
Оуэн,
См. Также stackoverflow.com/q/13345593/321973
Тобиас Кинцлер

Ответы:

26

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

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

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

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

радостный
источник
Кажется, что это увеличивает размер файла (в разы «количество выходных страниц на одну входную страницу»), поскольку он использует исходное содержимое страницы и поле обрезки для каждой обрезанной страницы. Если вам нужен маленький размер файла, вы можете распечатать выходной файл в PS, а затем преобразовать в PDF, но при этом вы можете потерять качество (например, из-за растровых шрифтов).
Танус
37

Вы можете решить это с помощью 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 -->
Курт Пфайфл
источник
3
Милая! Вы должны действительно использовать это в каждом ответе, если вы хотите получать бесплатные голоса!
Ivo Flipse
2
Второй шаг работал только для меня , когда я использовал отрицательное смещение: "<</PageOffset [-421 0]>> setpagedevice". Я думаю, это зависит от ориентации исходного файла. Отличный ответ, тем не менее. :)
Мораес
1
Для меня второй шаг также работал со знаком минус
Рафарино
9

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

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

mutool poster -x 2 input.pdf output.pdf

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

Peque
источник
Это простое решение, спасибо. К сожалению, нет способа сместить контент на странице, чтобы скорректировать поля - для этого используйте метод, описанный Kurt Pfeifle.
Ян Лалинский
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. Но тогда придется обрезать кадрирование, чтобы страницы выглядели без шва. В противном случае установите носитель на обрезку.

motorbaby
источник
Обратите внимание, что после разбиения страниц с помощью этих параметров команды поля мультимедиа не изменяются. Изменяется только урожай. Если вы разделите одну страницу на несколько страниц, новые страницы сохранят размеры медиа-блока от старой страницы. Нужно Sed, чтобы изменить размеры медиа-бокса. Хотя не знаю, как настроить обрезку медиа-блока без включения чисел в команду.
Motorbaby
К сожалению. Я имею в виду, что новые страницы сохраняют размеры рамки обрезки от старой страницы.
Motorbaby
Обнаружена ошибка с PDF-файлами Acrobat. Визуально размеры cropBox можно увидеть в полях «Задать страницу» в Acrobat. Но измерения cropBox после использования Ghostscript для разделения разворотного пространства сохранили старые измерения страниц на другом уровне. Это можно увидеть в информации Preflight Analyze в Acrobat. После временной корректировки обрезки в Acrobat с правой стороны левой страницы на произвольное число, а затем возврата ее к 0, также изменились другие размеры ячеек (обрезка, рисунок и обрезка). Это устранило проблему, когда данные cropBox по-прежнему отображали размеры старой страницы. Правая страница была немного другой.
Motorbaby