Как объединить PDF-файлы с помощью Imagemagick (проблема с разрешением)

49381

Когда я пытаюсь объединить два файла .pdf с помощью Imagemagick

convert pdf1.pdf pdf2.pdf temp.pdf 

Полученный файл temp.pdf имеет очень низкое разрешение. Как сохранить разрешение таким же, как в исходных файлах?

36

6 ответов на вопрос

45

Барнс прав, но если pdftk не работает, попробуйте ghostscript.

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=temp.pdf pdf1.pdf pdf2.pdf 
Работал отлично и тоже быстро - намного быстрее, чем использование ImageMagick с флагом -density. Brionius 9 лет назад 0
Это должен быть правильный ответ. Не то, чтобы ImageMagick не работал; это тоже работает. Но, как заметил @Brionius, gs * намного * быстрее, а качество полученного pdf на высшем уровне. Jagtesh Chadha 9 лет назад 0
Обратите внимание, что вы можете использовать * .pdf вместо списка pdf1.pdf и pdf2.pdf в конце этой команды, чтобы преобразовать все pdf в папке в один pdf. Colin D 6 лет назад 0
17
Richard

Команда преобразования Imagemagick обычно используется для преобразования файлов изображений из одного формата в другой, и в этом случае возможно, что она фактически выполняет внутреннее преобразование сортов перед выводом двух «изображений» (PDF-файлов) в один файл.

Я бы посоветовал вам вместо этого использовать PDF Toolkit (pdftk) http://www.accesspdf.com/pdftk/

Из примеров на сайте это должно быть так просто:

pdftk pdf1.pdf pdf2.pdf cat output temp.pdf 
Я работаю на OS X 10.6.1, и я попытался установить pdftk через Macports. Кажется, что pdftk устарела на Mac, установка не будет завершена. Итак, я попытался сделать это с помощью Imagemagick. 15 лет назад 0
На Ubuntu pdftk не было проблем с установкой из apt, и он отлично справился с задачей. Я использовал ImageMagick для сшивания PDF-файлов и раньше с большим успехом, но поскольку он сначала растеризует PDF-файлы (понятно - он не работает с векторами), он не выглядит так хорошо для большинства текстовых документов. Но pdftk работал отлично - спасибо за предложение. Iguananaut 11 лет назад 0
16
juda

Если каждый файл, который вы хотите объединить, находится в одной папке:

convert -density 150 $(ls -rt *pdf) output.pdf 

аргумент -density 150сохраняет качество объединенных PDF-файлов.

Примечание о синтаксисе всех ваших PDF, вы можете пропустить команду sub-ls: `convert -density 150 * .pdf output.pdf` Josh 10 лет назад 4
'* .pdf' и '$ (ls -rt * pdf)' могут привести к разным выводам. shantanoo 7 лет назад 0
7
Leslie Pajuelo

Я всегда забываю, как это сделать, и сначала найду этот вопрос, когда буду искать.

convert -density 600 file1.pdf file2.pdf -resize 50% new.pdf 

Связанный пример имеет плотность 144, однако, она никогда не была достаточно высокой, чтобы не выглядеть пиксельной.

http://web.archive.org/web/20130311071316/http://studio.imagemagick.org/pipermail/magick-users/2009-September/022958.html

Извините, ссылка сейчас мертва. Sablefoste 9 лет назад 0
3
haytona

Если вы используете Linux, вы также можете попробовать poppler, который обеспечивает pdfuniteконкатенацию без манипулирования разрешением.

0
Barry Dmytro

Я не мог найти способ объединить два файла PDF, сохранив хорошее разрешение и текст без изменений, но я нашел способ преобразовать его в файл PNG с высоким разрешением.

pdftoppm -f 1 -l 1 -aa yes -aaVector yes -png -r 300 page.pdf > tmp1.png pdftoppm -f 2 -l 2 -aa yes -aaVector yes -png -r 300 page.pdf > tmp2.png convert tmp1.png tmp2.png +append -quality 100 page.png 

Это займет первые две страницы файла page.pdf и объединит их в файл png с высоким разрешением.

Изменение последней строки на

convert tmp1.png tmp2.png +append -quality 100 page.pdf 

приведет к выводу документа в формате pdf, как я позже выяснил после того, как возился с pngtopnm, pnmtops, ps2pdf.

-1 для предложения растеризовать (возможное) векторное изображение. Это не путь. Marco 12 лет назад 2

Похожие вопросы