У меня есть каталог изображений:
path/to/directory/
image01.jpg
image02.jpg
...
и хотел бы преобразовать его в один файл PDF:
path/to/directory.pdf
Это то, что мне удалось закодировать до сих пор:
#!/bin/bash
echo Directory $1
out=$(echo $1 | sed 's|/$|.pdf|')
echo Output $out
mkdir tmp
for i in $(ls $1)
do
# MAC hates sed with "I" (ignore case) - thanks SO for the perl solution!
# I want to match "jpg, JPG, Jpg, ..."
echo $1$i $(echo "tmp/$i" | perl -C -e 'use utf8;' -pe 's/jpg$/pdf/i')
convert $1$i $(echo "tmp/$i" | perl -C -e 'use utf8;' -pe 's/jpg$/pdf/i')
done
pdftk tmp/*.pdf cat output $out
rm -rf tmp
Итак, идея заключалась в том, чтобы преобразовать каждое изображение в файл PDF с помощью imagemagick и использовать pdftk для объединения его в один файл. Благодаря именованию файлов мне не нужно беспокоиться о порядке.
Поскольку я новичок в этом, я уверен, что можно сделать много уточнений:
- перебирать только файлы изображений в каталоге (если есть какой-то Readme.txt,...)
- включая расширения png, jpeg, ...
- использование завершающего "/" не элегантно, я администратор
- и т.п.
Однако в настоящее время моя главная проблема заключается в том, что в некоторых случаях мои каталоги и файлы изображений содержат пробелы в своих именах. Затем цикл for выполняет итерацию по подстрокам имени файла, и я предполагаю, что строка с convert также завершится ошибкой. Я пробовал некоторые вещи, но пока не преуспел, и надеюсь, что кто-то сможет мне помочь здесь. Если у кого-то есть идеи по решению проблем, которые я перечислил выше, я тоже был бы очень рад их услышать.