使用 Ghostscript 输出设备进行原子写入

Atomic writes with Ghostscript output devices

我正在使用 Ghostscript 在命令行中使用以下命令将 PDF 页面转换为 PNG:

gs -dDOINTERPOLATE -sDEVICE=pnggray -r200x200 -o 'page%%d.png' filename.pdf

我的目的是接收大型 PDF 并在构建 PNG 时对其进行其他工作,完成后清理它们。但是,输出 PNG 似乎不是自动生成的——也就是说,它们在完成之前就可用了。有没有办法让 Ghostscript 以原子方式生成这些文件,或者我可以通过某种方式在命令运行时访问它们而不会遇到不完整的文件?

不,没有。 Ghostscript 在页面开始时立即打开文件进行写入。当页面完成时,它将数据写入一个大块,或者写入一系列水平条纹(在高页面大小或分辨率下)。

由于它可能会在一系列带中写入页面,因此它必须预先打开文件。

您可以使用 API 围绕 Ghostscript 编写应用程序,这将在页面完成时产生回调,然后您可以使用它来触发其他处理。