xref: /plan9/sys/lib/lp/process/pdfgsijs (revision 956c0eaf3abf2dda83b992e8647e26e606481e18)
1#!/bin/rc
2
3# usage: pdfgsijs pdffile
4
5gs -dSAFER -dNOPAUSE -dBATCH -q -s'DEVICE=pswrite' -d'LanguageLevel=2' -s'OutputFile=/tmp/pdf2ps.ps' $1
6
7MODEL=`{echo $LPCLASS | sed 's/(.*\+)?gsijs!([^+]*)(\+.*)?/\2/'}
8NUMBER=`{echo $LPCLASS | sed 's/(.*\+)?gsijs!([^+]*)\+(.*)?/\3/'}
9
10GSTMPFILE=/tmp/pdf^$pid
11
12switch($NUMBER) {
13case 2100
14	GSOPT=(-q -sDEVICE'='ijs -sIjsServer'='hpijs -sDeviceManufacturer'='HP '-sDeviceModel='"$MODEL^' '^$NUMBER" -r600 -sOutputFile'='^$GSTMPFILE  -sPAPERSIZE'='a4 -dIjsUseOutputFD -dSAFER -dNOPAUSE -dBATCH)
15case 2500
16	GSOPT=(-q -sDEVICE'='ijs -sIjsServer'='hpijs -sDeviceManufacturer'='HP '-sDeviceModel='"$MODEL^' '^$NUMBER" -r600 -sOutputFile'='^$GSTMPFILE -dDuplex'='true -sPAPERSIZE'='a4 -dIjsUseOutputFD -dSAFER -dNOPAUSE -DBATCH)
17}
18
19
20if(~ $OLIST '')
21	gs $GSOPT /tmp/pdf2ps.ps
22if not {
23	PGLIST=`{echo $OLIST | sed 's/-o//;s/,/ /g;s/	/ /g' | tr -cd '0-9 -'}
24	GSPGLIST=()
25	for(i in $PGLIST){
26		switch($i){
27		case -*
28			GSPGLIST=($GSPGLIST `{seq 1 `{echo $i|tr -d '-'}})
29		case *-
30			# BUG assume 100 >= number of pages
31			GSPGLIST=($GSPGLIST `{seq `{echo $i|tr -d '-'} 100})
32		case *-*
33			GSPGLIST=($GSPGLIST `{seq `{echo $i|tr '-' ' '}})
34		case *
35			GSPGLIST=($GSPGLIST $i)
36		}
37	}
38	GSPGLIST=$"GSPGLIST
39	echo '
40		/Page null def
41		/Page# 0 def
42		/PDFSave null def
43		/DSCPageCount 0 def
44		/DoPDFPage {dup /Page# exch store pdfgetpage pdfshowpage} def
45		GS_PDF_ProcSet begin
46		pdfdict begin
47		('^$1^') (r) file pdfopen begin
48		/npage pdfpagecount def
49		['^$GSPGLIST^']
50		{
51			dup dup
52				1 ge exch npage le and
53				{ DoPDFPage }
54				{ pop }
55			ifelse
56		} forall
57	' | gs $GSOPT - >/dev/null >[2=1]
58}
59
60cat $GSTMPFILE
61rm -f $GSTMPFILE
62rm -f /tmp/pdf2ps.ps
63exit ''
64