Перетворити PDF 2 сторони на сторінку в 1 сторону на сторінку


12

Як я можу конвертувати PDF-файл з 2 сторінок на сторінку в 1 сторону на сторінку?


Це абсолютно божевільно! Чи немає способу змінити налаштування сторінки в PDF на односторонній замість двосторонній?
— Натан Фелман

@Nathan Fellman: Божевільний, так. Але божевільні речі іноді дають вам найбільше задоволення ;-)
— Курт Пфайфл


@SkippyleGrandGourou Я не бачу, як це питання пов'язане. Чи не питання намагаються зробити дві різні речі зі сторінками?
— Бен N

@BenN: Обидва питання задають питання "як створити дві нові сторінки з існуючої однієї сторінки", щоб процитувати іншу. Відповідь, яка найбільше голосує, - це майже копіпаста.
— Skippy le Grand Gourou

Відповіді:


24

Гаразд, проблему вже вирішили за допомогою Acrobat (повна версія, а не Reader). Але що робити, якщо у вас немає доступу до Acrobat? Чи можна це зробити і за допомогою Ghostscript та pdftk?

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

... і для задоволення від цього не давайте використовувати вхідний файл зі сторінками "подвоєння", а один із "високими рівнями". Насправді я отримав один такий PDF сьогодні електронною поштою. Це був флаєр, складений у схемі Лепорелло . Розмір аркуша мав формат A4 (842pt x 595pt), і він був складений та викладений так:

Front side to be printed, page 1 of PDF
+--------+--------+--------+   ^
|        |        |        |   |
|   5    |   6    |   1    |   |
|        |        |        | 595 pt
|        |        |        |   |
|        |        |        |   |
|        |        |        |   |
+--------+--------+--------+   v
         ^        ^
        fold     fold
         v        v
+--------+--------+--------+   ^
|        |        |        |   |
|   2    |   3    |   4    |   |
|        |        |        | 595 pt
|        |        |        |   |
|        |        |        |   |
|        |        |        |   |
+--------+--------+--------+   v
Back side to be printed, page 2 of PDF
<---------- 842 pt -------->

Я хочу створити 1 PDF на 6 сторінок, кожна з яких має незвичайний розмір 280,67pt x 595 pt.

Перший крок

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

gswin32c.exe ^
    -o left-sections.pdf ^
    -sDEVICE=pdfwrite ^
    -g2807x5950 ^
    -c "<</PageOffset [0 0]>> setpagedevice" ^
    -f myflyer.pdf

Що зробили ці параметри?

  • -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
+--------+  ^
|        |  |
|   5    |  |
|        |595 pt
|        |  |
|        |  |
|        |  |
+--------+  v

Output file: left-sections.pdf, page 2
+--------+  ^
|        |  |
|   2    |  |
|        |595 pt
|        |  |
|        |  |
|        |  |
+--------+  v
< 280 pt >

Другий крок

Тепер давайте зробимо аналогічну річ для центральних секцій:

gswin32c.exe ^
    -o center-sections.pdf ^
    -sDEVICE=pdfwrite ^
    -g2807x5950 ^
    -c "<</PageOffset [280.67 0]>> setpagedevice" ^
    -f myflyer.pdf

Результат:

Output file: center-sections.pdf, page 1
+--------+  ^
|        |  |
|   6    |  |
|        |595 pt
|        |  |
|        |  |
|        |  |
+--------+  v

Output file: center-sections.pdf, page 2
+--------+  ^
|        |  |
|   3    |  |
|        |595 pt
|        |  |
|        |  |
|        |  |
+--------+  v
< 280 pt >

Третій крок

Останній, правильний розділи:

gswin32c.exe ^
    -o right-sections.pdf ^
    -sDEVICE=pdfwrite ^
    -g2807x5950 ^
    -c "<</PageOffset [561.34 0]>> setpagedevice" ^
    -f myflyer.pdf

Результат:

Output file: right-sections.pdf, page 1
+--------+  ^
|        |  |
|   1    |  |
|        |595 pt
|        |  |
|        |  |
|        |  |
+--------+  v

Output file: right-sections.pdf, page 2
+--------+  ^
|        |  |
|   4    |  |
|        |595 pt
|        |  |
|        |  |
|        |  |
+--------+  v
< 280 pt >

Останній крок

Тепер ми об’єднуємо сторінки в один файл:

pdftk.exe ^
  A=right-sections.pdf ^
  B=center-sections.pdf ^
  C=left-sections.pdf ^
  cat A1 B2 C2 A2 B1 C1 ^
  output single-files-input.pdf
  verbose

Зроблено. Ось бажаний результат. 6 різних сторінок, розміром 280,67x595.

Результат:

+--------+  +--------+  +--------+  +--------+  +--------+  +--------+   ^
|        |  |        |  |        |  |        |  |        |  |        |   |
|   1    |  |   2    |  |   3    |  |   4    |  |   5    |  |   6    |   |
|        |  |        |  |        |  |        |  |        |  |        | 595 pt
|        |  |        |  |        |  |        |  |        |  |        |   |
|        |  |        |  |        |  |        |  |        |  |        |   |
|        |  |        |  |        |  |        |  |        |  |        |   |
+--------+  +--------+  +--------+  +--------+  +--------+  +--------+   v
< 280 pt >  < 280 pt >  < 280 pt >  < 280 pt >  < 280 pt >  < 280 pt > 

1
Святе лайно, дивовижне мистецтво тут!
— Іво Фліпс

Це добре працювало для мене, але мені довелося встановити PageOffset на від’ємне число, щоб отримати інші розділи.
— jonchang

Ви можете використовувати Python для великих PDF-файлів: f = open("order.dat","w") for i in [a+1 for a in xrange(63)]: f.write("A{0} B{0} ".format(i)) f.close()Це створить файл order.dat з "A1 B1 A2 B2 ... A63 B63". Потім можна скопіювати і вставити його в pdftk.
— Suuuehgi

4

Просто була така ж проблема. Я натрапив на briss, інструмент Java-графічного інтерфейсу з відкритим кодом для розділення та обрізки сторінок PDF:

http://sourceforge.net/projects/briss/

Для мене це працювало дуже добре в Linux, хоча інтерфейс користувача не зовсім тривіальний. Він навіть працював у форматі PDF із деякими різними розмірами сторінок!


3

@peims, спасибі Ось покрокова версія вашого методу. Я спробував це у файлі, який хотів конвертувати для свого Kindle DX, і він відмінно працює:

  • Використовуйте повну версію Acrobat v9, щоб обрізати ліву частину сторінки та зберегти її як "left.pdf":
    • Використовуйте інструмент обрізання, щоб позначити ліву частину сторінки.
    • Клацніть правою кнопкою миші та виберіть "Встановити Cropbox".
    • Виберіть "Document..Crop Pages" і застосуйте обрізку до всього документа.
  • Повторіть сторінки з правою рукою, збережіть як "right.pdf".
  • На цьому етапі у вас є два документи: "left.pdf" зі сторінками зліва та "right.pdf" із правою сторінкою.

Далі, використовуйте pdftk.exe (з http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ ), щоб переплести результати в один файл. Скопіюйте "pdftk.exe", "left.pdf" та "right.pdf" в "D: \", і виконайте:

  • D:> pdftk D: \ left.pdf лопнув вихід% 05d_A.pdf
  • D:> pdftk D: \ right.pdf лопнув вихід% 05d_B.pdf
  • D:> pdftk * _ ?. pdf кішковий вихід комбінований.pdf

Примітка: якщо ви скопіюєте файли на "C: \", це не працюватиме під Win 7 через дозволи безпеки. Якщо у вас немає D: \, тоді створіть каталог "C: \ x" для завершення операції.

Зазвичай ці результати будуть досить хорошими. Однак є ще два необов'язкові кроки для покращення виходу.

  • (Необов'язково завершальний крок 1) На цьому етапі документ є величезним (мій документ видобуто з 7 МБ до 80 МБ), тому ви можете зменшити розмір файлу, використовуючи будь-який:
    • "Розширений оптимізатор PDF", або:
    • "Advanced..Preflight" з налаштуванням "Сумісний з Acrobat 5".
  • (необов'язково заключний крок 2) Сторінки різного розміру. Повторіть обрізку на всіх сторінках, щоб все було однакового розміру.

2

Ви можете скопіювати документ, а потім обрізати сторінки таким чином, щоб в одному файлі відображалися лише парні номери, а в іншому - непарні номери сторінок. Потім розділіть файли на одні сторінки та повторно комбінуйте, щоб зробити один документ з однієї сторони на сторінку ...

Це можна зробити, використовуючи ряд методів, наприклад:

  1. Використовуйте інструмент обрізання Adobe Acrobat , щоб обрізати одну сторону подвійної сторінки, і застосувати обрізку до всіх сторінок.
  2. Розділіть файли на окремі сторінки за допомогою команди ' burst ' у pdftoolkit
  3. Перейменуйте файли послідовно за допомогою інструменту перейменування файлів (наприклад, ReNamer )
  4. Рекомбінуйте сторінки за допомогою команди 'cat' у pdftoolkit

2

Я використовую наступний сценарій для обробки сканованих книг на Mac та Linux. Це може отримати досить інтенсивну пам'ять.

#!/bin/bash
#
# This script processes scanned books. After scanning the books have been cropped with
# Preview. This does kind of a "soft crop" that we need to make a bit "harder". 
#
# The second step is to take each page of the PDF and split this into two two pages, 
# because each page of the scanned document actually contains two pages of the book.
#
#

FILE=`mktemp`.pdf
FILE2=`mktemp`.pdf
FILE3=`mktemp`.pdf

echo "Making a temporary copy of the input file."

cp $1 $FILE

#
# Start cropping
#

echo "Cropping the PDF"

# The first regex removes all boxes but CropBox. The second regex renames the  CropBox as MediaBox

perl -pi.bak -e 's/\/(Media|Bleed|Art|Trim)Box[\n\l\f\s]*\[(.+?)\]//msg;' $FILE
perl -pi.bak -e 's/CropBox/MediaBox/g;' $FILE

echo "Validating the PDF"

#Run PDFTK to ensure that the file is OK

cat $FILE | pdftk - output $FILE2

#
# Done cropping, start splitting the pages
#

echo "Splitting the pages in two and changing to 200 dpi with imagemagick. Output goes to $FILE3"

convert -density 200  $FILE2 -crop 50%x0 +repage $FILE3

#
# Done spliting, copy the result in a new file
#


mv $FILE3 $1.pages.pdf

1

Дякую за чудову довідку. Я був у подібному питанні, але хотів поділитися тим, що працювало на мене.

У мене був ландшафтно-орієнтований таблоїд pdf з портретно орієнтованим текстом лише зліва. По суті, у 2-х таблоїдах відсутній вміст у правій частині сторінки. Аналогічна відправна точка, але таблоїд - 792 × 1224 (портрет), 1124 x 792 (пейзаж), а визначення точки, необхідної мені для 1/2 таблоїду, становила 612 х 792 балів.

"C:\Program Files\gs\gs9.10\bin\gswin64c.exe" -o left2.pdf -sDEVICE=pdfwrite -g6120x7920 -c "<</PageOffset [0 0]>> setpagedevice" -f "RFP.pdf"

Отримав потрібний мені вміст у портреті 8,5 x 11, набагато більш читабельному.


0

Я розумію, що PDF-файл, що містить дві сторінки (поруч на одному аркуші), потрібно перетворити на одну сторінку на аркуші, в результаті чого вийде два аркуші PDF-файлу. Іншими словами, якщо на 15 аркушах є тридцять сторінок, нам потрібно перетворити PDF-файл у PDF-файл із тридцяти аркушів, кожен із яких показує одну сторінку. Якщо це проблема, я використав Adobe "acrobat XI PRO" інструмент для вилучення сторінок ", вказавши номери сторінок від 1 до 30


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.