Объединение изображений PNG в один файл PDF [закрыто]

93

Как .pngв Unix объединить несколько файлов в один PDF-файл?

Twidizle
источник

Ответы:

152

Просматривая документацию по ImageMagick, это может быть очень просто:

convert 1.png 2.png myfile.pdf

Если это не сработает, PDFjam утверждает, что может решить вашу проблему.

Джеремайя Уиллкок
источник
6
Это восхитительно. Так просто. Он автоматически изменяет размер изображений и всего остального ... Мне нравится открытый исходный код.
Натан Уоллес
Есть ли способ контролировать качество документа или размер полученного PDF-файла? Мне нужно загрузить некоторые документы с максимальным размером файла 2,5 МБ. Я пробовал использовать эту -qualityопцию, но размер файла всегда составляет ~ 9,5 МБ.
arielnmz
Можно ли добавлять файлы изображений к существующему PDF?
Kiran Reddy
3
Преобразование всех файлов в папке указанного типа с помощьюconvert *.jpg file.pdf
haakym
2
@arielnmz, вы можете сжать файл с помощью параметров -compress jpeg -quality 50. Смотрите мой ответ
Michael Schmid
37

Если я хочу объединить несколько сканов в один файл PDF, я делаю следующее:

pdfjoin --a4paper --fitpaper false --rotateoversize false scan01.png scan02.png

Это дает вам PDF-документ с размером страницы DIN-A4, где каждый pngфайл центрируется на своей странице. Изображения, которые слишком велики для одной страницы DIN-A4, пропорционально изменяются, чтобы поместиться на одной странице. Маленькие изображения не изменяются (не увеличиваются).

Вы должны назвать все pngфайлы в командной строке, но вы также можете использовать подстановочные знаки, например, чтобы объединить все файлы png в текущем каталоге:

pdfjoin --a4paper --fitpaper false --rotateoversize false *.png

Команда pdfjoinявляется частью PDFjam, как упоминалось в ответе Джереми Уиллкока. Таким образом, вам, скорее всего, придется установить пакет с именем pdfjamили texlive-extra-utilsс менеджером пакетов вашего дистрибутива. PDFjam может использовать pngфайлы в качестве входных данных, начиная с версии 2.07, выпущенной в 2010-11-13.

Паскаль Канифоль
источник
похоже, что pdfjoin исчез, и теперь есть только другой инструмент под названием pdfunite, который объединяет только несколько файлов PDF в один ...
Грегор
1
@Gregor Почему ты говоришь, что pdfjoin больше нет?
Паскаль Розин,
@Pascal_Rosin не смог найти его ни в Debian, ни в репозиториях Arch ...
Грегор,
2
pdfjoinдоступен в texlive-extra-utilsпакете на некоторых платформах. Вы всегда можете установить его из исходного кода.
Махмуд Аль-Кудси
11

ImageMagick «S новообращенный инструмент мои предпочтения.

Программа convert входит в набор инструментов ImageMagick. Используйте его для преобразования между форматами изображений, а также для изменения размера изображения, размытия, обрезки, удаления пятен, дизеринга, рисования, отражения, объединения, повторной выборки и многого другого.

convert [input-option] input-file [output-option] output-file`

Если вы хотите, чтобы файлы изображений (и, следовательно, их качество и размер) не менялись, просто поместите вокруг них контейнер PDF:

convert In.png In-2.png Someother-*.png Result.pdf

Если вы хотите иметь файл меньшего размера, и вы не против потери качества, вы можете сначала преобразовать их в формат JPEG. (ImageMagick также поддерживает изменение уровня сжатия PNG, но обычно ваши входные файлы уже используют самый высокий уровень.)

convert 1.png 2.png -compress jpeg -quality 50 Result.pdf

Используйте для параметра значение от 0 до 100 quality.

Кроме того, вы можете добиться меньшего размера файла (и качества), передискретив изображения до определенного разрешения.

convert *.png 2.png -resample 300 Result.pdf

Значение resampleотносится к количеству пикселей на дюйм. ImageMagick считывает исходную плотность из EXIF-части входных изображений, возвращаясь к 72 dpi. Вы можете использовать densityпараметр, чтобы установить собственное разрешение для входных изображений.

Вы , конечно , можете также комбинировать compress, qualityи resampleпараметры.

Майкл Шмид
источник
Кто-нибудь знает, как отменить операцию?
Андрей Чиоара
Файлы изображений не удаляются, но вы можете скопировать их для вашего спокойствия. У меня также была проблема stackoverflow.com/questions/42928765/…, которую нужно было решить, прежде чем она сработала.
Audrius Meskauskas 04
Любой, кто обнаруживает проблему с преобразованием изображений в pdf и видит ошибку с сообщением «преобразование запрещено», пожалуйста, проверьте этот ответ: askubuntu.com/questions/1127260/imagemagick-convert-not-allowed
Tuhin
Недавно imagemagick по умолчанию запрещает преобразование PDF. См. Этот вопрос, если вы столкнулись с этим, чтобы знать, как изменить эту политику. stackoverflow.com/questions/52998331/…
user2565010
5

Я украл это, но это решение, которое я использовал от Джереми Уиллкока и другого сайта ответов. Пока не копаюсь в истории. Я солгал, я солгал. (Tully @ https://askubuntu.com/a/626301 )
Мне нужен был достаточно маленький файл для отправки по электронной почте.

Чтобы объединить изображения в PDF (из рабочего каталога, используйте командную строку:

user@box:/home/user/scans/:$ 
convert 1.png 2.png convertoutput.pdf

Чтобы сжать с помощью ghostscript после объединения (я почти использовал систему по умолчанию kde):

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default \
   -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dCompressFonts=true \
   -r150 -sOutputFile=output.pdf convertoutput.pdf

В моем файле было 14 изображений (19 МБ после преобразования, gs сделала его 1,6 МБ, качество все еще отличное). Выходной файл называется output.pdf.

pctech101
источник
Вы можете сжать файл напрямую с помощью convert , используя параметры -compress jpeg -quality 50. Смотрите мой ответ
Майкл Шмид
@MichaelSchmid Сжатие с помощью convert не так эффективно. Это только снижает качество jpeg, тогда как решение GS меняет разрешение. Если вы попробуете это сделать с изображением с высоким разрешением, вы увидите, насколько велика разница в размере, даже если вы выберете чрезвычайно низкое качество jpg.
MAK
Да, повторная выборка действительно может быть более эффективной, чем сжатие JPEG. И ImageMagick также поддерживает это. Я добавил эту опцию в свой ответ.
Майкл Шмид,