(在Windows 10上使用Ghostscript 9.27)
我在PDF上运行以下Ghostscript命令没有问题;在资源/初始化中选择默认的“ 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”,但这没用。
我到底在做什么错?
答案 0 :(得分:0)
基本答案是没有Ghostscript命令行开关'CIDFMAP'。
Ghostscript命令行控制工作方式的方法是,将解释器或设备无法识别的任何开关都假定为PostScript变量。这样的变量在systemdict中定义,这使它们可用于可能希望使用它们的任何PostScript程序。 Ghostscript附带的许多实用程序都使用此功能。
-sCIDFMAP的唯一用途是将参数传递给mkcidfm.ps PostScript程序,该程序告诉该程序输出文件的名称以存储生成的cidfmap。
因此,您需要做的是在Resource / Init目录中生成cidfmap,或者将其复制到该目录中,或者告诉Ghostscript使用-I将您正在生成目录的目录添加到搜索路径中。最可靠的方法是将其放在/ Resource / Init中。
我认为(但这不是我的专长),Ghostscript将查找 first cidfmap文件并使用它,因此,如果将资源文件放在包含cidfmap的目录之前,则它将首先找到它们。您可以尝试交换搜索顺序,但是我个人觉得这很冒险。如果要使用磁盘中的资源,则只需将cidfmap放在其中。