#!/bin/sh # # ps-pagenumbering # # Insert additional page numbers in PostScript documents. # # 10.04.1999: Winfried.Beer@dlr.de # # -- evaluate parameters -- startnr=1 files="" pgfile=.pg.$$ trap 'rm -f $pgfile ; exit 2' 1 2 3 15 linebreak=`dirname $0`/linebreak while [ $# -gt 0 ]; do case "$1" in -startnr) shift; startnr=$1; shift;; -*) echo Wrong option \"$1\". >&2 ; exit 1;; *) if [ ! -r "$1" ]; then echo "$1" does not exist or ist not readable. >&2 exit 1; else if [ "$files" = "" ]; then files="$1" else files="$files $1" fi fi shift ;; esac done if [ "$files" = "" ]; then echo 'usage: '`basename $0`' [-startnr n] file1.ps [file2.ps ...]' >&2 exit 1 fi # -- do the main work -- pg=$startnr for f in $files ; do if [ `echo $f | sed -e 's/.gz$//'` != "$f" ]; then catin="gunzip -c" catout="gzip -c" outps=`echo $f | sed -e 's/.gz$//' -e 's/.ps$//'`-pg.ps.gz catout="cat" outps=`echo $f | sed -e 's/.gz$//' -e 's/.ps$//'`-pg.ps else catin=cat catout=cat outps=`echo $f | sed -e 's/.ps$//'`-pg.ps fi outps=`basename $outps` # Pfad abschneiden echo "page $pg: $f -> $outps " touch $pgfile ( $catin $f | $linebreak | grep -v '%DLR-IPA-PSPGNR' | nawk -v pg=$pg ' BEGIN{skip=0; printf " working ",pg >"/dev/stderr" ;} /^%%Page: 0 1/{skip=1; next;} # skip page 0 /^%%Page: /{skip=0; print; printf "%s","gsave 295 25 moveto /Times-Roman 11 selectfont "; printf "( %d ) show ", pg; printf "%s\n","grestore %DLR-IPA-PSPGNR"; printf "..%d",pg >"/dev/stderr" ; pg++; next; } skip==1{next} /^userdict / {sub("sco .* rf ;","sco ;"); print; next;} {print} END{print pg>"'$pgfile'"} ' | $catout > $outps ) 2>&1 pgn=`cat $pgfile` echo if [ "$pgn" -lt "$pg" ]; then echo "internal error." >&2 exit 1 fi pg=`expr $pgn / 2 \* 2 + 1` done echo last page: `expr $pg - 1` rm $pgfile