2010-11-20 90 views
6

如何使用ls和转换将目录中的所有图像文件转换为pdf? 另外我需要把文件按照一定顺序放置,例如AA1.png,AA11.png等文件需要遵守这个逻辑顺序。Bash转换为pdf

更新(ls)和(转换)可用,但我怎样才能将它们一起使用?

+0

你的意思是独立的PDF或单一的PDF? – Orbling 2010-11-20 18:04:55

+0

我需要一个pdf – danidacar 2010-11-20 18:08:58

回答

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 2010-11-20 18:12:07

+0

对,我为你的排序问题增加了更多。 – Orbling 2010-11-20 18:20:21

+0

反引号中的'ls'本身并没有做任何有用的事情。但是,如果您添加了有用的排序选项,则可能会有所保证。 – tripleee 2011-08-24 07:28:54

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 2010-11-20 18:18:46

+1

反引号中的'ls'是一个反模式。 '用于* .png的图像;做...'既简单又更正确。 – tripleee 2011-08-24 07:27:59

4

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

在所有涉及的ImageMagick提出的解决方案(即convert)中,JPEG数据被完全解码和重新编码。这导致generation loss以及比img2pdf更糟糕的表现“十到一百倍”。

+0

我无法在此代码上看到许可证。你自己写了吗?它是麻省理工学院,GPL等? – Orbling 2013-05-14 19:22:05

+0

我没有写这个。如果您想与他联系,其作者的电子邮件地址将隐藏在他的test_comp.sh中。 – 2013-05-14 21:00:35

+0

不是特别的,只是认为它通常没有许可证就无法使用。这是一个耻辱,因为它无疑是有用的。 – Orbling 2013-05-14 21:16:07

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