对于我参与的项目,我需要调整PDF的大小并对其进行翻译 我正在使用Ghostscript实现此目标。 问题在于速度随着页数而降低: 对于具有2页的PDF,调整大小操作持续0.6秒,而对于具有100页的PDF,经过时间为10秒。 如何提高Ghostscript的性能?
我在cpdf之前使用过,速度很快,但是没有保留超链接和其他元数据。
\"/usr/bin/gs\" -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dSAFER -dAutoFilterColorImages=false -dPrinted=false -dCompatibilityLevel=1.7 -dPDFSETTINGS=/default -dSubsetFonts=true -dEmbedAllFonts=true -dDEVICEWIDTHPOINTS=**PDF_WIDTH** -dDEVICEHEIGHTPOINTS=**PDF_HEIGHT** -sOutputFile=**OUTPUT_PDF** -c \"80000000 setvmthreshold\" -c \"<</BeginPage{**SCALE_FACTOR** **SCALE_FACTOR** scale **TRANSLATE_X** **TRANSLATE_Y**}>> setpagedevice\" -f **INPUT_PDF**
答案 0 :(得分:0)
首先,在没有看到引起您麻烦的文件类型的示例的情况下,几乎没有任何人可以提出建议。为什么要提出这个问题可能有很多原因。
最一般的解释是:
在创建PDF文件期间,pdfwrite设备会在内存中维护大量数据, 并将大量中间数据写入磁盘上的少量临时文件。
由于各种原因,设备需要在这些临时文件中来回搜索(尤其是检查是否可以作为单个对象发出的重复条目)。随着文件大小的增加,查找时间会减少。
此外,内存中还保存着许多元数据,并且由于各种原因,也需要检查这些元数据。其中一些保留在复杂的结构中,并且遍历这些元素将花费更多时间,因为元素(页面,表单,图案,xobject,颜色空间,字体等)的数量增加。随着简单数据对象数量的增加,它也需要花费时间进行检查。
简而言之,您无法对此进行任何处理,随着元素数量的增加,性能或多或少地呈线性下降。
由于您提到了一个“项目”,请注意,AGhost v3提供了Ghostscript,因此您可能要检查您的用法是否与该许可的条款一致,然后再继续进行。