PostScript ASCII85解码过滤器

PostScript ASCII85Decode filter

我正在尝试使用 PostScript 的 ASCII85Decode 过滤器。将以下行添加到我的 PS 文件中效果很好,即字母 XYZ 在页面上正确显示:

200 300 translate 0 0 moveto (XYZ) show

然后我使用在线工具对上面的行进行了 ASCII85 编码,并将下面包含编码字符串的代码片段(如 PLRM 中所建议的那样)放入我的 PS 文件中与上一行相同的位置:

currentfile /ASCII85Decode filter cvx exec 
<~1,(C)1GCL*FE1f-F)59,AKWZL0Hb4NG%Gc6+=L>p=t(S8BQ&)%~>

生成的 PS 文件在 GSView 控制台中给我以下错误:

Error: /undefined in T
Operand stack:

Execution stack:
%interp_exit   .runexec2   --nostringval--   --nostringval--   --    nostringval--   2   %stopped_push   --nostringval--   --nostringval--   false   1   %stopped_push   1926   1   3   %oparray_pop   1925   1   3   %oparray_pop   1909   1   3   %oparray_pop   1803   1   3   %oparray_pop   --nostringval--   %errorexec_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--
Dictionary stack:
--dict:1176/1684(ro)(G)--   --dict:0/20(G)--   --dict:83/200(L)--   --dict:139/150(L)--
Current allocation mode is local
Last OS error: No such file or directory

我希望 ASCII85Decoder 解码编码的字符串,并且字母 'XYZ' 出现在页面上。

我做错了什么?

嗯,第一个问题是你没有选择字体,所以内部 exec 抛出一个错误。如果你使用这个:

200 300 translate 0 0 moveto /Helvetica findfont 20 scalefont setfont (XYZ) show

它会更好用。您没有说您使用的是哪个版本的 Ghostscript(或哪个 OS),但您的字符串对我来说没有错误。但是将上面的字符串编码为:

1,(C)1GCL*FE1f-F)59,AKWZL0Hb4NG%Gc6+>68sCj'B3Bk(QoAnc-nAoDR/+>PVnF(8WpAS,ju
F<GX9FCoH/F<Du6=^!6sF(fK9~>

(注意 ,ju 后面有一个 0x0a)

导致在输出上绘制 XYZ。