#!/bin/bash
echo "DEBUG: (pdftoraster) CONTENT_TYPE=${CONTENT_TYPE}" >&2

if [ $# -lt 6 ]; then
  IN=-_
else
  IN="$6"
fi

COMPOSITE_PAM_TO_RASTER=/usr/lib/Matica/cups/xid8300/bin/xid8300pamtoraster
GS_OPTIONS="-I/usr/share/cups/fonts -dNOINTERPOLATE -dNOPAUSE -dBATCH -dSAFER -dPARANOIDSAFER -dSHORTERRORS -dWRITESYSTEMDICT -dGHOSTSCRIPT -sstdout=%stderr "

# save stdin to tmp file.
if [ $# -lt 6 ]; then
  INPUTFILE=`mktemp /tmp/cache.XXXXXX` || exit 1
  cat - > "$INPUTFILE" 
else
  INPUTFILE="$6"
fi

# check collate argument.
ARR=($5)
ContainCollate=0
for i in "${ARR[@]}"
do
	if [ "${i^^}" == "COLLATE" ];then
		ContainCollate=1
	fi
done

NumCopy=$4
ContentTypePDF=0
if [ "$CONTENT_TYPE" == "application/pdf" ]; then
	ContentTypePDF=1
fi

# text PAM(cmyk) file.
# -r300 resolution
TMPDIR1=`mktemp -d /tmp/onlyTxtPam.XXXXXX` || exit 1
gs "$GS_OPTIONS" -r300 -sDEVICE=pamcmyk32 -dFILTERIMAGE -dFILTERVECTOR -o "$TMPDIR1"/txt_cmyk_%03d.pam "$INPUTFILE" >> /dev/null 
RET1=$?
echo "DEBUG: (pdftoraster) cmyk:${RET1}" >&2

# text PPM(RGB) file.
# -r300 resolution
gs "$GS_OPTIONS" -r300 -sDEVICE=ppmraw -dFILTERIMAGE -dFILTERVECTOR -o "$TMPDIR1"/txt_rgb_%03d.pam "$INPUTFILE" >> /dev/null 
RET11=$?
echo "DEBUG: (pdftoraster) rgb:${RET11}" >&2

# no text PAM file.
# -r300 resolution
TMPDIR2=`mktemp -d /tmp/noTxtPam.XXXXXX` || exit 1
gs "$GS_OPTIONS" -r300 -sDEVICE=pamcmyk32 -o "$TMPDIR2"/noTxt%03d.pam "$INPUTFILE" > /dev/null
RET2=$?
echo "DEBUG: (pdftoraster) no text:${RET2}" >&2

# composite to raster.
"$COMPOSITE_PAM_TO_RASTER" "$TMPDIR1" "$TMPDIR2" "$NumCopy" "$ContainCollate" "$ContentTypePDF"
RET=$?
echo "DEBUG: (pdftoraster) composite to raseter:${RET} TMPDIR1=${TMPDIR1}, TMPDIR2=${TMPDIR2}, NumCopy=${NumCopy}, ContainCollate=${ContainCollate} ContentTypePDF=${ContentTypePDF}" >&2

# clean up tmp files.
if [ $# -lt 6 ]; then
  rm -f "$INPUTFILE"
fi
rm -rf "$TMPDIR1"
rm -rf "$TMPDIR2"

if [ "$RET" -ne 0 ]; then
	echo "DEBUG: (pdftoraster) exit 1" >&2
	exit 1
fi

echo "DEBUG: (pdftoraster) exit 0" >&2
exit 0
