Як я можу розділити сторінки PDF в середині?


38

Хтось знає про хороший спосіб розділити сторінки PDF у середині на дві нові сторінки?

Щоб було зрозуміло, я не намагаюся розділити вже наявні сторінки з pdf; Я намагаюся створити дві нові сторінки з існуючої однієї сторінки.


чому ти хочеш це робити? отримання менших сторінок?
акіра

Ну і MS Office - це не безкоштовна програма, але якщо у вас MS Office 2007, ви можете просто зберігати документи у форматі PDF та робити як завгодно ...
Owen


Відповіді:


26

Спробуйте BRISS .

alt текст

Це дозволяє розділити кожну сторінку на стільки підсторінок, як визначити регіони з графічним інтерфейсом. Він об'єднує всі подібні сторінки в групи для вас, так що ви можете визначити регіони для цієї групи один раз.

Це кросплатформна, безкоштовна та з відкритим кодом.


Здається, це збільшує розмір файлу (в рази "кількість вихідних сторінок на вхідній сторінці"), оскільки він використовує оригінальний вміст сторінки та коробку для кожної обрізаної сторінки. Якщо вам потрібен невеликий розмір файлу, ви можете роздрукувати вихідний файл в PS і потім конвертувати в PDF, але ви можете втратити якість (наприклад, через шрифти растрових зображень).
таніум

37

Вирішити це можна за допомогою Ghostscript. pdftkодин не може цього зробити (наскільки мені відомо). Я дам вам кроки командного рядка, щоб зробити це вручну. Сценарій це як процедуру буде легко, також з різними параметрами для розмірів сторінки та номерів сторінок. Але ви сказали, що можете це зробити самі ;-)

Як вирішити це за допомогою Ghostscript ...

... і для задоволення від цього, я нещодавно це робив не з вхідним файлом, на якому розміщені сторінки "подвоєння", а з "високими рівнями". Ви можете прочитати відповідь на цей випадок у цій іншій відповіді .

Ваш випадок ще простіший. У вас, здається, є щось подібне до цього:

+------------+------------+   ^
|            |            |   |
|      1     |      2     |   |
|            |            | 595 pt
|            |            |   |
|            |            |   |
|            |            |   |
+------------+------------+   v
             ^
            fold
             v
+------------+------------+   ^
|            |            |   |
|      3     |      4     |   |
|            |            | 595 pt
|            |            |   |
|            |            |   |
|            |            |   |
+------------+------------+   v
<---------- 842 pt -------->

Ви хочете створити 1 PDF з 4 сторінок, кожна з яких має розмір 421 pt x 595 pt.

Перший крок

Давайте спочатку витягнемо ліві розділи з кожної із вхідних сторінок:

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 dpi. Отже, помножте на 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 різні сторінки розміром 421x595 пт.

Результат:

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

3
Гарненько! Ви дійсно повинні використовувати це у кожній відповіді, якщо ви хочете продовжувати отримувати оновлення безкоштовно!
Іво Фліпс

2
Другий крок працював тільки для мене , коли я використовував негативний зсув: "<</PageOffset [-421 0]>> setpagedevice". Я думаю, це залежить від орієнтації вихідного файлу. Тим не менш, чудова відповідь. :)
moraes

1
Для мене другий крок також працював зі знаком мінус
Рафареїно,

9

Завдяки @marttt та їхній відповіді в Unix & Linux .

Ви можете використовувати mutool(що входить до складу mupdf):

mutool poster -x 2 input.pdf output.pdf

Ви також можете використовувати, -yякщо ви хочете виконати вертикальний розкол.


Це просте рішення, дякую. На жаль, немає можливості перенести вміст на сторінку, щоб скоригувати поля - для цього використовуйте метод, описаний Куртом Пфайфле.
Ján Lalinský

0

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

Для сторінки з воротами, на якій розміщено медіа-скриньку розміром 20.0833 х 13.833 і поле для обрізки розміром 19,25 х 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. Але тоді обрізання доведеться скинути, щоб обрізати, щоб сторінки виглядали безшовними. В іншому випадку встановіть носій для обрізання.


Зауважте, що після розділення сторінок із цими параметрами команд медіаполі не змінюються. Змінюється лише урожай. Якщо ви розділите одну сторінку на кілька сторінок, нові сторінки зберігатимуть розміри вікна медіа від старої сторінки. Вам потрібен sed для зміни розмірів коробки медіа. Хоча не знаю, як встановити медіабокс для обрізання, не включаючи цифри в команду.
motorbaby

На жаль Я маю на увазі, що нові сторінки зберігають розміри поля обрізання від старої сторінки.
motorbaby

Знайдено помилку з PDF-файлами Acrobat. Візуально розміри cropBox можна побачити у вікнах Set Page Boxes в Acrobat. Але розміри cropBox після використання Ghostscript для поділу ворота зберегли старі параметри сторінки на іншому рівні. Це можна було побачити в "Інформація про передпольотний аналіз" в Acrobat. Після тимчасового регулювання обрізання в Acrobat з правого боку на лівій сторінці тимчасово до довільного числа, а потім повернення його до 0, інші розміри поля (кровотеча, мистецтво та обрізка) також коригуються. Це вирішило проблему, коли дані cropBox все ще показували старі параметри сторінки. Права сторінка була дещо іншою.
motorbaby
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.