dpsprinter.ps
上传用户:weiyuanprp
上传日期:2020-05-20
资源大小:1169k
文件大小:3k
源码类别:

传真(Fax)编程

开发平台:

C/C++

  1. %!
  2. %%Title: dpsprinter.ps -- DPS prolog to emulate some printer features.
  3. %%Notice: Copyright (c) 1989 Adobe Systems Incorporated.  All rights reserved.
  4. % $Revision: 1.1.1.1 $
  5. % $Date: 2005/11/11 21:32:03 $
  6. %
  7. % This file makes a number of definitions that are technically system specific
  8. % but are used by many existing PostScript language drivers that were written
  9. % without sufficient attention to the specification.
  10. % This prolog ensures that serverdict, exitserver, and assorted statusdict 
  11. % operators are defined as expected.  The flushfile operator is also redefined
  12. % to allow Macintosh files with a prepended Laser Prep file to work properly.
  13. % There is one special "feature" definition.  The ASCII character 04
  14. % (CTRL-D) is defined as a no-op operator in case the prolog contains
  15. % one to indicate end-of-file in some contexts.
  16. %%BeginProcSet: DPSPrinter 1 0
  17. /serverdict where {%if
  18.   pop
  19. } {%else
  20.   /serverdict 1 dict def
  21. } ifelse
  22. serverdict /exitserver known not {
  23.   % NOTE: We let the usual invalidaccess error occur if serverdict is not
  24.   %       writeable and exitserver is not known.  This is unlikely because
  25.   %       either serverdict was just created (above) or it already existed
  26.   %       in which case exitserver should have been defined.
  27.   serverdict /exitserver
  28.     % int exitserver --
  29.   {
  30.     0 ne {
  31.       /exitserver errordict /invalidaccess get exec
  32.     } if
  33.     {{end} loop} stopped pop % Clear dictstack
  34.     clear
  35.   } bind put
  36. } if
  37. statusdict /execjob known not {
  38.   statusdict /execjob {exec} bind put
  39. } if
  40. userdict /legal known not {
  41.   userdict /legal {} put
  42. } if
  43. userdict /letter known not {
  44.   userdict /letter {} put
  45. } if
  46. userdict /a4 known not {
  47.   userdict /a4 {} put
  48. } if
  49. userdict /b4 known not {
  50.   userdict /b4 {} put
  51. } if
  52. statusdict /pagecount known not {
  53.   statusdict /pagecount 0 put
  54. } if
  55. statusdict /printername known not {
  56.   statusdict /printername (DPS) put
  57. } if
  58. statusdict /setjobtimeout known not {
  59.   statusdict /setjobtimeout {pop} bind put
  60. } if
  61. statusdict /setrealdevice known not {
  62.   statusdict /setrealdevice {} put
  63. } if
  64. statusdict /waittimeout known not {
  65.   statusdict /waittimeout 600 put
  66. } if
  67. % The Mac Laser Prep file executes the flushfile operator to get to the end
  68. % of the prolog.  When documents are saved with the prolog attached, the
  69. % flushfile consumes the document and nothing is printed.  To get around this
  70. % problem the definition of flushfile is changed below to consume bytes of
  71. % input until a PostScript language comment (%) character is found.  The
  72. % rest of the line is then consumed before the revised flushfile terminates.
  73. /*flushfile /flushfile load def
  74. /flushfile
  75.   % file flushfile --
  76. {%def
  77.   {%loop -- search for next percent character in file
  78.     dup % Copy file parameter
  79.     read { % Consume character
  80.       8#045 eq { % Check for ASCII percent character
  81. exit % Leave loop
  82.       } if
  83.     } if
  84.   } loop
  85.   {%loop -- search for newline character at end of comment
  86.     dup % Copy file parameter
  87.     read { % Consume character
  88.       8#012 eq { % Check for ASCII newline character
  89. exit % Leave loop
  90.       } if
  91.     } if
  92.   } loop
  93.   pop % Discard file parameterp
  94. } bind def
  95. (04) cvn {} def % To ignore ^D at the end of prologs.
  96. %%EndProcSet