我正在尝试从 bash 中同一文件夹中的一组图像文件构建pdf
。到目前为止,我有这段代码:
ls *.jpg | sort > files.txt
ls *.jpg | sort | tr 'n' ' ' | sed 's/$/ data_graphs.pdf/' | xargs convert -gravity North -annotate @files.txt
rm files.txt
此代码折叠图像,但它们未正确排序,并且每个图像(列表中的第一个图像)的注释都相同。
这是供参考的ls * jpg |sort
输出。
$ ls *.jpg | sort
01.20.2014_A549_void.jpg
01.20.2014_EPOR_full_sorter.jpg
01.20.2014_EPOR_trunc_sorter.jpg
01.20.2014_WTGFP_sorter.jpg
01.27.2014_A549_void.jpg
01.27.2014_EPOR_full_I10412.jpg
01.27.2014_EPOR_full_sorter.jpg
01.27.2014_EPOR_trunc_I10412.jpg
01.27.2014_EPOR_trunc_sorter.jpg
01.27.2014_WTGFP_I10412.jpg
01.27.2014_WTGFP_sorter.jpg
02.03.2014_A549_void.jpg
02.03.2014_EPOR_full_sorter.jpg
02.03.2014_EPOR_trunc_sorter.jpg
02.03.2014_WTGFP_sorter.jpg
怎么样,不需要生成临时文件files.txt
convert -gravity North -annotate `ls *.jpg | sort -t . -k3.3n -k1.1n -k2.2n ` data_graphs.pdf
根据注释,这些jpg文件在文件名(MM-DD-YYYY)中有时间戳,我更新了排序命令。
另一种方式,先将每个JPG文件转换为PDF,然后使用pdftk合并它们,我使用pdftk多年,知道该软件可以轻松完成这项工作。这是pdftk服务器网址:pdflabs.com/tools/pdftk-server。
下面的脚本将一个接一个地将jpg文件转换为pdf
for file in *jpg
do
convert -gravity North -annotate "$file" "$file".pdf
done
然后运行 pdftk 命令,如果您有 pdf 的休数。 使用 pdftk,您可以将每 10~20 个合并为一个小 pdf,然后将小 pdf 合并为最终 pdf。例如:
pdftk 1.pdf 2.pdf 3.pdf output m1.pdf
然后你会得到mXXX.pdf文件,然后再次运行pdftk:
pdftk m1.pdf m2.pdf m3.pdf output final.pdf