2010-11-20 3 views
6

Как я могу использовать оба ls и конвертировать для преобразования всех файлов изображений в каталог в pdf? Также мне нужно поместить файлы в определенном порядке, например, такие файлы, как AA1.png, AA11.png, должны соблюдать этот логический порядок.Bash конвертировать в pdf

Обновление (ls) и (конвертировать) доступны, но как я могу использовать их вместе?

+0

ли вы имеете в виду отдельные файлы PDF или один PDF? – Orbling

+0

Мне нужен один pdf – danidacar

ответ

7

Чтобы преобразовать в один PDF можно сделать в одной команде:

convert -compress jpeg *.jpg my-jpegs.pdf 

Не забудьте включить -compress jpeg флаг, или он будет сохранять изображения в несжатом и в результате массированного PDF.

ImageMagick (через конвертировать) требует Ghostscript (gs), который должен быть установлен для обработки PDF-файлов. Я считаю. Остерегайтесь проблем с памятью, если вы одновременно добавляете много JPEG.

Что касается логического заказа, вы можете использовать ls в сочетании с convert, чтобы получить список на заказ.

Что-то вдоль линий:

convert -compress jpeg `ls *.png` my-jpegs.pdf 

См ls --help для различных опций сортировки.

+0

Хороший совет, но проблема сортировки - проблема. – danidacar

+0

Правильно, я добавил больше для вашей сортировки. – Orbling

+0

'ls' в backticks не делает ничего полезного сам по себе. Если вы добавите полезную опцию сортировки, это может быть оправдано. – tripleee

0
for image in `ls *.png`; do 
    # call convert or whatever here 
    convert $image `basename $image .png`.pdf 
done 
+0

Мне нужен один файл в формате PDF со всеми изображениями по имени (логический порядок image1.png, image2.png, ... image11.png) – danidacar

+1

«ls' в backticks - это антипаттерн. 'для изображения в * .png; do ... 'является более простым и правильным. – tripleee

4

https://gitlab.mister-muffin.de/josch/img2pdf

Во всех предложенных решений, связанных с ImageMagick (т.е. convert), данные JPEG, получает полностью декодируется и повторно кодируется. Это приводит к generation loss, а также к производительности в десятьсот раз больше, чем img2pdf.

+0

Я не вижу лицензии на этот код. Вы сами пишете? Это MIT, GPL и т. Д.? – Orbling

+0

Я этого не писал. Его адрес электронной почты автора скрыт в его test_comp.sh, если вы хотите связаться с ним. –

+0

Не особо, просто подумал, что он неприменим вообще без лицензии. Какой позор, так как это, без сомнения, полезно. – Orbling

1

Если у вас есть много файлов:

convert -limit memory 1 -limit map 1 *.jpg foo.pdf 

see here

или со сжатием

convert -limit memory 1 -limit map 1 -compress jpeg -quality 85 *.jpg foo.pdf