11

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

7 ответов7

21

ОК, проблема уже была решена с помощью 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 > 
3

@peims, спасибо. Вот пошаговая версия вашего метода. Я попробовал это на файле, который я хотел преобразовать для моего Kindle DX, и он отлично работает:

  • Используйте полную версию Acrobat v9, чтобы обрезать левую часть страницы и сохранить ее как «left.pdf»:
    • Используйте инструмент кадрирования, чтобы отметить левую сторону страницы.
    • Щелкните правой кнопкой мыши и выберите "Установить Cropbox".
    • Выберите "Документ".Обрезать страницы »и применить обрезку ко всему документу.
  • Повторите с правыми страницами, сохраните как «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 МБ), поэтому вы можете уменьшить размер файла, используя:
    • «Дополнительно ..PDF Optimizer ", или:
    • «Дополнительно ..Предпечатная проверка »с настройкой" Совместимо с 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
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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .