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


43

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

convert pdf1.pdf pdf2.pdf temp.pdf

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

Ответы:


53

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

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=temp.pdf pdf1.pdf pdf2.pdf

Работал отлично и тоже быстро - намного быстрее, чем использование ImageMagick с флагом -density.
Брионий

Это должен быть правильный ответ. Не то, чтобы ImageMagick не работал; это тоже работает. Но, как заметил @Brionius, gs работает намного быстрее, а качество получаемого PDF- файла на высшем уровне.
Джагтеш Чадха

Обратите внимание, что вы можете использовать * .pdf вместо списка pdf1.pdf и pdf2.pdf в конце этой команды, чтобы преобразовать все pdf в папке в один pdf.
Колин Д

У меня были некоторые проблемы со шрифтом, некоторые страницы теряют свой шрифт. Есть ли способ, которым я могу выбрать это?
Злой Смиртный

20

Команда преобразования 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.

На Ubuntu pdftk не было проблем с установкой из apt, и он сделал свое дело великолепно. Я использовал ImageMagick для сшивания PDF-файлов и раньше с большим успехом, но поскольку он сначала растеризует PDF-файлы (понятно - он не работает с векторами), он не выглядит так хорошо для большинства текстовых документов. Но pdftk работал отлично - спасибо за предложение.
Iguananaut

Отлично ... спасибо
Дэн Ортега

Давайте добавим, что pdftk работает лучше, чем ghostcript.
Дан Ортега

18

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

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

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


5
Примечание о синтаксисе всех ваших PDF, вы можете опустить команду sub-ls:convert -density 150 *.pdf output.pdf
Джош

'* .pdf' и '$ (ls -rt * pdf)' могут привести к разным выводам.
Shantanoo

8

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

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


0

Я не смог найти никакого способа объединить два файла 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.


2
-1 для предложения растеризации (возможного) векторного изображения. Это не путь.
Марко
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.