从图像构建已排序和注释的pdf

时间:2014-02-10 23:58:14

标签: image bash pdf

我正在尝试从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

1 个答案:

答案 0 :(得分:1)

这个怎么样,不需要生成临时文件files.txt

convert -gravity North -annotate `ls *.jpg | sort -t . -k3.3n -k1.1n -k2.2n ` data_graphs.pdf

根据评论,这些jpg文件在文件名(MM-DD-YYYY)中有时间戳,我更新了sort命令。

另一种方式,首先将每个jpg文件转换为pdf,然后使用pdftk将它们合并,我使用pdftk多年,并且知道软件可以轻松完成工作。这是pdftk服务器url: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