Как я могу преобразовать PDF с 2 сторон на страницу в 1 сторону на страницу?
7 ответов
ОК, проблема уже была решена с помощью 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 >
@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) Все страницы имеют разные размеры. Повторите обрезку на всех страницах, чтобы все было одинакового размера.
Просто была такая же проблема. Я наткнулся на briss, Java-инструмент с открытым исходным кодом для разделения и обрезки PDF-страниц:
http://sourceforge.net/projects/briss/
Это хорошо сработало для меня в Linux, хотя пользовательский интерфейс не совсем тривиален. Он даже работал с PDF с несколькими страницами разного размера!
Вы можете продублировать документ, а затем обрезать страницы, чтобы в одном файле отображались только четные номера страниц, а в другом - только нечетные номера страниц. Затем разбейте файлы на отдельные страницы и рекомбинируйте, чтобы создать один документ с одной стороной на странице ...
Вы можете сделать это с помощью ряда методов, например:
- Используйте инструмент обрезки Adobe Acrobat , чтобы обрезать одну сторону двойной страницы и применить обрезку ко всем страницам.
- Разделите файлы на отдельные страницы, используя команду «burst» в pdftoolkit
- Переименуйте файлы последовательно, используя инструмент переименования файлов (например, ReNamer)
- Перекомбинируйте страницы, используя команду 'cat' в pdftoolkit
Я использую следующий скрипт для обработки отсканированных книг на 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
Спасибо за отличную ссылку. Я был в подобной проблеме, но хотел поделиться тем, что работало для меня.
У меня был альбомно-ориентированный 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, гораздо более читаемом.
Что я понимаю, так это то, что PDF-файл, показывающий две страницы (бок о бок на одном листе), необходимо конвертировать в одну страницу на листе, в результате чего получается два листа PDF-файла. Другими словами, если на 15 листах всего тридцать страниц, нам нужно преобразовать PDF-файл в PDF-файл из тридцати листов, каждый из которых показывает одну страницу. Если это проблема, я использовал Adobe Acrobat XI PRO "инструмент извлечения страниц", указав номера страниц от 1 до 30