我一直在使用 GSView 5.0 和 GhostScript 9.52 在牛皮纸上进行 postscript 打印。然而,今天 GSView 开始在我尝试打印的每个 .ps 文件上抛出错误代码。我使用的是 Windows 10 Pro,打印机是 Epson Artisan 1430。
错误如下:
GPL Ghostscript 9.52: **** Could not open file 00000e60.
Unrecoverable error: invalidfileaccess in showpage
Operand stack:
--nostringval-- 1 true
gsapi_execute_cont returns -9
gsapi_exit returns 0
我尝试更改文件和不同打印机驱动程序的权限,但无济于事。很抱歉,我无法对这个问题进行更多描述,因为它很难清楚地表达出来。
最佳答案
好的...您最近一定已更新到 Ghostscript 的新版本。我可以重现您的问题,它可以归结为 Ghostscript 最近的(已记录的)行为变化。
由于几年前使用 Ghostscript 的安全漏洞的公开披露有据可查,当前版本(以及 9.50 之后的任何版本)现在默认以 SAFER 模式运行。
在 SAFER 中运行时,Ghostscript 会阻止 PostScript 解释器访问文件系统。对于那些不知道这个问题的人; PostScript 是一种成熟的编程语言,在设计上允许程序访问底层文件系统。 SAFER 模式可以防止这种情况发生,例如,恶意 PostScript 程序无法在您的计算机上运行任意代码。
看来 GSView 使用 Ghostscript 的方式要求它使用 PostScript 解释器读取要打印的 PostScript 程序,而不是指定输入文件作为参数之一的更常见做法。为简单起见,Ghostscript 可执行文件授予输入文件读取可用性。我怀疑 GSview 直接使用 DLL 而没有添加额外的信息。
现在有一些方法可以允许访问特定文件或文件夹,以便现有的 PostScript 程序可以继续工作,但显然这需要在调用应用程序中进行一些更改。从字面上看,GSview 多年来没有发生任何变化,因此显然它没有采取任何此类行动。
但是,您可以让 GSview 像以前一样工作。在选项下选择高级配置。在出现的对话框中查找“Ghostscript 选项”文本框。在其中添加 -dNOSAFER,这应该可以使其再次工作,但如果操作系统打印子系统已停止,您可能必须重新启动计算机。
是的,这确实会让您遭受我上面提到的各种攻击,您应该只对您信任的 PostScript 程序执行此操作。
关于使用 GSView 5.0 打印附记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62565146/