Я хочу конвертировать некоторые файлы из JPEG в PDF. Я использую следующую команду.
$ convert image1.jpg image1.pdf
Но у меня есть 100 изображений. Как мне преобразовать их все в соответствующие PDF-файлы?
Я пытался
$ convert image*.jpg image*.pdf
Не работает
command-line
wildcards
conversion
imagemagick
Пратик Деогхаре
источник
источник
Ответы:
В Баш:
источник
-
проблем, в противном случае.mogrify
намного меньше печатает. Смотри мой ответ.Вы можете использовать
mogrify
команду для этого. Обычно он изменяет файлы на месте, но при преобразовании форматов записывает новый файл (просто изменяя расширение в соответствии с новым форматом). Таким образом:(Как и в случае с enzotib
./*.jpg
, the--
предотвращает интерпретацию любых странных имен файлов как переключателей. Большинство команд распознают--
это как «перестаньте искать опции на этом этапе».)источник
mogrify
вместоconvert
. Это будет работать для 100 файлов, но использование globbing с*.jpg
не масштабируется до тысяч файлов; это можно сделать, объединив команду в простой однострочник сfind
.*.jpg
и*.png
файлы в один*.pdf
? Обратите внимание, что они являются пронумерованными файлами (например,1.jpg 2.png 3.png 4.jpg
), и этот порядок должен быть сохранен / сохранен в выводе pdf.*.jpg
в*.png
в шаге один и выполнение эквивалента вашего ответа в шаге 2 ...более быстрый, но необычный синтаксис:
Работает параллельно (используя https://www.gnu.org/software/parallel/ ). Я еще не заметил многопоточности
convert
, которая ограничивала бы эффективное распараллеливание. Если это ваша проблема, см. В комментарии ниже метод, обеспечивающий отсутствие многопоточности.источник
parallel
), установив переменную средыMAGICK_THREAD_LIMIT=1
.https://gitlab.mister-muffin.de/josch/img2pdf
Во всех предлагаемых решениях с использованием ImageMagick данные JPEG полностью декодируются и перекодируются. Это приводит к потере генерации , а также к снижению производительности в 10–100 раз
img2pdf
.Может быть установлен при
pip img2pdf
условии, что у вас есть зависимости (например,apt-get install python python-pil python-setuptools libjpeg-dev
илиyum install python python-pillow python-setuptools
).источник
convert some.jpg -format pdf -compress jpeg generated.pdf ; pdfimages -j generated.pdf generated.pdf ; diff -sq some.jpg generated.pdf-000.jpg
. ИМХО этот ответ заслуживает большего количества голосов. Действительно,convert
здесь неimg2pdf
проходит , проходит такой тест и даже включает в себя множество опций для установки размера изображения, размера страницы и т. Д., Чтобы точно настроить сгенерированный pdf в соответствии с вашими потребностями.img2pdf
доступно в обычных репозиториях Ubuntu 16.04, нет необходимостиpip
выполнять ручные операции с ними, и вы сохраняете преимущества обновлений.Вот способ, который объединяет лучшие из приведенных выше предложений в простую, эффективную и надежную командную строку:
Он отлично работает с именами файлов, которые начинаются с
-
или содержат пробелы. Обратите внимание, использование-iname
которого является регистронезависимой версией,-name
поэтому она будет работать.JPG
так же хорошо, как и.jpg
.Он используется
find
для получения списка файлов вместо оболочки с использованием*.jpg
подстановочного знака, что может привести к ошибке «Список аргументов слишком длинный» в некоторых системах. Хотя, как указывает @enzotib в комментарии, поведение использования globbing в цикле for отличается от поведения аргументов команды .Кроме того, он
find
будет обрабатывать подкаталоги, в то время как глобальное копирование оболочки не будет происходить, если только у вас не появятся специфические для оболочки функции, такие как**/*jpg
синтаксис рекурсивного глобирования в zsh.РЕДАКТИРОВАТЬ: Я подумал, что добавлю еще одну полезную функцию, о
find
которой я подумал после прочтения комментария @IlmariKaronen о повторном запуске команды и преобразовании только тех файлов, которые изменились с первого запуска.На первом проходе вы можете
touch
получить файл метки времени после того, как преобразование будет завершено.Затем добавьте
-newer timestamp
кfind
выражению для работы с подмножеством файлов, время последнего изменения которых новее, чем у файла отметки времени. Продолжайте обновлять файл меток времени после каждого запуска.Это простой способ избежать необходимости прибегать к Makefile (если вы его еще не используете), и это еще одна веская причина, по которой его стоит использовать,
find
когда это возможно ... он обладает универсальной выразительностью при сохранении краткости.источник
Вы можете сделать это
convert
напрямую. Это можно найти в нижней части сайта ImageMagicks об обработке командной строки .источник
convert *.jpg -adjoin output.pdf
для комбинированного pdfЯ использовал следующий make-файл для чего-то похожего:
Теперь я могу просто запустить
make
и получить png-файлы для каждого svg-файла.редактировать
Как просили:
origs/foo.svg
становитсяfoo.png
)all: $(PNG)
определяет, что цель «все» зависит от всех PNG%.png: origs/%.svg
определяет, что файл $ X.png зависит от origs / $ X.svg и может быть сгенерирован путем вызоваconvert ... $< $@
.$<
это зависимость и и$@
это имя целиисточник
make
повторном вводе будут преобразованы только те PDF-файлы, которые изменились.make
кажется немного сложным, когда простой однострочник сделает свое дело.find
чтобы вам не пришлось прибегать к Makefile.Крошечный сценарий сделает свое дело. (протестировано с ksh88 на Solaris 10)
script.ksh
Затем вы можете запустить,
find
чтобы выполнить скрипт:Обратите внимание, что
script.ksh
иfind
команда, и команда, которую я вам дал, могут иметь разные синтаксисы, зависящие от ОС и используемой вами оболочки.источник
pdfname=${1%.*}.pdf
заменяет расширение файла наpdf
. Этот метод намного проще и работает, даже если имя файла содержит специальные символы. На связанной ноте добавьте двойные кавычки вокруг переменных замен.Утилита MacOS
SIPS
В MacOS (Sierra) встроенная служебная программа Apple для командной строкиsips
предоставляет полный доступ ко всем утилитам растровых изображений Apple; это включает в себя преобразованиеjpg
вpdf
.Например, из существующего низкого разрешения / малого размера
jpg
изображения'cat.jpg'
(размер 8401 байт), следующие параметры командной строки создает'cat.pdf'
, без изменения растрового разрешения и минимального расширения размера файла:Преобразование в
PSD
формат растрового изображенияsips
Adobe. Подобная идиома создает Adobe-совместимые*.psd
файлы.Однако обратите внимание на 30-кратное расширение размера файла, которое сопровождает использование
psd
растрового формата Adope .Изготовление книг При создании крупномасштабной книжной продукции, включающей сотни изображений, которые поставляются в разных форматах, для меня удобной идиомой командной строки было использование
ImageMagick
утилит для создания чистых файлов растровых изображений вpng
формате (со всеми метаданными и цветовые профили раздели выход), а затем использоватьsips
для восстановления единого набора цветовых профилей и / или комментариев, а также использоватьsips
также для создания окончательных выходных файлов (наиболее часто*.png
,*.psd
или*.pdf
файлы).источник
К сожалению,
convert
раньше изображение менялось, поэтому для минимальной потери качества оригинала, которыйjpg
вам нужно использоватьimg2pdf
, я использую следующие команды:1) Это сделать
pdf
файл из каждогоjpg
изображения без потери разрешения или качества:2) Это для объединения
pdf
страниц в одну:3) И наконец, я добавляю текстовый слой OCRed, который не меняет качество сканирования в PDF-файлах, чтобы их можно было искать:
источник
Я получил решение с ImageMagick для преобразования и параллельно, чтобы ускорить процесс преобразования:
источник
Один из самых простых способов конвертировать несколько файлов - перейти в каталог файлов в терминале Linux и набрать:
источник
Если вы используете только файлы изображений, чем, возможно, вы хотели бы использовать архив комиксов (.cbr, .cbz, .cbt, .cba, .cb7)
Это намного гибче, чем PDF.
https://secure.wikimedia.org/wikipedia/en/wiki/Comic_book_archive
источник