Как объединить 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
4

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

haytona
источник
Это отличный инструмент, и вот как это сделать: unixblogger.com/how-to-easily-merge-pdf-documents-under-linux
Розамунда
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 для предложения растеризации (возможного) векторного изображения. Это не путь.
Марко