ghostscript仅在通过SSH进行时才获得退出代码1

时间:2013-11-20 15:17:30

标签: fonts ssh ghostscript

当我直接通过后端在我的文档服务器上运行此命令时,它可以工作并创建一个可打印/正确的组合文档:

cd /docs/processing/ && gs -sDEVICE=pswrite -dNOPAUSE -dBATCH -dSAFER -sOutputFile=combo.ps temp1.ps temp2.ps;

现在真正的任务是我需要从我的其他服务器SSH到此文档服务器才能执行这些命令。所以我尝试了这个:

ssh myuser@myserver "cd /docs/processing/ && gs -sDEVICE=pswrite -dNOPAUSE -dBATCH -dSAFER -sOutputFile=combo.ps temp1.ps temp2.ps;"

当我这样做时,我得到一个丑陋的ghostscript错误代码,它不起作用

GPL Ghostscript 8.54: Unrecoverable error, exit code 1

进行了一些挖掘,看起来它与字体有关吗? 幸运的是,Ghostscript在运行时打印出许多调试语句,我认为我发现了问题。

当我在我的doc服务器上本地运行并且在其中一个点上没有SSH时,它似乎在寻找字体(并且是成功的)

/usr/local/share/ghostscript/8.54/lib/fonts/

当我通过SSH运行时,它看起来是在一个完全不同的区域搜索字体,因为一些奇怪的原因,我不知道为什么,所以产生所有错误:

Can't find (or can't open) font file
/usr/local/share/ghostscript/8.54/Resource/Font/NimbusMonL-Regu.
Can't find (or can't open) font file NimbusMonL-Regu.
Querying operating system for font files...
Didn't find this font on the system!
Unable to substitute for font.
Error: /invalidfont in findfont

TLDR:当我在ghostscript中使用SSH时,在不同的文件位置查找字体,并且没有找到任何导致错误输出失败的字体。

任何人都知道如何进入并告诉ghostscript查看用于查找字体的目录?具体来说,我想我在SSH时,因为这似乎是不同的。

谢谢!

1 个答案:

答案 0 :(得分:0)

听起来你在两种情况下以不同的用户身份运行Ghostscript。很可能两个用户的环境设置不同,特别是GS_FONTPATH,但也可能是其他用户。

您应该检查这两种环境。工作中具有GS_的任何东西都可能需要在其他用户的环境中重复。

此外,您可能希望尝试在没有-dSAFER的情况下运行,至少作为实验,因为该开关禁用从“大多数”路径读取(有关-dSAFER的更多信息,请参阅ghostpdl / gs / doc / use.htm)