#!/bin/bash

user="$2"
options="$5"
filename="$6"
if [ -f "$filename" ]; then
    exec < "$filename"
fi

file_seq=${CUPS_JOB_FILE_SEQ:=0}
security_attr_name=security_attr_$file_seq

for option in $options
do
    if [[ $option = "${security_attr_name}"* ]]; then
        security_attr_value=${option#*=}
        break
    fi
done

watermark_text="${security_attr_value}"

function echo_watermark_command {
cat << EOF
<<
/BeginPage
{
    pop
    gsave
    /WatermarkCount 3 def
    /WatermarkAngle 30 def
    /WatermarkFontSize 26 def
    /WatermarkTextLength ${#watermark_text} WatermarkFontSize mul 0.4 mul cvi def
    /WatermarkTextWidth WatermarkAngle cos WatermarkTextLength mul cvi def
    /WatermarkTextHeight WatermarkAngle sin WatermarkTextLength mul cvi def
    /PageWidth  currentpagedevice /PageSize get 0 get cvi def
    /PageHeight currentpagedevice /PageSize get 1 get cvi def
    /Xoffset PageWidth WatermarkTextWidth sub 40 sub WatermarkCount 1 sub idiv def
    /Yoffset PageHeight WatermarkTextHeight sub 40 sub WatermarkCount 1 sub idiv def
    /WatermarkShow {
        /Helvetica-Bold WatermarkFontSize selectfont
        WatermarkAngle rotate
        (${watermark_text}) show
        WatermarkAngle neg rotate
    } def
    /Watermark {
        .95 .95 .95 setrgbcolor
        /x 20 def
        /y 20 def
        WatermarkCount {
            x y moveto WatermarkShow
            /x x Xoffset add def
            /y y Yoffset add def
        } repeat
    } def
    Watermark
    grestore
} bind
>> setpagedevice
EOF
}

flag=0
while IFS= read -r line; do
    if [[ $flag -eq 0 ]] && [[ $line =~ ^%%EndProlog$ ]] ; then
        echo_watermark_command
        flag=1
    fi
    echo "$line"
done
exit 0
