PostScript文件GhostScript打开正常,Adobe蒸馏出现undefined错误求助
MetricsCount错误 这个问题我之前帮别人排查过,本质是Adobe Distiller和GhostScript对PostScript字体度量信息的校验严格程度不一样——GhostScript对不规范的字体定义容错性高,而Adobe的检查卡得很死。你遇到的ErrorInfo: MetricsCount --nostringval--错误,说明Distiller在执行show命令时,找不到字体字典里要求的MetricsCount相关度量数据,或者这个数据和实际的宽度数组不匹配。
结合你已经把文件缩短到只有两个单词的情况,给你几个具体的排查和解决步骤:
检查字体定义的完整性
用文本编辑器打开你缩短后的PS文件,找到字体相关的字典定义(通常会有/FontName、/Widths这类关键字)。Adobe要求字体字典必须明确包含MetricsCount键,且它的值要和Widths数组的元素数量完全一致。比如如果你的两个单词对应两个字符的宽度,字典里应该有类似这样的定义:/MyCustomFont /Type1 defineresource pop /MyCustomFont findresource begin /Type /Font def /FontName /MyCustomFont def /Encoding /WinAnsiEncoding def /MetricsCount 2 def % 必须和Widths数组的元素数一致 /Widths [650 720] def % 对应两个字符的宽度值 % 其他必要的字体属性(如/FontBBox、/FontMatrix等) end如果你的文件里缺少
MetricsCount,或者数值和Widths长度不匹配,就会触发这个错误。替换为Adobe兼容的标准字体
如果你用了GhostScript特有的自定义字体,或者一些非标准字体,直接换成Adobe原生支持的标准字体(比如Helvetica、Times-Roman、Courier)试试。这些字体的度量信息是Distiller默认能识别的,不会出现找不到MetricsCount的问题。比如把字体引用从/MyCustomFont改成/Helvetica。用GhostScript生成Adobe兼容的PostScript文件
GhostScript的ps2write设备可以把原PS文件转成更符合Adobe规范的版本,自动补全缺失的字体度量信息。你可以用这条命令转换:gs -sDEVICE=ps2write -o distiller_compatible.ps your_shortened_file.ps转换完成后再用Adobe Distiller处理
distiller_compatible.ps,大概率能解决问题。核对
show命令的上下文
因为错误出在show命令上,检查一下执行show之前的字体设置是否正确。比如有没有用findfont、scalefont、setfont正确加载并设置字体,确保show命令使用的字体字典是完整有效的。
内容的提问来源于stack exchange,提问作者Khizer But

