我知道有几个问题和类似的东西,但没有一个会对我有用。
我正试着把1000个pdf文件合并成一个。我尝试了一些工具,但只有gs(ghostscript)可以进行适当的压缩。
我的问题是多线程不工作/我有24个内核,喜欢使用例如8的任务,但是top告诉我它仍然只使用一个。我的命令:

gs -q -dNOPAUSE -dNOPROMPT -q -dBATCH -dNumRenderingThreads=8 -dBandHeight=100 -dBandBufferSpace=500000000 -sBandListStorage=memory -dBufferSpace=1000000000 -sDEVICE=pdfwrite -sOutputFile=combined_gs.pdf sourcefiles/*.pdf

我必须加快速度,因为它需要大约60秒,我需要这个飞行。
有什么建议吗?

最佳答案

pdfwrite设备不使用线程(它很难这样做)。线索在名称“numrenderingthreads”中,pdfwrite不呈现。
由于它没有呈现bandhight,bandbufferspace、bandliststorage和bufferspace也不会有任何效果。(您还指定了-q两次)
请注意,ghostscript和pdfwrite设备不会“操纵”pdf输入,也不会合并、连接或类似的操作。它所做的是解释所有的输入,创建一组图形原语,然后将这些原语重新组装成一个全新的pdf输出文件。新的输出文件与任何输入都没有任何共同之处,我们的目标是视觉外观应该相同。虽然我们确实处理了一些来自输入的非makring对象,但这些对象是次要的。
显而易见,这是一个比将pdf文件的内容视为一系列可以重新排列的构建块要复杂得多的过程,这就是为什么它的速度较慢的原因。老实说,在我看来,在1分钟内阅读、解释、重写1000个文件似乎很快。

08-07 15:59