|  | #!/usr/local/plan9/bin/rc | 
|  |  | 
|  | # | 
|  | # we don't go through postscript, because to | 
|  | # get to postscript, we send the pdf through gs! | 
|  | # much easier to just go directly. | 
|  | # | 
|  |  | 
|  | # usage: pdfgs pdffile [gsdev] | 
|  |  | 
|  | switch($#*) { | 
|  | case 2 | 
|  | GSDEVICE=$2 | 
|  | case 1 | 
|  | GSDEVICE=`{echo $LPCLASS | sed 's/(.*\+)?gs!([^+]*)(\+.*)?/\2/'} | 
|  | case * | 
|  | echo 'usage: pdfgs pdffile [gsdev]' >[1=2] | 
|  | } | 
|  |  | 
|  | GSTMPFILE=/tmp/pdf^$pid | 
|  | GSOPT=('-sDEVICE='$GSDEVICE '-sOutputFile='^$GSTMPFILE -dSAFER -dNOPAUSE -dQUIET -dBATCH -dNOPAUSE) | 
|  |  | 
|  | # | 
|  | # RSC: pswrite produces weird overbars on various | 
|  | # letters, most notably Times-Roman A and h, unless | 
|  | # we use LanguageLevel=1.  This doesn't seem to be | 
|  | # constrained to hp4simx printers, so just use LanguageLevel 1 | 
|  | # all the time. | 
|  | # | 
|  |  | 
|  | #if(~ $dev pswrite && ~ $LPCLASS *hp4simx*) | 
|  | #	GSOPT=($GSOPT '-dLanguageLevel=1') | 
|  | if(~ $GSDEVICE pswrite) | 
|  | GSOPT=($GSOPT '-dLanguageLevel=1') | 
|  |  | 
|  | if(~ $OLIST '') | 
|  | gs $GSOPT $1 | 
|  | if not { | 
|  | PGLIST=`{echo $OLIST | sed 's/-o//;s/,/ /g;s/	/ /g' | tr -cd '0-9 -'} | 
|  | GSPGLIST=() | 
|  | for(i in $PGLIST){ | 
|  | switch($i){ | 
|  | case -* | 
|  | GSPGLIST=($GSPGLIST `{seq 1 `{echo $i|tr -d '-'}}) | 
|  | case *- | 
|  | # BUG assume 100 >= number of pages | 
|  | GSPGLIST=($GSPGLIST `{seq `{echo $i|tr -d '-'} 100}) | 
|  | case *-* | 
|  | GSPGLIST=($GSPGLIST `{seq `{echo $i|tr '-' ' '}}) | 
|  | case * | 
|  | GSPGLIST=($GSPGLIST $i) | 
|  | } | 
|  | } | 
|  | GSPGLIST=$"GSPGLIST | 
|  | echo ' | 
|  | /Page null def | 
|  | /Page# 0 def | 
|  | /PDFSave null def | 
|  | /DSCPageCount 0 def | 
|  | /DoPDFPage {dup /Page# exch store pdfgetpage pdfshowpage} def | 
|  | GS_PDF_ProcSet begin | 
|  | pdfdict begin | 
|  | ('^$1^') (r) file pdfopen begin | 
|  | /npage pdfpagecount def | 
|  | ['^$GSPGLIST^'] | 
|  | { | 
|  | dup dup | 
|  | 1 ge exch npage le and | 
|  | { DoPDFPage } | 
|  | { pop } | 
|  | ifelse | 
|  | } forall | 
|  | ' | gs $GSOPT - >/dev/null >[2=1] | 
|  | } | 
|  |  | 
|  | cat $GSTMPFILE | 
|  | rm -f $GSTMPFILE | 
|  | exit '' |