2

)

我知道有一些关于类似内容的问题和线索,但没有一个对我有用。我正在尝试将约 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 秒,而且我需要这个。有什么建议么?

4

1 回答 1

10

pdfwrite 设备不使用线程(这样做很难)。线索在名称“NumRenderingThreads”中,pdfwrite 不会呈现

由于它不渲染 BandHeight,BandBufferSpace、BandListStorage 和 BufferSpace 也将不起作用。(您还指定了 -q 两次)

请注意,Ghostscript 和 pdfwrite 设备不会“操纵”PDF 输入,也不会合并、连接或任何类似的东西。它所做的是解释所有输入,创建一组图形基元,然后将这些基元重新组合成一个全新的 PDF 输出文件。新的输出文件与任何输入都没有共同点,我们的目标是视觉外观应该相同。虽然我们确实从输入中处理了许多非制造对象,但这些都是次要的。

很明显,这是一个比将 PDF 文件的内容视为一系列可以重新排列的构建块复杂得多的过程,这就是它变慢的原因。老实说,在 1 分钟内阅读、解释、重写 1000 个文件对我来说似乎很快。

于 2013-08-20T07:32:02.427 回答