Asynchronous printing implemented
This commit is contained in:
parent
d3cc904c24
commit
f6c2cff604
|
@ -1,10 +1,26 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
function trapINT() {
|
||||||
|
[ "x$trp" = "x" ] && trp="yes" || return
|
||||||
|
# pid=`ps a | grep $uid | grep -v grep | awk ' { print $1 } '`
|
||||||
|
# [ ! "x$pid" = "x" ] && { kill $pid; sleep 5; }
|
||||||
|
sleep 3
|
||||||
|
rm -rf $uid
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
function stop() {
|
||||||
|
echo "stop" > $uid/999999999-page.pbm
|
||||||
|
}
|
||||||
|
|
||||||
|
trap "stop; trapINT" SIGINT SIGTERM SIGQUIT
|
||||||
|
#trap 'echo No' SIGINT SIGTERM SIGQUIT EXIT;
|
||||||
# Username
|
# Username
|
||||||
user="$2"
|
user="$2"
|
||||||
|
|
||||||
# Page title (not used at this time, "Document" instead)
|
# Page title (not used at this time, "Document" instead)
|
||||||
ptitle="$3"
|
ptitle="$3"
|
||||||
|
my="$0"
|
||||||
|
|
||||||
# Printing date
|
# Printing date
|
||||||
ddate="`LC_ALL=en_US.UTF-8 date '+%Y/%m/%d %H:%M:%S'`"
|
ddate="`LC_ALL=en_US.UTF-8 date '+%Y/%m/%d %H:%M:%S'`"
|
||||||
|
@ -13,11 +29,12 @@ ddate="`LC_ALL=en_US.UTF-8 date '+%Y/%m/%d %H:%M:%S'`"
|
||||||
uid="/tmp/pstoricohddst-gdi-`uuidgen`"
|
uid="/tmp/pstoricohddst-gdi-`uuidgen`"
|
||||||
mkdir -p $uid
|
mkdir -p $uid
|
||||||
|
|
||||||
# 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 -
|
stage="empty"
|
||||||
|
inotifywait -q -m -r -e close_write --format '%f' $uid | grep --line-buffered 'page.pbm$' | while read page; do
|
||||||
# Flushing PJL header
|
[ "$stage" = "empty" ] && {
|
||||||
cat <<EOF
|
# Flushing PJL header
|
||||||
|
cat <<EOF
|
||||||
%-12345X@PJL
|
%-12345X@PJL
|
||||||
@PJL SET TIMESTAMP=$ddate
|
@PJL SET TIMESTAMP=$ddate
|
||||||
@PJL SET FILENAME=Document
|
@PJL SET FILENAME=Document
|
||||||
|
@ -27,19 +44,30 @@ cat <<EOF
|
||||||
@PJL SET HOLD=OFF
|
@PJL SET HOLD=OFF
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
ls $uid/ | grep 'pbm$' | sort -n | while read page; do
|
stage="printing"
|
||||||
|
}
|
||||||
|
[ "$page" = "999999999-page.pbm" ] && {
|
||||||
|
# Flushing PJL footer
|
||||||
|
cat <<EOF
|
||||||
|
@PJL EOJ
|
||||||
|
%-12345X
|
||||||
|
EOF
|
||||||
|
pid=`ps a | grep $uid | grep -v grep | awk ' { print $1 } '`
|
||||||
|
[ ! "x$pid" = "x" ] && kill $pid
|
||||||
|
break
|
||||||
|
}
|
||||||
|
[ "$stage" = "printing" ] && {
|
||||||
|
# Converting page to JBIG format (parameters are very special for this printer!)
|
||||||
|
pbmtojbg -p 72 -o 3 -m 0 -q < $uid/$page > $uid/raster.jbig
|
||||||
|
|
||||||
# Converting page to JBIG format (parameters are very special for this printer!)
|
# Taking image size
|
||||||
pbmtojbg -p 72 -o 3 -m 0 -q < $uid/$page > $uid/raster.jbig
|
jsize=`wc -c < $uid/raster.jbig`
|
||||||
|
|
||||||
# Taking image size
|
# Taking image dimensions
|
||||||
jsize=`wc -c < $uid/raster.jbig`
|
read fn ft xs ys garb < <(identify $uid/raster.jbig | tr "x" " ")
|
||||||
|
|
||||||
# Taking image dimensions
|
# Flushing page header
|
||||||
read fn ft xs ys garb < <(identify $uid/raster.jbig | tr "x" " ")
|
cat <<EOF
|
||||||
|
|
||||||
# Flushing page header
|
|
||||||
cat <<EOF
|
|
||||||
@PJL SET PAGESTATUS=START
|
@PJL SET PAGESTATUS=START
|
||||||
@PJL SET COPIES=1
|
@PJL SET COPIES=1
|
||||||
@PJL SET MEDIASOURCE=AUTO
|
@PJL SET MEDIASOURCE=AUTO
|
||||||
|
@ -51,23 +79,32 @@ ls $uid/ | grep 'pbm$' | sort -n | while read page; do
|
||||||
@PJL SET IMAGELEN=$jsize
|
@PJL SET IMAGELEN=$jsize
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Flushing image
|
# Flushing image
|
||||||
cat $uid/raster.jbig
|
cat $uid/raster.jbig
|
||||||
|
|
||||||
# Flushing page footer
|
# Flushing page footer
|
||||||
# TODO: pixelcount for toner estimate
|
# TODO: pixelcount for toner estimate
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
@PJL SET DOTCOUNT=1132782
|
@PJL SET DOTCOUNT=1132782
|
||||||
@PJL SET PAGESTATUS=END
|
@PJL SET PAGESTATUS=END
|
||||||
EOF
|
EOF
|
||||||
|
}
|
||||||
|
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 -
|
||||||
|
|
||||||
|
|
||||||
|
stop
|
||||||
|
wait
|
||||||
|
|
||||||
|
trapINT
|
||||||
|
|
||||||
|
exit
|
||||||
|
|
||||||
|
ls $uid/ | grep 'pbm$' | sort -n | while read page; do
|
||||||
|
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
# Flushing PJL footer
|
|
||||||
cat <<EOF
|
|
||||||
@PJL EOJ
|
|
||||||
%-12345X
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Cleaning up
|
|
||||||
rm -rf $uid
|
|
||||||
|
|
Loading…
Reference in a new issue