--- lib/gs_setpd.ps.orig Tue Sep 14 07:32:19 2004 +++ lib/gs_setpd.ps Tue May 24 22:20:49 2005 @@ -377,21 +377,42 @@ /MediaPosition { dup //null ne { pop //null } if } bind .dicttomark readonly def -% Define the keys used in input attribute matching. -/.inputattrkeys [ - /PageSize /MediaColor /MediaWeight /MediaType /InsertSheet - % The following are documented in Adobe's supplement for v2017. - /LeadingEdge /MediaClass -] readonly def -% Define other keys used in media selection. -/.inputselectionkeys [ - /MediaPosition /Orientation -] readonly def - -% Define the keys used in output attribute matching. -/.outputattrkeys [ - /OutputType -] readonly def +% M. Sweet, Easy Software Products: +% +% Define NOMEDIAATTRS to turn off the default (but unimplementable) media +% selection policies for setpagedevice. This is used by CUPS to support +% the standard Adobe media attributes. +NOMEDIAATTRS { + % Define only PageSize for input attribute matching. + /.inputattrkeys [ + /PageSize + ] readonly def + % Define no other keys used in media selection. + /.inputselectionkeys [ + /noInputSelectionsKeys + ] readonly def + + % Define no keys used in output attribute matching. + /.outputattrkeys [ + /noOutputAttrKeys + ] readonly def +} { + % Define the keys used in input attribute matching. + /.inputattrkeys [ + /PageSize /MediaColor /MediaWeight /MediaType /InsertSheet + % The following are documented in Adobe's supplement for v2017. + /LeadingEdge /MediaClass + ] readonly def + % Define other keys used in media selection. + /.inputselectionkeys [ + /MediaPosition /Orientation + ] readonly def + + % Define the keys used in output attribute matching. + /.outputattrkeys [ + /OutputType + ] readonly def +} ifelse % Define all the parameters that should always be copied to the merged % dictionary. @@ -420,7 +441,13 @@ /PageSize //false % obsolete alias for .MediaSize /InputAttributes //false .inputattrkeys - { dup /PageSize eq + % M. Sweet, Easy Software Products: + % + % Treat LeadingEdge like PageSize so that a common Ghostscript driver + % doesn't need the NOMEDIAATTRS definition. + % + % { dup /PageSize eq + { dup dup /PageSize eq exch /LeadingEdge eq or { pop } { { 2 index /InputAttributes .knownget { //null eq } { //true } ifelse } } ifelse @@ -501,11 +528,22 @@ % They are expected to consume the top 2 operands. % NOTE: we currently treat all values other than 0, 1, or 7 (for PageSize) % the same as 0, i.e., we signal an error. +% +% M. Sweet, Easy Software Products: +% +% Define NOMEDIAATTRS to turn off the default (but unimplementable) media +% selection policies for setpagedevice. This is used by CUPS to support +% the standard Adobe media attributes. 0 { % Set errorinfo and signal a configurationerror. + NOMEDIAATTRS { + % NOMEDIAATTRS means that the default policy is 7... + pop 2 index exch 7 put + } { pop dup 4 index exch get 2 array astore $error /errorinfo 3 -1 roll put cleartomark /setpagedevice load /configurationerror signalerror + } ifelse } bind 1 { % Roll back the failed request to its previous status. SETPDDEBUG { (Rolling back.) = pstack flush } if