如何快速生成PDF的所有页面的PNG缩略图?

时间:2011-03-08 09:14:21

标签: pdf imagemagick thumbnails

我使用以下代码执行此操作:

for i in `seq 1 $numPages`; do
    convert "$INPUTPDF"[$((i-1))] thumb_$i.png
done;

它有点慢,我认为这是因为它每次都会开始一个新的过程。

如何更快地完成这项工作?

非常感谢!

1 个答案:

答案 0 :(得分:3)

以下是shamelessly stolen

mikal@deathstar:~/foo$ convert foo.pdf pages-%03d.png
mikal@deathstar:~/foo$ ls pages*
pages-000.png  pages-001.png  pages-002.png  pages-003.png  pages-004.png
mikal@deathstar:~/foo$

这将只解析您的pdf一次。活泉。

根据此过程需要多长时间,同时运行其中几个可能是有意义的。如果您有多核或SMP机器,您可能会看到一次运行两个,三个甚至四个convert(1)进程的好处。简单的方法是将这样的命令放入两个或多个shell脚本中,然后并行运行shell脚本。你可以像这样生成这些脚本:

for f in *.pdf ; do echo "convert $f `basename $f .pdf`-%03d.png" >> /tmp/runme ; done
wc -l /tmp/runme
split -l [number of lines/2] /tmp/runme
sh /tmp/xaa & sh /tmp/xab &

但这非常混乱。如果您经常这样做,我建议为Makefile或您自己的小流程管理工具编写make(1)以利用多个CPU。哎呀,也许这样的东西已经存在了。 :)