有人可以帮助我将以下postscript代码格式化为可读格式吗?我需要修改逻辑以在所有条件下返回错误响应,并且永远不会打印错误页面。
%%BeginResource: file Pscript_WinNT_ErrorHandler 5.0 0
/currentpacking where{pop/oldpack currentpacking def/setpacking where{pop false
setpacking}if}if/$brkpage 64 dict def $brkpage begin/prnt{dup type/stringtype
ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def currentpoint/toy exch
def/tox exch def 1 setgray newpath tox toy 2 sub moveto 0 ty rlineto tx 0
rlineto 0 ty neg rlineto closepath fill tox toy moveto 0 setgray show}bind def
/nl{currentpoint exch pop lmargin exch moveto 0 -10 rmoveto}def/=={/cp 0 def
typeprint nl}def/typeprint{dup type exec}readonly def/lmargin 72 def/rmargin 72
def/tprint{dup length cp add rmargin gt{nl/cp 0 def}if dup length cp add/cp
exch def prnt}readonly def/cvsprint{=string cvs tprint( )tprint}readonly def
/integertype{cvsprint}readonly def/realtype{cvsprint}readonly def/booleantype
{cvsprint}readonly def/operatortype{(--)tprint =string cvs tprint(-- )tprint}
readonly def/marktype{pop(-mark- )tprint}readonly def/dicttype{pop
(-dictionary- )tprint}readonly def/nulltype{pop(-null- )tprint}readonly def
/filetype{pop(-filestream- )tprint}readonly def/savetype{pop(-savelevel- )
tprint}readonly def/fonttype{pop(-fontid- )tprint}readonly def/nametype{dup
xcheck not{(/)tprint}if cvsprint}readonly def/stringtype{dup rcheck{(\()tprint
tprint(\))tprint}{pop(-string- )tprint}ifelse}readonly def/arraytype{dup rcheck
{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint}forall(])
tprint}ifelse}{pop(-array- )tprint}ifelse}readonly def/packedarraytype{dup
rcheck{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint}
forall(])tprint}ifelse}{pop(-packedarray- )tprint}ifelse}readonly def/courier
/Courier findfont 10 scalefont def end errordict/handleerror{systemdict begin
$error begin $brkpage begin newerror{/newerror false store vmstatus pop pop 0
ne{grestoreall}if errorname(VMerror)ne{showpage}if initgraphics courier setfont
lmargin 720 moveto errorname(VMerror)eq{userdict/ehsave known{clear userdict
/ehsave get restore 2 vmreclaim}if vmstatus exch pop exch pop PrtVMMsg}{
(ERROR: )prnt errorname prnt nl(OFFENDING COMMAND: )prnt/command load prnt
$error/ostack known{nl nl(STACK:)prnt nl nl $error/ostack get aload length{==}
repeat}if}ifelse systemdict/showpage get exec(%%[ Error: )print errorname
=print(; OffendingCommand: )print/command load =print( ]%%)= flush}if end end
end}dup 0 systemdict put dup 4 $brkpage put bind readonly put/currentpacking
where{pop/setpacking where{pop oldpack setpacking}if}if
%%EndResource
答案 0 :(得分:2)
这是Windows PostScript打印机驱动程序序言的一部分,它依赖于序言的其他部分。 “格式化”它对你没有帮助,你需要有效地拆解它才能改变它。
但是,设备中的默认错误处理程序“可能”不会打印错误页面,因此处理它的最简单方法就是批量删除它。
答案 1 :(得分:1)
正如肯所说,所有这些代码都是打印错误页面。所以只需删除它。但是,对于解开代码墙的任务,有一些选择。
indent
在添加空格和支撑相关的缩进方面做得不错。它需要C代码,因此会引发很多错误。但它确实将事情分解为更易读的东西(如果忽略或删除缩进:错误)。
错误地在斜杠和以下名称之间添加一个空格,因此也会自动更正。
/ currentpacking where
{
pop / oldpack currentpacking def / setpacking where
{
pop false setpacking}
if}
if /$brkpage 64 dict def $brkpage begin / prnt
{
dup type / stringtype ne
{
= string
indent: Standard input:3: Error:Stmt nesting error.
indent: Standard input:5: Error:Stmt nesting error.
cvs} if dup length 6 mul / tx exch def / ty 10 def currentpoint /
toy exch def /
tox exch def 1 setgray newpath tox toy 2 sub moveto 0 ty rlineto tx 0
rlineto 0 ty neg rlineto closepath fill tox toy moveto 0 setgray show}
bind def / nl
{
currentpoint exch pop lmargin exch moveto 0 - 10 rmoveto}
def
/==
{
/cp 0 def typeprint nl}
def / typeprint
{
dup type exec}
readonly def / lmargin 72 def / rmargin 72 def / tprint
{
dup length cp add rmargin gt
{
nl / cp 0 def}
if dup length cp add / cp exch def prnt}
readonly def / cvsprint
{
= string
indent: Standard input:9: Error:Stmt nesting error.
cvs tprint ()tprint} readonly def / integertype
{
cvsprint}
readonly def / realtype
{
cvsprint}
readonly def / booleantype
{
cvsprint}
readonly def / operatortype
{
(--) tprint = string cvs tprint (--)tprint}
readonly def / marktype
{
pop (-mark -) tprint}
readonly def / dicttype
{
pop (-dictionary -) tprint}
readonly def / nulltype
{
pop (-null -) tprint}
readonly def / filetype
{
pop (-filestream -) tprint}
readonly def / savetype
{
pop (-savelevel -) tprint}
readonly def / fonttype
{
pop (-fontid -) tprint}
readonly def / nametype
{
dup xcheck not
{
(/)tprint}
if cvsprint}
readonly def / stringtype
{
dup rcheck
{
(\()tprint tprint (\))
indent: Standard input:17: Error:Stmt nesting error.
tprint}
{
pop (-string -) tprint}
ifelse}
readonly def / arraytype
{
dup rcheck
{
dup xcheck
{
(
{
)tprint
{
typeprint}
forall (}
) tprint}
{
([)tprint
{
typeprint}
forall (])tprint}
ifelse}
{
pop (-array -) tprint}
ifelse}
readonly def / packedarraytype
{
dup rcheck
{
dup xcheck
{
(
{
)tprint
{
typeprint}
forall (}
) tprint}
{
([)tprint
{
typeprint}
forall (])tprint}
ifelse}
{
pop (-packedarray -) tprint}
ifelse}
readonly def / courier
/ Courier findfont 10 scalefont def end errordict / handleerror
{
systemdict begin $error begin $brkpage begin newerror
{
/newerror false store vmstatus pop pop 0 ne
{
grestoreall}
if errorname (VMerror)
ne
{
showpage}
if initgraphics courier setfont
lmargin 720 moveto errorname (VMerror)
eq
{
userdict / ehsave known
{
clear userdict / ehsave get restore 2 vmreclaim}
if vmstatus exch pop exch pop PrtVMMsg}
{
(ERROR:)
prnt errorname prnt nl (OFFENDING COMMAND:) prnt /
command load prnt $error / ostack known
{
nl nl (STACK:) prnt nl nl $error / ostack get aload length
{
==}
repeat}
if}
ifelse systemdict / showpage get exec (%%[Error:)print errorname = print (; OffendingCommand:)print / command load = print (] %%)
indent: Standard input:30: Error:Stmt nesting error.
= flush} if end
indent: Standard input:31: Error:Stmt nesting error.
end
end} dup 0 systemdict put dup 4 $brkpage put bind readonly
put / currentpacking where
{
pop / setpacking where
{
pop oldpack setpacking}
if}
if
indent: Standard input:34: Error:Unexpected end of file