Modified for systems without inotify (e.g. OS X, *BSD, etc)

This commit is contained in:
Serge V Shistarev 2014-03-21 18:05:09 +09:00
parent dcf4680d1a
commit a45bb470ad

View file

@ -30,6 +30,8 @@ ddate="`LC_ALL=en_US.UTF-8 date '+%Y/%m/%d %H:%M:%S'`"
uid="/tmp/pstoricohddst-gdi-`uuidgen`"
mkdir -p $uid
[ -x "/usr/bin/inotifywait" ] && {
(
stage="empty"
inotifywait -q -m -r -e close_write --format '%f' $uid | grep --line-buffered 'page.pbm$' | while read page; do
@ -95,9 +97,67 @@ done
) &
# Converting from PostScript to PostScript-monochrome, then to PBM image format (per page)
gs -sDEVICE=psmono -sOutputFile=- -r600 -dQUIET -dBATCH -dNOPAUSE - | gs -sDEVICE=pbmraw -sOutputFile=${uid}/%d-page.pbm -r600 -dQUIET -dBATCH -dNOPAUSE -
gs -sDEVICE=ps2write -sOutputFile=- -r600 -dQUIET -dBATCH -dNOPAUSE - | gs -sDEVICE=pbmraw -sOutputFile=${uid}/%03d-page.pbm -r600 -dQUIET -dBATCH -dNOPAUSE -
stop
wait
trapINT
} || {
# Converting from PostScript to PostScript-monochrome, then to PBM image format (per page)
gs -sDEVICE=ps2write -sOutputFile=- -r600 -dQUIET -dBATCH -dNOPAUSE - | gs -sDEVICE=pbmraw -sOutputFile=${uid}/%03d-page.pbm -r600 -dQUIET -dBATCH -dNOPAUSE -
cat <<EOF
%-12345X@PJL
@PJL SET TIMESTAMP=$ddate
@PJL SET FILENAME=Document
@PJL SET COMPRESS=JBIG
@PJL SET USERNAME=$user
@PJL SET COVER=OFF
@PJL SET HOLD=OFF
EOF
for page in ${uid}/*-page.pbm; do
# Converting page to JBIG format (parameters are very special for this printer!)
pbmtojbg -p 72 -o 3 -m 0 -q < $page > $uid/raster.jbig
# Taking image size
jsize=`wc -c < $uid/raster.jbig`
# Taking image dimensions
read fn ft xs ys garb < <(identify $page | tr "x" " ")
# Flushing page header
cat <<EOF
@PJL SET PAGESTATUS=START
@PJL SET COPIES=1
@PJL SET MEDIASOURCE=AUTO
@PJL SET MEDIATYPE=PLAINRECYCLE
@PJL SET PAPER=A4
@PJL SET PAPERWIDTH=$xs
@PJL SET PAPERLENGTH=$ys
@PJL SET RESOLUTION=600
@PJL SET IMAGELEN=$jsize
EOF
# Flushing image
cat $uid/raster.jbig
# Flushing page footer
# TODO: pixelcount for toner estimate
cat <<EOF
@PJL SET DOTCOUNT=1132782
@PJL SET PAGESTATUS=END
EOF
done
# Flushing PJL footer
cat <<EOF
@PJL EOJ
%-12345X
EOF
}