123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #!/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 ''
|