Конвертировать PDF 2 стороны на страницу в 1 сторону на страницу

11

Как я могу преобразовать PDF с 2 сторон на страницу в 1 сторону на страницу?

user13910
источник
Это абсолютно безумно! Нет ли способа изменить параметры страницы в PDF, чтобы он был односторонним, а не двусторонним?
Натан Феллман
@ Натан Феллман: Сумасшедший, да. Но сумасшедшие вещи иногда доставляют вам массу удовольствия ;-)
Курт Пфайфл
Возможный дубликат Как я могу разделить страницы PDF по центру?
Skippy le Grand Gourou
@SkippyleGrandGourou Я не понимаю, как этот вопрос связан. Разве вопросы не пытаются сделать две разные вещи со страницами?
Бен Н
@BenN: Оба вопроса спрашивают, как «создать две новые страницы из существующей одной страницы», чтобы процитировать другую. Ответ с наибольшим количеством голосов - это почти копия пасты.
Скиппи ле Гран Гуру

Ответы:

22

ОК, проблема уже была решена с помощью Acrobat (полная версия, а не Reader). Но что делать, если у вас нет доступа к Acrobat? Можно ли это сделать с помощью Ghostscript и pdftk?

Как решить эту проблему с помощью Ghostscript ...

... и ради удовольствия, давайте не будем использовать входной файл со страницами "удвоение", а файл с "тройным повышением". На самом деле, я получил один такой PDF сегодня по электронной почте. Это была листовка, сложенная в схеме Лепорелло . Размер листа был A4 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 точек на дюйм. Следовательно, умножьте на 10, чтобы получить соответствие для PageOffset.
  • -c "..............:просит Ghostscript обработать данный фрагмент кода PostScript непосредственно перед основным входным файлом (который должен следовать -f).
  • <</PageOffset ....:устанавливает смещение изображения страницы на носителе. (Конечно, для левых страниц сдвиг [0 0]не имеет реального эффекта.)
  • -f ...............: обработать этот входной файл.

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

Вот этот:

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

Output file: right-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,67х595.

Результат:

+--------+  +--------+  +--------+  +--------+  +--------+  +--------+   ^
|        |  |        |  |        |  |        |  |        |  |        |   |
|   1    |  |   2    |  |   3    |  |   4    |  |   5    |  |   6    |   |
|        |  |        |  |        |  |        |  |        |  |        | 595 pt
|        |  |        |  |        |  |        |  |        |  |        |   |
|        |  |        |  |        |  |        |  |        |  |        |   |
|        |  |        |  |        |  |        |  |        |  |        |   |
+--------+  +--------+  +--------+  +--------+  +--------+  +--------+   v
< 280 pt >  < 280 pt >  < 280 pt >  < 280 pt >  < 280 pt >  < 280 pt > 
Курт Пфайфл
источник
1
Черт возьми, потрясающее искусство прямо здесь!
Ivo Flipse
Это хорошо сработало для меня, но мне пришлось установить PageOffset на отрицательное число, чтобы получить другие разделы.
Джончан
Вы можете использовать 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
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 cat cat комбинированный.pdf

Примечание: если вы скопируете файлы в «C: \», это не будет работать в Win 7 из-за разрешений безопасности. Если у вас нет D: \, создайте каталог «C: \ x» для завершения операции.

Эти результаты обычно были бы достаточно хорошими. Тем не менее, есть еще два дополнительных шага для улучшения вывода.

  • (необязательный последний шаг 1) На этом этапе документ огромен (мой документ увеличен с 7 МБ до 80 МБ), поэтому вы можете уменьшить размер файла, используя:
    • "Advanced..PDF Optimizer", или:
    • «Advanced..Preflight» с настройкой «Совместимо с Acrobat 5».
  • (необязательный последний шаг 2) Все страницы имеют разные размеры. Повторите обрезку на всех страницах, чтобы все было одинакового размера.
Контанго
источник
3

Просто была такая же проблема. Я наткнулся на briss, Java-инструмент с открытым исходным кодом для разделения и обрезки PDF-страниц:

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

Это хорошо сработало для меня в Linux, хотя пользовательский интерфейс не совсем тривиален. Он даже работал с PDF с некоторыми страницами разного размера!

Матиас
источник
2

Вы можете продублировать документ, а затем обрезать страницы, чтобы в одном файле отображались только четные номера страниц, а в другом - только нечетные номера страниц. Затем разбейте файлы на отдельные страницы и рекомбинируйте, чтобы создать один документ с одной стороной на странице ...

Вы можете сделать это с помощью ряда методов, например:

  1. Используйте инструмент обрезки Adobe Acrobat , чтобы обрезать одну сторону двойной страницы и применить обрезку ко всем страницам.
  2. Разделите файлы на отдельные страницы, используя команду «burst» в pdftoolkit
  3. Переименуйте файлы последовательно, используя инструмент переименования файлов (например, ReNamer )
  4. Перекомбинируйте страницы с помощью команды 'cat' в pdftoolkit
pelms
источник
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
mronkko
источник
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

RN SONI
источник