Ghostscript - 使用100页的页面加速PS文件,以输出到PDF文件

时间:2014-10-17 23:17:38

标签: multithreading ghostscript

我是最终用户而不是程序员,但坚持这个项目。

在打印这些PS文件之前,我们需要将大量PS文件转换为PDF以供查看(校对)。每个PS文件包含800或更少的页面。 PS文件通常为60-250兆。

运行Ghostscript命令的计算机是在VM上运行的Win7 64 bit Server2012次安装。 VM有10个核心,40个ram和一个4磁盘RAID-0,使用15,000 rpm驱动器。如果这有帮助,有足够的未使用容量。

我尝试的命令是:

gswin32c.exe -q -dSAFER -dNOPAUSE 
         -dBATCH -sDEVICE=pdfwrite | 
         -sOutputFile="..\output.pdf"  -f "..\IN\input.ps"

gswin32c.exe -q -dSAFER -dNOPAUSE -dBATCH 
         -sDEVICE=pdfwrite -dNumRenderingThreads=3 |
         -sOutputFile="..\output.pdf"  -c "30000000 setvmthreshold" -f"..\IN\input.ps"

我做了一些比较这两个命令的翻录速度的测试,第二个版本的Threads选项比较慢。其中一个测试文件有90.5兆的PS数据,导致PDF文件中有716页。使用线程版本,非线程花了4.85分钟而5.93分钟。

任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:1)

同时运行它们。

你有10个核心,你应该至少有10个核心同时运行。

找到一组可以更好地单独执行的选项,并且只需同时运行它们。

执行此操作的一个简单方法是创建10个批处理文件,每个文件都包含一个命令列表,这些文件代表10%的文件。然后在单独的命令窗口中关闭所有这些批处理文件,然后前往午餐以查看返回的内容。

通过脚本编写,分叉和批处理以及其他技术,您可以更轻松地实现自动化。

但是我敢打赌,在编辑器中创建10个bat文件会更快,每个文件都有一个使用剪切和粘贴以及搜索和替换的大多数相同命令的列表。

如果你这么做了很多,那么也许可以找到一些帮助脚本。

如果它是一次性的事情,那么只需研究它并创建文件。

然后坐下来看着粉丝在你的VM上旋转,因为CPU亮了一个小时。

如果你想进行实验,你可以尝试一次运行5,6,7,8,检查时钟时间以查看哪个网络整体最快,并更改" 10"到X适当。

但这是吸引这台机器所有容量的最简单方法。

答案 1 :(得分:0)

我正在提取第一页"大约10k个PDF文件,我使用ghostscriptGNU Parallel来并行处理所有内容。这是"命令"我用过:

find ./data/pdfs -name '*.pdf' | parallel \
  --verbose --progress \
  'gs -q -sDEVICE=jpeg -dFirstPage=1 -dLastPage=1 -dNOPAUSE -dBATCH -r500x500 -o {}.jpeg {}'

这是在OSX上运行的,但是你可以通过CygWin在Windows上获得GNU Parallel。