home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 April / PCWorld_2001-04_cd.bin / Software / Vyzkuste / gs / gs650w32.exe / gs6.50 / lib / pj-gs.sh < prev    next >
Linux/UNIX/POSIX Shell Script  |  2000-12-05  |  7KB  |  290 lines

  1. #!/bin/sh
  2. # $Id: pj-gs.sh,v 1.1 2000/03/09 08:40:40 lpd Exp $
  3.  
  4. # PaintJet driver script for Ghostscript,
  5. # created by Philippe-Andre Prindeville <philipp@res.enst.fr>
  6.  
  7. # PCL level 1 interface
  8. #
  9. #=======================================================================#
  10. # OPTIONS RECOGNIZED: ( all may be preceded with a "-" )        #
  11. #    NOTE: Options marked with a "*" before their descriptions    #
  12. #          are provided for backward compatibility with the        #
  13. #          former hp2225a, hp2227a and hp3630a printer models -    #
  14. #           these models have become links to this model. Consult    #
  15. #          your printer reference manual to determine which        #
  16. #          options are valid for your particular printer.        #
  17. #                                    #
  18. # Horizontal Pitch Selection:                        #
  19. #    c          compressed print mode                #
  20. #    e            * expanded print pitch                #
  21. #    10           * 10 cpi (Pica print pitch)            #
  22. #              (expanded compressed on thinkjet and quietjet)#
  23. #    12           * 12 cpi (Elite print pitch)            #
  24. #                                    #
  25. # Print Quality Selection                        #
  26. #    q | lq           * near letter quality                #
  27. #                                    #
  28. # Font Selection                            #
  29. #    b | bold      * set font stroke weight to bold            #
  30. #                                    #
  31. # Output filtering: (Default Cooked)                    #
  32. #    r | raw        raw mode for plotting mode etc.            #
  33. #                                    #
  34. # Other:                                #
  35. #       nb        do not output banner page (to save paper)    #
  36. #                                    #
  37. #        NOTE: * = NOT OFFICIAL PCL LEVEL 1 OPTIONS, USE OF    #
  38. #              THESE OPTIONS MAY OR MAY NOT PRODUCE        #
  39. #              DESIRED RESULTS.                #
  40. #=======================================================================# 
  41.  
  42. PATH="/bin:/usr/bin:/usr/lib:/usr/local/bin"
  43. export PATH
  44.  
  45. # set up redirection of stderr
  46. log=/usr/spool/lp/log
  47. exec 2>>$log
  48.  
  49. # sec_class=`getconf SECURITY_CLASS`
  50. sec_class=
  51. if [ $? -ne 0 ]
  52. then
  53.         echo "getconf SECURITY_CLASS failed"
  54. fi
  55.  
  56. # Save the arguments to the model
  57. printer=`basename $0`
  58.  
  59. if [ "$sec_class" = "2" ]       # B1 Trusted System
  60. then
  61.     reqid=$1
  62.     user=$2
  63.     dev=$3
  64.     title=$4
  65.     copies=$5
  66.     options=$6
  67. else
  68.     reqid=$1
  69.     user=$2
  70.     title=$3
  71.     copies=$4
  72.     options=$5
  73. fi
  74.  
  75.  
  76. # Definitions of functions used within this script
  77. do_banner()
  78. {
  79.     # Print the standard header
  80.     x="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  81.     echo "$x\n$x\n$x\n$x\n"
  82.     banner `echo $user`
  83.     echo "\n"
  84.     user=`pwget -n $user | line | cut -d: -f5`
  85.     if [ -n "$user" ]
  86.     then
  87.         echo "User: $user\n"
  88.     else
  89.         echo "\n"
  90.     fi
  91.     echo "Request id: $reqid    Printer: `basename $0`\n"
  92.     date
  93.     echo "\n"
  94.     if [ -n "$title" ]
  95.     then
  96.         banner "$title" 
  97.     fi
  98.     echo "\014\r\c"
  99. }
  100.  
  101. # Set up interface
  102. if [ -t 1 ]
  103. then
  104.     stty 9600 opost onlcr -parenb cs8 ixon -istrip clocal tab3 <&1 2>/dev/null
  105. else
  106.     slp -n -k 2>/dev/null
  107. fi
  108.  
  109. # Handle disable and cancel traps.
  110. trap "echo 'Terminated: $reqid'  >> $log; trap 15; kill -15 0; exit 0 " 15
  111.  
  112. # Set up printer default modes
  113. echo "\033&k0S\c"        # reset pitches
  114. echo "\033(s0B\033)s0B\c"    # reset stroke weights
  115. echo "\033&d@\c"        # disable auto-underline
  116. echo "\033&l6D\c"        # reset to 6 lpi
  117. echo "\033(s0Q\c"        # reset print quality
  118. echo "\033&v0S\c"        # reset color
  119. echo "\033&k2G\c"        # Set line termination mode
  120.  
  121.  
  122. # Determine which options have been invoked
  123. pitch="def"
  124. weight="def"
  125. quality="def"
  126. # outputmode="cooked"
  127. outputmode="raw"
  128. # banner="yes"
  129. banner=
  130.  
  131. for i in $options
  132. do
  133.     case "$i" in
  134.     -c | c)   # compressed print
  135.         pitch="c";;
  136.  
  137.     -e | e)   # expanded print
  138.         pitch="e";;
  139.  
  140.     -10 | 10) # pitch set to 10 cpi
  141.         pitch="10";;
  142.  
  143.     -12 | 12) # pitch set to 12 cpi
  144.         pitch="12";;
  145.  
  146.     -q | q | -lq | lq) # near letter quality
  147.         quality=1;;
  148.  
  149.     -b | b | -bold | bold) # set font weight to bold
  150.         weight=1;;
  151.  
  152.     r | raw) # raw mode for binary output to printer
  153.         outputmode="raw";;
  154.  
  155.     -nb | nb) # do not output banner page
  156.         banner="";;
  157.  
  158.     esac
  159. done
  160.  
  161. shift; shift; shift; shift; shift
  162.  
  163. if [ "$sec_class" = "2" ]       # B1 Trusted System
  164. then
  165.     shift
  166.     files="$*"
  167.     Nofilter= Nolabel=
  168.     set -- `getopt fl $options`
  169.     if [ $? != 0 ]
  170.     then
  171.         exit 2
  172.     fi
  173.  
  174.     for opt in $*
  175.     do
  176.         shift
  177.         case $opt in
  178.           -f) Nofilter=$opt ;;
  179.           -l) Nolabel=$opt ;;
  180.           --) break ;;
  181.         esac
  182.     done
  183.  
  184.     # Print the sensitivity label of the process
  185.     echo "$x\n$x\n"
  186.     /usr/lib/lpbanner -j $reqid -t "$title" -u $user -p PCL1 -n $printer -d $dev $files
  187.     echo "\n$x\n$x"
  188.  
  189. else
  190.     # Assume that the rest of the arguments are files
  191.     files="$*"
  192.     # print the banner if nb option not specified
  193.     if [ -n "$banner" ]
  194.     then
  195.         do_banner
  196.     fi
  197. fi
  198.  
  199. # Print the spooled files
  200. i=1
  201. while [ $i -le $copies ]
  202. do
  203.         for file in $files
  204.         do
  205.  
  206.             # If raw mode, turn off output processing,
  207.             # set for no tab expansion
  208.             # If cooked mode, uncomment the cooked case if it is 
  209.             # desired not to print on the page perforations
  210.             case "$outputmode" in
  211.                 raw)    if [ -t 1 ]
  212.                     then
  213.                         stty raw 9600 -opost -parenb cs8 ixon -istrip clocal tab0 <&1 2>/dev/null
  214.                     else
  215.                         slp -r 2>/dev/null
  216.                     fi
  217.                     echo "\033&k0G";;        # Reset line termination mode
  218.             #    cooked)    echo "\033&l1L\r\c";;
  219.             esac
  220.  
  221.             case "$pitch" in
  222.                 def);;
  223.                 c)    echo "\033&k2S\r\c";;
  224.                 e)    echo "\033&k1S\r\c";;
  225.                 10)    echo "\033&k3S\r\c";;
  226.                 12)    echo "\033&k0S\r\c"
  227.                     echo "\033&k4S\r\c";;
  228.             esac
  229.  
  230.             case "$quality" in
  231.                 def);;
  232.                 *)    echo "\033(s${quality}Q\r\c";;
  233.             esac
  234.  
  235.             case "$weight" in
  236.                 def)    echo "\033(s0B\033)s0B\r\c";;
  237.                 *)    echo "\033(s${weight}B\r\c";;
  238.             esac
  239.  
  240.             if [ "$sec_class" = "2" ]    # B1 Trusted System
  241.             then
  242.                 /usr/lib/lprcat $Nofilter $Nolabel $file PCL1 $user $dev
  243.             else
  244.                 type=`file $file | sed 's/^[^:]*..//'`
  245.                 case "$type" in
  246.                 postscript*)
  247. #
  248. # We could do the following, but this would leave gs with a rather large
  249. # image in memory for (possibly) several minutes.  Better to use and
  250. # intermediate file, since cat is "lightweight"...
  251. #
  252. #                    gs -q -sDEVICE=paintjet -r180 -sOutputFile=- -dDISKFONTS -dNOPAUSE - < $file 2>/tmp/sh$$
  253.  
  254.                     gs -q -sDEVICE=paintjet -r180 -sOutputFile=/tmp/pj$$ -dDISKFONTS -dNOPAUSE - < $file 1>2
  255.                     cat /tmp/pj$$
  256.                     rm /tmp/pj$$
  257.                     needff=
  258.                     ;;
  259.                 *)    cat "$file" 2>/tmp/sh$$
  260.                     needff=1
  261.                     ;;
  262.                 esac
  263.  
  264.                 if [ -s /tmp/sh$$ ]
  265.                 then
  266. #                    cat /tmp/sh$$    # output any errors
  267.                     cat /tmp/sh$$ 1>2    # output any errors
  268.                 fi
  269.                 rm -f /tmp/sh$$
  270.                 if [ $needff ]; then echo "\014\r\c"; fi
  271.             fi
  272.  
  273.             echo "\033&k0S\r\c"        # reset pitches
  274.             echo "\033(s0B\033)s0B\r\c"    # reset stroke weights
  275.             echo "\033&d@\r\c"        # disable auto-underline
  276.             echo "\033&l6D\r\c"        # reset to 6 lpi
  277.             echo "\033(s0Q\c"        # reset print quality
  278.             echo "\033&v0S\c"        # reset color
  279.         done
  280.         i=`expr $i + 1`
  281.     done
  282.  
  283. # Insure all buffers are flushed to printer
  284. if [ -t 1 ]
  285. then
  286.     stty 9600 opost onlcr -parenb cs8 ixon -istrip clocal tab3 <&1 2>/dev/null
  287. fi
  288.  
  289. exit 0
  290.