#!/bin/bash # .registrazione view_form_input() { # eventuali dati pre form input TMP_FORM_FILE=/tmp/$BASE_NAME.prev if [ -f $TMP_FORM_FILE ]; then load_value_session $TMP_FORM_FILE elif [ -f $HOME_DIR/etc/${BASE_NAME}.default ]; then load_value_session $HOME_DIR/etc/${BASE_NAME}.default fi if [ "$BASE_NAME" = "registrazione-business" ]; then # -------------------------------------- # value to skip: (input type select) # -------------------------------------- # "contratto_profilo = $v23" # -------------------------------------- printf -v OUTPUT "`cat $FORM_FILE_DIR/$BASE_NAME.tmpl`" \ "$v1" "$v2" "$v3" "$v4" "$v5" "$v6" "$v7" "$v8" "$v9" "${v10}" "${v11}" "${v12}" "${v13}" "${v14}" \ "${v15}" "${v16}" "${v17}" "${v18}" "${v19}" "${v20}" "${v21}" "${v22}" "${v24}" else # -------------------------------------- # value to skip: (input type select) # -------------------------------------- # "dati_utente_sesso = $v5" # "dati_utente_tipo_di_documento = $v11" # "dominio = $v29" # -------------------------------------- printf -v OUTPUT "`cat $FORM_FILE_DIR/$BASE_NAME.tmpl`" \ "$v2" "$v1" "$v3" "$v4" "$v6" "$v7" "$v8" "$v9" "${v10}" "${v12}" \ "${v13}" "${v14}" "${v15}" "${v16}" "${v17}" "${v18}" "${v19}" "${v20}" "${v21}" "${v22}" "${v23}" "${v24}" \ "${v25}" "${v26}" "${v27}" "${v28}" "${v30}" fi } load_value_session() { i=0 while read LINE do LINE=${LINE//\"/\\\"} eval v$i=\"$LINE\" let "i = i + 1" done < $1 } load_value_session_with_xml_escape() { i=0 while read LINE do LINE=${LINE//&/&} LINE=${LINE///>} LINE=${LINE//\'/'} LINE=${LINE//\"/"} eval v$i=\"$LINE\" let "i = i + 1" done < $1 } save_value_session() { cat <$TMP_FORM_FILE $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} ${14} ${15} ${16} ${17} ${18} ${19} ${20} ${21} ${22} ${23} ${24} ${25} ${26} ${27} ${28} ${29} ${30} ${31} ${32} ${33} ${34} END } visualizza_contratto() { if [ ! -d $DIR_SCAN ]; then mkdir -p $DIR_SCAN fi FORM_STAMPA="`cat $FORM_FILE_DIR/stampa.js`" FORM_1="`cat $FORM_FILE_DIR/contratto-privacy.html`" FORM_2="`cat $FORM_FILE_DIR/contratto-informativa.html`" if [ ! -f $DIR_SCAN/page01.tiff ]; then DISABLE='disabled="1"' fi printf -v FORM_BOTTONI "`cat $FORM_FILE_DIR/contratto-bottoni.tmpl`" $BASE_NAME "$ATTIVA_SCANSIONE_MULTIPLA" $DISABLE $DISABLE TMP_FORM_FILE=$DIR_SCAN/$BASE_NAME.curr FORM_FILE="`cat $FORM_FILE_DIR/contratto-$BASE_NAME.tmpl`" if [ "$BASE_NAME" = "registrazione-business" ]; then # -------------------------------------- # value to skip # -------------------------------------- # "cn = $11" # "email_altro = $12" # -------------------------------------- if [ $# -eq 25 ]; then printf -v OUTPUT "$FORM_FILE" "$FORM_STAMPA" \ "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" \ "${13}" "${14}" "${15}" "${16}" "${17}" "${18}" "${19}" "${20}" "${21}" "${22}" "${23}" "${24}" \ "$FORM_1" "$FORM_2" "$FORM_BOTTONI" save_value_session "" "$@" elif [ $# -eq 0 ]; then if [ -f $TMP_FORM_FILE ]; then load_value_session $TMP_FORM_FILE fi printf -v OUTPUT "$FORM_FILE" "$FORM_STAMPA" \ "$v1" "$v2" "$v3" "$v4" "$v5" "$v6" "$v7" "$v8" "$v9" "${v10}" \ "${v13}" "${v14}" "${v15}" "${v16}" "${v17}" "${v18}" "${v19}" "${v20}" "${v21}" "${v22}" "${v23}" "${v24}" \ "$FORM_1" "$FORM_2" "$FORM_BOTTONI" fi else if [ $# -eq 31 ]; then printf -v OUTPUT "$FORM_FILE" "$FORM_STAMPA" \ "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" "${10}" \ "${11}" "${12}" "${13}" "${14}" "${15}" "${16}" "${17}" "${18}" "${19}" "${20}" "${21}" "${22}" "${23}" "${24}" \ "${25}" "${26}" "${27}" "${28}" "$FORM_1" "$FORM_2" "$FORM_BOTTONI" save_value_session "" "$@" elif [ $# -eq 0 ]; then if [ -f $TMP_FORM_FILE ]; then load_value_session $TMP_FORM_FILE fi printf -v OUTPUT "$FORM_FILE" "$FORM_STAMPA" \ "$v1" "$v2" "$v3" "$v4" "$v5" "$v6" "$v7" "$v8" "$v9" "${v10}" "${v11}" "${v12}" \ "${v13}" "${v14}" "${v15}" "${v16}" "${v17}" "${v18}" "${v19}" "${v20}" "${v21}" "${v22}" "${v23}" "${v24}" \ "${v25}" "${v26}" "${v27}" "${v28}" "$FORM_1" "$FORM_2" "$FORM_BOTTONI" fi fi } visualizza_rid() { FORM_STAMPA="`cat $FORM_FILE_DIR/stampa.js`" printf -v FORM_BOTTONI "`cat $FORM_FILE_DIR/rid-bottoni.tmpl`" $BASE_NAME TMP_FORM_FILE=$DIR_SCAN/$BASE_NAME.curr if [ -f $TMP_FORM_FILE ]; then load_value_session $TMP_FORM_FILE fi CODICE_FISCALE=$(eval "echo \$$(echo v${1})") printf -v OUTPUT "`cat $FORM_FILE_DIR/rid.tmpl`" "$FORM_STAMPA" "$2" $CODICE_FISCALE "$FORM_BOTTONI" } errore_scansione() { if [ "$BASE_NAME" = "registrazione-business" ]; then TIPO="BUSINESS" else TIPO="RESIDENZIALE CON CPE" fi printf -v OUTPUT "`cat $FORM_FILE_DIR/error.tmpl`" "$TIPO" "$DEVICE_SCANNER" "`scanimage -L 2>/dev/null`" $BASE_NAME } # --------------------------------------------------------------------------------------------- # scanimage --help -d $DEVICE_SCANNER # --------------------------------------------------------------------------------------------- # Options specific to device `net:ra-station:hpaio:/usb/HP_LaserJet_3055?serial=00CNCK343927': # Scan mode: # --mode Lineart|Gray|Color [Color] # Selects the scan mode (e.g., lineart, monochrome, or color). # --resolution 75|100|150|200|300|600|1200dpi [75] # Sets the resolution of the scanned image. # Advanced: # --contrast 0..100 [inactive] # Controls the contrast of the acquired image. # --compression None|JPEG [JPEG] # Selects the scanner compression method for faster scans, possibly at # the expense of image quality. # --jpeg-quality 0..100 [10] # Sets the scanner JPEG compression factor. Larger numbers mean better # compression, and smaller numbers mean better image quality. # --batch-scan[=(yes|no)] [no] # Enables continuous scanning with automatic document feeder (ADF). # --source Auto|ADF [Auto] # Selects the scan source (such as a document-feeder). # Geometry: # --length-measurement Unknown|Unlimited|Approximate|Padded [Padded] # Selects how the scanned image length is measured and reported, which # is impossible to know in advance for scrollfed scans. # -l 0..228.6mm [0] # Top-left x position of scan area. # -t 0..381mm [0] # Top-left y position of scan area. # -x 0..228.6mm [228.6] # Width of scan-area. # -y 0..381mm [381] # Height of scan-area. # --------------------------------------------------------------------------------------------- # X=210 # Y=297 # SCANMODE=Lineart # -------------------------------------------------- # RESOLUTION=75 # -------------------------------------------------- # 72K prova.tiff # 20K prova.pdf # 16K prova.png # X=210 Y=297 Image Width: 621 Image Length: 876 # # 96K prova.tiff # 20K prova.pdf # 20K prova.png # X=228.6 Y=381 Image Width: 640 Image Length: 1125 # -------------------------------------------------- # RESOLUTION=200 # -------------------------------------------------- # 480K prova.tiff # 64K prova.pdf # 40K prova.png # X=210 Y=297 Image Width: 1654 Image Length: 2338 # -------------------------------------------------- # RESOLUTION=300 # -------------------------------------------------- # 1.1M prova.tiff # 76K prova.pdf # 60K prova.png # X=210 Y=297 Image Width: 2481 Image Length: 3507 # -------------------------------------------------- # RESOLUTION=600 # -------------------------------------------------- # 4.2M prova.tiff # 84K prova.pdf # 56K prova.png # X=210 Y=297 Image Width: 4961 Image Length: 7015 # -------------------------------------------------- reset_scansione() { rm -f $DIR_SCAN/*.tiff $DIR_SCAN/*.png visualizza_contratto } rascan_image() { # $1 -> parametri scansione multipla (opt) # X=210 # A4 # Y=297 # A4 # RESOLUTION=$1 # 75|100|150|200|300|600|1200dpi [75] # set -x # 1-bit multipage TIFF SCANMODE=Lineart NUM_PAGE=`ls -f $DIR_SCAN/page[0-9]*.tiff 2>/dev/null | wc -l` let "NUM_DOC = $NUM_PAGE + 1" rm -f /tmp/scan.log if [ -n "$1" ]; then OUTPUT=/tmp/scan.log SCANIMAGE_PARAM="$SCANIMAGE_MULTI_PARAM --batch-start=$NUM_DOC" else printf -v OUTPUT "$DIR_SCAN/page%02d.tiff" $NUM_DOC SCANIMAGE_PARAM=$SCANIMAGE_SINGLE_PARAM fi scanimage -d $DEVICE_SCANNER --format=tiff --mode $SCANMODE --resolution $RESOLUTION -x $X -y $Y $1 $SCANIMAGE_PARAM > $OUTPUT 2>&1 NUM_DOC=`ls -f $DIR_SCAN/page[0-9]*.tiff 2>/dev/null | wc -l` if [ $NUM_DOC -eq 0 ]; then errore_scansione else TMP_FORM_FILE=$DIR_SCAN/$BASE_NAME.curr if [ -f $TMP_FORM_FILE ]; then load_value_session $TMP_FORM_FILE fi save_value_session $NUM_DOC \ "$v1" "$v2" "$v3" "$v4" "$v5" "$v6" "$v7" "$v8" "$v9" "${v10}" "${v11}" "${v12}" "${v13}" "${v14}" "${v15}" \ "${v16}" "${v17}" "${v18}" "${v19}" "${v20}" "${v21}" "${v22}" "${v23}" "${v24}" "${v25}" "${v26}" "${v27}" "${v28}" "${v29}" "${v30}" "${v31}" FOR_PAGE=1 set_paginazione 1 view_page fi } rascan_image_multipla() { rascan_image "--batch=$DIR_SCAN/page%02d.tiff --source ADF" } rascan_image_singola() { rascan_image } view_page() { printf -v FILE $DIR_SCAN/page%02d $pagina_corrente if [ ! -f ${FILE}.tiff ]; then errore_scansione fi if [ ! -f ${FILE}.png ]; then # Create the page PNG file if [ "$SCANMODE" = "Lineart" ]; then fax2png ${FILE}.tiff ${FILE}.png -w 621 -a >/dev/null 2>&1 else tifftopnm ${FILE}.tiff >${FILE}.pnm 2>/dev/null pnmtopng ${FILE}.pnm >${FILE}.png 2>/dev/null rm -f ${FILE}.pnm fi optimize_image_bin ${FILE}.png ${FILE}.png fi if [ -f ${FILE}.png ]; then printf -v OUTPUT "`cat $FORM_FILE_DIR/view.tmpl`" ${FILE}.png $BASE_NAME "$link_paginazione" fi } view_page_prepare() { TMP_FORM_FILE=$DIR_SCAN/$BASE_NAME.curr if [ -f $TMP_FORM_FILE ]; then load_value_session $TMP_FORM_FILE fi FOR_PAGE=1 NUM_DOC=$v0 if [ -z "$NUM_DOC" ]; then NUM_DOC=`ls -f $DIR_SCAN/page[0-9]*.tiff 2>/dev/null | wc -l` save_value_session $NUM_DOC \ "$v1" "$v2" "$v3" "$v4" "$v5" "$v6" "$v7" "$v8" "$v9" "${v10}" "${v11}" "${v12}" "${v13}" "${v14}" "${v15}" \ "${v16}" "${v17}" "${v18}" "${v19}" "${v20}" "${v21}" "${v22}" "${v23}" "${v24}" "${v25}" "${v26}" "${v27}" "${v28}" "${v29}" "${v30}" "${v31}" fi } view_page_image() { # set -x view_page_prepare set_paginazione $1 view_page } registrazione_contratto() { # set -x # load specific script env, for signing and sending message to workflow... . $HOME_DIR/etc/${BASE_NAME}.conf TMP_FORM_FILE=$DIR_SCAN/$BASE_NAME.curr if [ -f $TMP_FORM_FILE ]; then load_value_session_with_xml_escape $TMP_FORM_FILE fi # create PDF... tiffcp -a $DIR_SCAN/page[0-9]*.tiff $DIR_SCAN/out.tiff >/dev/null 2>&1 tiff2pdf -p A4 -q 100 -j $DIR_SCAN/out.tiff >$DIR_SCAN/out.pdf 2>/dev/null # Creating PDF file... PDF=`openssl base64 -in $DIR_SCAN/out.pdf -e 2>/dev/null` # ...and convert in base64 # directory to put mail to send... DIR_SAVE=`pwd` cd $DIR_MAIL DIR_SESSION=$SESSION_ID/$BASE_NAME if [ ! -d $DIR_SESSION ]; then mkdir -p $DIR_SESSION fi NAME=$DIR_SESSION/send_to_$$ if [ "$BASE_NAME" = "registrazione-business" ]; then printf "`cat mail-business.tmpl`" "$WORKFLOW_SUBJECT" "$WORKFLOW_FROM_ADDRESS" "$WORKFLOW_TO_ADDRESS" \ "$v1" "$v2" "$v3" "$v4" "$v5" "$v6" "$v7" "$v8" "$v9" "${v10}" "${v11}" "${v12}" "${v13}" "${v14}" \ "${v15}" "${v16}" "${v17}" "${v18}" "${v19}" "${v20}" "${v21}" "${v22}" "${v23}" "${v24}" ${NETWORK} \ "$PDF" > $NAME.eml else printf "`cat mail-cpe.tmpl`" "$WORKFLOW_SUBJECT" "$WORKFLOW_FROM_ADDRESS" "$WORKFLOW_TO_ADDRESS" \ "$v1" "$v2" "$v3" "$v4" "$v5" "$v6" "$v7" "$v8" "$v9" "${v10}" "${v11}" "${v12}" "${v13}" "${v14}" \ "${v15}" "${v16}" "${v17}" "${v18}" "${v19}" "${v20}" "${v21}" "${v22}" "${v23}" "${v24}" "${v25}" "${v26}" "${v27}" "${v28}" "${v30}" \ "${NETWORK}" "$PDF" > $NAME.eml fi send_MAIL_and_goto_MAIN_MENU $NAME $DIR_SAVE/$DIR_SCAN } # funzioni che creano i link alle pagine dei risultati # ---------------------------------------------------- crea_link() { if [ $pagina_corrente -eq $1 ]; then ADD="$1" else ADD="$1" fi link_paginazione=$link_paginazione$ADD" " } set_paginazione() { pagina_corrente=$1 if [ $NUM_DOC -le $FOR_PAGE ]; then if [ $NUM_DOC -eq 0 ]; then NUM_START=0 else NUM_START=1 fi NUM_END=$NUM_DOC link_paginazione="PREVNEXT" return fi let "pagina_precedente = $pagina_corrente - 1" let "pagina_successiva = $pagina_corrente + 1" let "tot_pagine = $NUM_DOC / $FOR_PAGE" let "resto = $NUM_DOC % $FOR_PAGE" if [ $resto -ne 0 ]; then let "tot_pagine = $tot_pagine + 1" fi let "ultima_pagina = $tot_pagine - 1" let "penultima_pagina = $ultima_pagina - 1" # link alla pagina precedente if [ $pagina_corrente -eq 1 ]; then NUM_START=1 link_paginazione="PREV " else let "NUM_START = 1 + $pagina_precedente * $FOR_PAGE" link_paginazione="PREV " fi # mostriamo sempre il link alla prima pagina crea_link 1 # se il prossimo link non è alla seconda pagina aggiungo dei puntini ... oppure la sola pagina mancante if [ $pagina_precedente -gt 2 ]; then if [ $pagina_precedente -eq 3 ]; then crea_link 2 else link_paginazione=$link_paginazione" ... " fi fi # creo i link alla pagina corrente ed a quelle ad essa vicine for (( i=$pagina_precedente; i<=$pagina_successiva; i+=1 )); do # se tra quelle vicine c'è la prima pagina (già riportata) if [ $i -lt 2 ]; then continue fi # se tra quelle vicine c'è l'ultima pagina (che mostrerò con le prossime istruzioni) if [ $i -gt $ultima_pagina ]; then continue fi crea_link $i done # se il precedente link non era alla penultima pagina aggiungo dei puntini ... oppure la sola pagina mancante if [ $pagina_successiva -lt $ultima_pagina ]; then if [ $pagina_successiva -eq $penultima_pagina ]; then crea_link $ultima_pagina else link_paginazione=$link_paginazione" ... " fi fi # mostriamo il link all'ultima pagina se questa non coincide con la prima if [ $tot_pagine -ne 1 ]; then crea_link $tot_pagine fi # link alla pagina successiva if [ $pagina_corrente -eq $tot_pagine ]; then NUM_END=$NUM_DOC link_paginazione=$link_paginazione"NEXT" else let "NUM_END = $NUM_START + $FOR_PAGE - 1" link_paginazione=$link_paginazione"NEXT" fi } # ------------------------------------------------------