Во-первых, я бы порекомендовал не использовать пробелы в именах файлов и использовать достаточно начальных нулей, чтобы файлы в вашем каталоге были в алфавитном порядке.
Я взял это одно изображение:
, продублировали его еще 5 раз и пронумеровали в последовательности:
lena_01.png
lena_02.png
lena_03.png
lena_04.png
lena_05.png
lena_06.png
и поместили в новую папкуНа моем компьютере он называется «test».
Затем, используя ImageMagick 6 со сценариями оболочки Unix bash, я создал цикл в подоболочке, чтобы сохранять промежуточные изображения в формате MIFF: без необходимости сохранения.их индивидуально.Затем я передал вывод в новый конверт, чтобы сохранить в формате PDF.Обратите внимание, что подоболочка обозначается круглыми скобками, окружающими цикл for.
Вот набор команд:
#!/bin/bash
cd
cd desktop/test
arr=(`ls`)
num=${#arr[*]}
numm1=$((num-1))
numpages=`echo "scale=0; ($num+0.5)/2" | bc`
pagenum=1
(
for ((i=0; i<numm1; i=i+2)); do
j=$((i+1))
convert "${arr[$i]}" "${arr[$j]}" -background white -gravity center -append \
-resize 595x842 -extent 595x842 +repage \
-font arial -pointsize 18 -undercolor white -fill black \
-gravity north -annotate +0+10 "${arr[$i]}" -annotate +0+431 "${arr[$j]}" \
-gravity south -annotate +0+10 "Page $pagenum of $numpages" miff:-
pagenum=$((pagenum+1))
done
) | convert - ../result.pdf
где arr - массив имен изображений в тестекаталог.Обратите внимание, что размер страницы А4 составляет 595x842 при разрешении 72 т / д при разрешении 8,27 × 11,7 дюйма
result.pdf
Если вы хотите оставить пробелы в именах файлов, затем вы можете изменить IFS на новую строку перед оператором arr, а затем изменить его обратно на пробел.Например:
lena 01.png
lena 02.png
lena 03.png
lena 04.png
lena 05.png
lena 06.png
Код изменится на следующий:
cd
cd desktop/test
OLDIFS=$IFS
IFS=$'\n'
arr=(`ls`)
num=${#arr[*]}
numm1=$((num-1))
numpages=`echo "scale=0; ($num+0.5)/2" | bc`
echo "numpages=$numpages"
pagenum=1
IFS=$OLDIFS
(
for ((i=0; i<numm1; i=i+2)); do
j=$((i+1))
convert "${arr[$i]}" "${arr[$j]}" -background white -gravity center -append \
-resize 595x842 -extent 595x842 +repage \
-font arial -pointsize 18 -undercolor white -fill black \
-gravity north -annotate +0+10 "${arr[$i]}" \
-annotate +0+431 "${arr[$j]}" \
-gravity south -annotate +0+10 "Page $pagenum of $numpages" miff:-
pagenum=$((pagenum+1))
done
) | convert - ../result2.pdf
result2.pdf