Попытайтесь установить GRUB2. Сам GRUB2 ничего не может решить (хотя он мог бы), но сам процесс установки может решить Вашу проблему. Как вознаграждение, Вы получаете последнюю и самую большую версию GRUB с любыми великолепными преимуществами, которые может повлечь за собой новая версия (и решение проблемы?)
В ударе:
for f in *.jpg; do
convert ./"$f" ./"${f%.jpg}.pdf"
done
При использовании только файлов изображений, чем, возможно, требуется использовать Архив Комиксов (.cbr, .cbz, .cbt, .cba, .cb7)
Это намного более гибко, чем PDF.
Under Linux you can use software like Comix, Evince, Okular and QComicBook.
https://secure.wikimedia.org/wikipedia/en/wiki/Comic_book_archive
Крошечный сценарий добился бы цели. (протестированный с ksh88 на Солярисе 10)
script.ksh
#!/bin/ksh
[[ $# != 1 ]] && exit 255 # test for nr of args
pdfname=$(sed -e 's/\(.*\)\.jpg/\1\.pdf/' <(echo $"1")) #replace *.jpg with *.pdf
convert "$1" $pdfname
Затем можно работать find
выполнить сценарий:
find dir -name image\*.jpg -exec /bin/ksh script.ksh {} \;
Отметьте это оба script.ksh
и find
команда, которую я дал Вам, мог бы иметь различные синтаксисы depeding на ОС и оболочке, которую Вы используете.
pdfname=${1%.*}.pdf
заменяет расширение файла pdf
. Тот метод намного более прост и работает, даже если имя файла содержит специальные символы. На связанной ноте добавьте двойные кавычки вокруг подстановок переменных.
– Gilles 'SO- stop being evil'
24.01.2012, 19:51
Вот путь, который комбинирует лучшее из вышеупомянутых предложений в простую, эффективную, устойчивую командную строку:
find /path/to/files -iname '*.jpg' -exec mogrify -format pdf {} +
Это хорошо работает с именами файлов, которые начинаются с a -
или содержите пробелы. Отметьте использование -iname
который является нечувствительной к регистру версией -name
таким образом, это продолжит работать .JPG
точно так же как .jpg
.
Это использует find
получить список файлов вместо оболочки globbing с *.jpg
подстановочный знак, который может приводить к 'Списку аргументов слишком долго' ошибка в некоторых системах. Хотя как @enzotib точки в комментарии, поведение использования globbing в для цикла отличается, чем для аргументов команды.
Кроме того, find
обработает подкаталоги, тогда как оболочка globbing не будет, если у Вас, окажется, не будет определенных для оболочки функций как **/*jpg
рекурсивный globbing синтаксис в zsh.
Править: Я думал, что добавлю другую полезную опцию find
то, что я думал после чтения комментария @IlmariKaronen о повторном выполнении команды и только преобразовании файлов, которые изменились начиная с первого показа.
На первичной обработке Вы можете touch
файл метки времени после преобразования закончен.
find /path/to/files -iname '*.jpg' -exec mogrify -format pdf {} +; touch timestamp
Затем добавьте -newer timestamp
к find
выражение для работы на подмножество файлов, измененное в последний раз время которых является более новым, чем файл метки времени. Продолжите обновлять файл метки времени после каждого выполнения.
find /path/to/files -iname '*.jpg' -newer timestamp -exec mogrify -format pdf {} +; touch timestamp
Это - простой способ избежать необходимости обращаться к Make-файлу (если Вы уже не используете один), и это - другое серьезное основание, почему это стоит использовать find
когда это возможно... это имеет универсальную выразительность, оставаясь кратким.
более быстрый но необычный синтаксис:
parallel convert '{} {.}.pdf' ::: *.jpg
Выполнения параллельно (использующий https://www.gnu.org/software/parallel/). Я не заметил многопоточности в convert
все же, который ограничил бы эффективное распараллеливание. Если это - Ваше беспокойство, посмотрите в комментарии ниже, чтобы метод гарантировал, что никакая многопоточность не происходит.
parallel
) путем установки переменной среды MAGICK_THREAD_LIMIT=1
.
– zebediah49
04.09.2015, 06:58
Можно использовать mogrify
команда для этого. Обычно, это изменяет оперативные файлы, но при преобразовании форматов, это пишет новый файл (просто изменяющий расширение для соответствия новому формату). Таким образом:
mogrify -format pdf -- *.jpg
(Как enzotib's ./*.jpg
, --
препятствует тому, чтобы любые странные имена файлов были интерпретированы как переключатели. Большинство команд распознает --
означать "поиск остановки опций в этой точке".)
mogrify
вместо convert
. Это будет работать на 100 файлов, но использующий globbing с *.jpg
не масштабируется в тысячи файлов; это может быть сделано путем объединения команды в простой остроте с find
.
– aculich
31.01.2012, 01:08
*.jpg
и *.png
файлы к синглу *.pdf
? Обратите внимание, что они - пронумерованные файлы (например, 1.jpg 2.png 3.png 4.jpg
) и тот порядок должен быть поддержан/сохранен в выводе PDF.
– nutty about natty
21.07.2013, 10:40
*.jpg
в *.png
на шаге один, и выполнение эквивалента Вашего ответа на шаге 2...
– nutty about natty
21.07.2013, 10:46
Я использовал следующий make-файл для чего-то подобного:
SVG = $(wildcard origs/*.svg)
PNG = $(patsubst origs/%.svg,%.png,$(SVG))
all: $(PNG)
%.png: origs/%.svg
convert -resize "64x" $< $@
clean:
rm $(PNG)
Теперь я могу просто работать make
и я получаю png файлы для каждого svg файла, который находится вокруг.
Править
Согласно просьбе:
origs/foo.svg
становится foo.png
)all: $(PNG)
определяет, что цель "все" зависит от всего PNGs %.png: origs/%.svg
определяет, thethe $X.png файла зависит от origs/$X.svg и может быть сгенерирован путем вызова convert ... $< $@
. $<
зависимость и и $@
целевое имяmake
снова повторно преобразует их и только их, PDFs, которые изменились. принцип "качество на риск покупателя"
– Ilmari Karonen
24.01.2012, 22:04
make
кажется немного сверхсложным, когда простая острота добьется цели.
– aculich
31.01.2012, 01:06
find
таким образом, Вы не должны обращаться к Make-файлу.
– aculich
01.02.2012, 07:23
https://gitlab.mister-muffin.de/josch/img2pdf
Во всем вовлечении предлагаемых решений ImageMagick данные JPEG полностью декодируются и повторно закодировали. Это приводит к потере при перезаписи, а также производительности "десять - сотен" времен, хуже, чем 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
. По моему скромному мнению, этот ответ заслуживает большего количества upvotes. Действительно, convert
сбои здесь, img2pdf
проходит такой тест и даже включает много опций установить размер изображения, размер страницы, и т.д. подстроить сгенерированный PDF к Вашим потребностям.
– Stéphane Gourichon
21.07.2016, 10:14
img2pdf
доступно в Ubuntu 16.04 обычные репозитории, никакая потребность в ручных операциях с pip
там, и Вы сохраняете преимущество обновлений.
– Stéphane Gourichon
21.07.2016, 10:15
Я получил решение с imagemagick для конвертации и parallel для ускорения процесса конвертации:
ls *.JPEG |parallel convert -density 200 -resize 496X646 -quality 100 {} ../{.}.PDF
Утилита MacOS SIPS
В MacOS (Sierra) встроенная утилита командной строки Apple sips
обеспечивает полный доступ ко всем утилитам Apple для работы с растровыми изображениями; это включает преобразование jpg
в pdf
.
Например, из существующего изображения с низким разрешением/малого размера jpg
'cat.jpg'
(размером 8401 байт) следующая командная строка создает 'cat.pdf'
, без изменения растрового разрешения и минимального увеличения размера файла:
$ sips -s format pdf cat.jpg --out 'cat.pdf' 1>/dev/null 2>&1
$ ls -l cat.*
-rw-r--r--@ 1 <user redacted> <group redacted> 8401 Jun 18 07:06 cat.jpg
-rw-r--r--+ 1 <user redacted> <group redacted> 10193 Jun 18 07:22 cat.pdf
Преобразование в формат растрового изображения Adobe PSD
Аналогичный sips
Идиома создает файлы, совместимые с Adobe *.psd
$ sips -s format psd cat.jpg --out 'cat.psd' 1>/dev/null 2>&1
$ ls -l cat.jpg cat.psd
-rw-r--r--@ 1 Administration staff 8401 Jun 18 07:06 cat.jpg
-rw-r--r--+ 1 Administration staff 350252 Jun 18 07:37 cat.psd
Однако обратите внимание на 30-кратное увеличение размера файла, связанное с использованием растрового формата Adope psd
.
Книжное производство При крупномасштабном производстве книг, включающем сотни изображений, поставляемых в различных форматах, для меня удобной идиомой командной строки было использование утилит ImageMagick
для создания чистых файлы растровых изображений в формате png
(с удаленными метаданными и цветовыми профилями), затем используйте sips
для восстановления единого набора цветовых профилей и/или комментариев, и используйте sips
также для создания окончательных выходных файлов (чаще всего файлы *.png
, *.psd
или *.pdf
).
Один из самых простых способов конвертировать несколько файлов — перейти в каталог файлов в терминале Linux и ввести:
$ convert *.png mypdf.pdf
-
дайте проблемы, иначе. – enzotib 24.01.2012, 12:48mogrify
намного меньше вводит. См. мой ответ. – cjm 24.01.2012, 14:04