Перетворити 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.