工作非常简单:我有几百个PDF文档,我需要将它们的每一页导出为两个图像:一个大,一个小。
经过几个小时的研究和优化后,我想出了一个简洁的Bash脚本来实现它:
#!/bin/bash
FILE=$1
SLUG=$(md5 -q "$FILE")
mkdir -p $SLUG
gs -sDEVICE=jpeg -r216 -g1920x2278 -q -o $SLUG/%d.jpg "$FILE"
for IMAGE in $SLUG/*.jpg; do
convert $IMAGE -resize 171x219 ${IMAGE/jpg/png}
done
如你所见,我...
有效。但我担心它不够快。
我在MacBook上获得平均每页6秒(大约1分钟,80页PDF)。但是这个脚本将在服务器上运行,这是一个非常低端的服务器 - 可能是在亚马逊上使用Ubuntu的微型EC2。
任何人都有任何提示,技巧或导致帮助我优化此脚本?我应该使用其他工具吗?是否有更适合这种工作的图书馆?
不幸的是我不写C或C ++,但如果你们指出一些好的库和教程,我会很乐意学习它。
感谢。
更新
我刚刚在AWS上的t1.micro实例上测试过它。花了10分钟处理80页的相同PDF。另外我注意到convert
是最慢的人花了将近5分钟来调整图像大小。
更新。 2 我现在在c1.medium实例上测试了它。它是t1.micro价格的7倍,但它与我的MacBook的性能非常接近:对于244页的文档,约为3.5分钟。
我现在要尝试泥浆和其他组合。
答案 0 :(得分:1)
你可以运行两次GS,一次用于大图像,再一次用于较小的图像。当然输出可能不会像转换那样好,但是在那个尺寸我估计它不会非常明显。
我不知道如何在Bash脚本中执行此操作,但您可以运行2个Ghostscript实例(每个大小一个),如果服务器达到它可能会更快。