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

3
我使用以下代码来实现这个功能:
for i in `seq 1 $numPages`; do
    convert "$INPUTPDF"[$((i-1))] thumb_$i.png
done;

它有些慢,我认为是因为它每次启动一个新进程。

如何更快地完成这个操作?

非常感谢您的帮助!

1个回答

3
下面是“无耻地窃取”的内容:

以下内容来自该网站

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)或者自己编写一个小型的进程管理工具来利用多核处理器。也许已经有类似的工具存在了 :)


太酷了!如此简单易懂!谢谢 :) - mik01aj
@m01,有没有任何迹象表明它可能会更快? - sarnold
你的版本在530页PDF上运行了54秒,而我的版本需要5.5分钟。 - mik01aj
@m01!哈!哇。有没有任何迹象表明它是CPU还是磁盘受限?我很好奇如果有多个运行任务,它是否可以更快。 - sarnold

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接