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

问题描述:

我用下面的代码来做到这一点:如何快速生成PDF所有页面的PNG缩略图?

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

这是有点慢,我想这是因为它开始每一次一个新的进程。

如何更快地做到这一点?

非常感谢!

以下是shamelessly stolen

[email protected]:~/foo$ convert foo.pdf pages-%03d.png 
[email protected]:~/foo$ ls pages* 
pages-000.png pages-001.png pages-002.png pages-003.png pages-004.png 
[email protected]:~/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。哎呀,也许这样的事情已经存在。 :)

+0

酷!这么简单和简单!谢谢:) – mik01aj 2011-03-08 11:27:53

+0

@ m01,有什么迹象可能会快多少? – sarnold 2011-03-08 11:33:03

+0

您的版本为530页PDF运行54秒,我的版本运行5.5分钟。 – mik01aj 2011-03-08 13:17:11