Scanscript

Dieses Script scant Dokumente vom Dokumentenscanner, speichert sie als PNG-Datei und Kovertiert diese in eine PDF-Datei.
Der „scanimage“ Befehl ist auf einen „Fujitsu ScanSnap S1500“ Scanner ausgelegt.

Der eigene Scanner muss von „sane“ unterstützt sein.
Welche Geräte „sane“ erkannt hat, prüft man mit dem Befehl scanimage -L.
Die Scanner-Optionen können mit dem Befehl scanimage –help -d <GERÄT> ausgelesen werden.

Gibt man dem Scanscriptbefehl den Parameter „1“, werden für jede PNG-Datei einzelne PDF-Dateien erstellt.
Ohne den Parameter werden alle PNG-Dateien in eine PDF-Datei zusammengefasst.

#!/bin/bash
#
## Parameter "1": wenn gesetzt, werden im Stapelscan einzelne PDFs erzeugt
## Parameter "2": wenn gesetzt, wird für jede zu scannende Seite gefragt; erleichtert Stapelscan
#
 
DESTDIR=~/Dokumente/scanns
TEMP=${DESTDIR}/tmp
DONE=${DESTDIR}/processed
 
LOGTS () {
  date +%Y%m%d_%H%M%S
}
 
FILENAME=$(LOGTS)
 
if [ ! -d "${DESTDIR}" ]; then
  mkdir -p ${DESTDIR}
fi
 
if [ ! -d "${TEMP}" ]; then
  mkdir -p ${TEMP}
fi
 
if [ ! -d "${DONE}" ]; then
  mkdir -p ${DONE}
fi
 
if [ ! -x $(command -v scanimage)  ]; then
  echo "Befehl "scanimage" nicht gefunden"
  echo "Bitte installieren: sudo apt install sane-utils"
  exit
fi
 
if [ ! -x $(command -v convert)  ]; then
  echo "Befehl "convert" nicht gefunden"
  echo "Bitte installieren: sudo apt install imagemagick"
  exit
fi
 
# fragen ob weitergescannt werden soll
if [[ $1 == "2" ]]; then
  scanimage --device="fujitsu:ScanSnap S1500:71873" --format=png --source="ADF Duplex" --mode="Lineart" --resolution=150dpi --swskip=5% --batch=${TEMP}/${FILENAME}_p%d.png --batch-prompt
else
  scanimage --device="fujitsu:ScanSnap S1500:71873" --format=png --source="ADF Duplex" --mode="Lineart" --resolution=150dpi --swskip=5% --batch=${TEMP}/${FILENAME}_p%d.png
fi
 
 
# ein pdf für jede einzelne Seite oder aus allen Seiten
if [[ $1 == "1" ]]; then
  for i in `ls ${TEMP}`; do
    FILENAME_PRE=$(echo ${i}|sed 's/\..*$//')
    convert ${TEMP}/${i} ${DESTDIR}/${FILENAME_PRE}.pdf
  done
else
  convert $(ls -1v ${TEMP}/${FILENAME}_p*.png) ${DESTDIR}/${FILENAME}.pdf
fi
 
# aufräumen
mv ${TEMP}/* ${DONE}