PostScript ASCII85Декодовый фильтр

Я пытаюсь использовать фильтр 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".

Что я делаю неправильно?

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 будет отображаться на выходе.

Другие вопросы по тегам