(在Windows 10上使用Ghostscript 9.27 )
在我的PDF上运行以下Ghostscript命令没有问题;参考资料/Init中的默认'cidfmap‘文件是很好的:
gswin64c.exe -I"C:/Program Files/gs/ghostscript-9.27/Resource/Init" -sDEVICE=pdfwrite -dNODISPLAY -dPDFSETTINGS=/printer -dPDFSTOPONERROR -dBATCH -dNOPAUSE -sOutputFile=output.pdf input.pdf但是,当我想使用生成的'cidfmap‘文件(使用mkcidfm.ps脚本)时,它只想使用默认值,而不会使用生成的'cidfmap’文件。我正在尝试的新命令是:
gswin64c.exe -I"C:/Program Files/gs/ghostscript-9.27/Resource/Init" -sCIDFMAP="C:/Temp/cidfmap" "C:/Program Files/gs/ghostscript-9.27/lib/mkcidfm.ps" -sDEVICE=pdfwrite -dNODISPLAY -dPDFSETTINGS=/printer -dPDFSTOPONERROR -dBATCH -dNOPAUSE -sOutputFile=output.pdf input.pdf我尝试过在-I参数中的目录列表中添加"C:\Temp“,但这是行不通的。
我到底做错了什么?
发布于 2019-05-03 07:08:47
基本的答案是没有Ghostscript命令行开关'CIDFMAP‘。
Ghostscript命令行控制工作的方式是,任何未被解释器或设备识别的开关都被假定为PostScript变量。这样的变量是在systemdict中定义的,这使得任何想要使用它们的PostScript程序都可以使用它们。Ghostscript提供的许多实用程序都利用了这个特性。
-sCIDFMAP的唯一用途是将一个参数传递给mkcidfm.ps PostScript程序,该程序告诉该程序输出文件的名称,以便将生成的cidfmap存储在其中。
因此,您需要做的是在Resource/Init目录中生成cidfmap,或者在那里复制它,或者告诉Ghostscript使用-I将生成它的目录添加到搜索路径中。最可靠的方法是将其放入/Resource/Init中。
我认为(但这不是我的领域) Ghostscript将查找 first cidfmap文件并使用该文件,因此如果您将资源文件放在包含cidfmap的目录之前,那么它将首先找到它们。你可以试着换一下搜索单,但我个人觉得这很冒险。如果要使用磁盘上的资源,只需将cidfmap放在其中即可。
https://stackoverflow.com/questions/55960758
复制相似问题