2016-03-03 15 views
1

我正在尝试使用PostScript的ASCII85Decode过滤器。添加下面一行到我的PS文件工作正常,即字母XYZ正确地显示在页面上:PostScript ASCII85Decode过滤器

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'。

我在做什么错?

+0

您可以尝试用==替换cvx exec以确保解码结果符合您的期望。 – Herb

回答

1

那么,第一个问题是你没有选择一个字体,所以内部exec会引发错误。如果你使用这个:

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

它会工作得更好。你还没有说过你正在使用哪个版本的Ghostscript(或哪个操作系统),但你的字符串不会给我一个错误。然而编码串以上:

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

(NB有以下的,菊一个0X0A)

导致XYZ被吸上的输出。

+0

谢谢你,你的字符串工作正常。我应该提到,在我的情况下,字体在文件中设置较早。 我的'/ T'中的未定义问题似乎与<〜start分隔符有关。如果我删除它,我的原始编码的字符串工作正常。我注意到你的字符串不包括开始分隔符。 我在Windows 7上使用GhostScript 9.05。 – YSJ

+0

是的,这将是一个问题。读取你的代码我发现你确实包含了字符串分隔符,你不需要那些,因为你没有引入一个字符串,你直接从当前文件读取数据。 – KenS