Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#!/bin/rc

# usage: pdfgsijs pdffile

gs -dSAFER -dNOPAUSE -dBATCH -q -s'DEVICE=pswrite' -d'LanguageLevel=2' -s'OutputFile=/tmp/pdf2ps.ps' $1

MODEL=`{echo $LPCLASS | sed 's/(.*\+)?gsijs!([^+]*)(\+.*)?/\2/'}
NUMBER=`{echo $LPCLASS | sed 's/(.*\+)?gsijs!([^+]*)\+(.*)?/\3/'}

GSTMPFILE=/tmp/pdf^$pid

switch($NUMBER) {
case 2100
        GSOPT=(-q -sDEVICE'='ijs -sIjsServer'='hpijs -sDeviceManufacturer'='HP '-sDeviceModel='"$MODEL^' '^$NUMBER" -r600 -sOutputFile'='^$GSTMPFILE  -sPAPERSIZE'='a4 -dIjsUseOutputFD -dSAFER -dNOPAUSE -dBATCH)
case 2500
        GSOPT=(-q -sDEVICE'='ijs -sIjsServer'='hpijs -sDeviceManufacturer'='HP '-sDeviceModel='"$MODEL^' '^$NUMBER" -r600 -sOutputFile'='^$GSTMPFILE -dDuplex'='true -sPAPERSIZE'='a4 -dIjsUseOutputFD -dSAFER -dNOPAUSE -DBATCH)
}


if(~ $OLIST '')
        gs $GSOPT /tmp/pdf2ps.ps
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
rm -f /tmp/pdf2ps.ps
exit ''