是否可以减少 GhostScript 内存?

Is it possible to reduce GhostScript memory?

命令是这样的:

gs -q -dSAFER -dBATCH -dNOPAUSE -dPDFSETTINGS=/prepress -sDEVICE=pdfwrite -sOutputFile=output.pdf 1.pdf 2.pdf ... N.pdf

每个输入 PDF 包含许多图像,并且大多数图像在输入 PDF 之间共享。

命令运行成功。内存使用量递增,最终达到 3.7GB。 我尝试了各种 PDFSETTINGS:印前/打印机/电子书/屏幕。最大内存没有减少。

我想知道是否可以减少 GhostScript 内存使用量?更长的 CPU 处理时间是可以接受的。

$ gs -v GPL Ghostscript 9.25 (2018-09-13) Copyright (C) 2018 Artifex Software, Inc. All rights reserved.

不,您不能显着减少 pdfwrite 设备的内存使用量。

pdfwrite 设备在内存中保留了很多 的内容。这样做的结果是,对于页面数量巨大的文件,以及字体等资源较多的文件,有可能内存占用非常高。

您不能在 PDF 之间共享图像。每个 PDF 文件可能包含一个图像的副本,该图像是另一个 PDF 文件中图像的副本,但它们不会共享。

更改 PDFSETTINGS 不会产生任何实际影响;这主要影响图像的颜色 space 和分辨率,这些图像存储在磁盘上,而不是内存中。所以改变那些不会改变内存使用。

当然,您可能已经发现内存泄漏,但如果没有看到输入,我什至无法猜测。即使您确实提供了输入,除非有一些非常明显的东西,否则我不会尝试调试使用优于 3GB 内存的东西。