Scanscript zu PDF

Post Reply
Message
Author
sumsi

Scanscript zu PDF

#1 Post by sumsi »

Hallo,
ich möchte Euch mein Script Scanne zu PDF vorstellen.

Benötigte Tools dafür:
SANE
ImageMagik
LIBTIF
Pdftk
kpdf

Ablauf/Funktionsweise
Anlegen/Nutzen eines Scan-Ordners

Anlegen oder, wenn vorhanden, Nutzen eines themenspezifischen Unterordners.
PDF's in diesem Unterordner können zu einem PDF generiert werden.

Scannen eines Dokumentes und Abschneiden der Ränder auf A4-Breite
Wandlung zur PDF-Datei, Abfrage auf Vorschau.

Abfrage, ob weitere Dokumente gescannt werden sollen.
Dabei ist ist der voreingestellte default-Ordner der zuletzt benutzte.

Korrektur eines einzelnen Scanns erreicht man mit Wiederholung des Scannes bei gleicher Namensvergabe des Dokumentes.

Nach Scannvorgänge und wenn mehr als ein Dokument in einem Verzeichnis sind, ist die Möglichkeit gegeben, aus den Dokumenten eines Unterordners ein einzelnes, mehrseitigen Dokument zu erstellen.
Die Reihenfolge der Seiten ist analog der Zeitfolge der Scanvorgänge.



[ Werbung: Als Distri fand Mandriva Verwendung ;-) ]

Viel Freude damit

sumsi


Code: Select all

!/bin/bash
## sumsi  + 2007-09-19
## Definiere min. 1 Durchlauf
START=ja
SCAN=Scan_Ordner
UO=Neuer_Ordner
FO=n

while [ $START = ja ]
do
	clear
	echo " "
	echo "      #######################################################################"
	echo "      ##                      Scanne zu PDF                                ##"
	echo "      #######################################################################"
	echo " "

	## Scan Images
	echo " "
	echo  "      Bitte Papier horizontal zentriert (mittig) in den Scanner einlegen."
	echo  "      (Abbruch = q) "  

	## Pruefe auf Arbeitsverzeichnis
	if [ -d $HOME/$SCAN ]; then
		echo " "
	else
		echo " Erzeuge $SCAN anlegen !"
		mkdir $HOME/$SCAN
	fi
	
	## Abfrage/Erzeugen Unterordner
	while [ $FO = n ]; do
		echo  "      Das aktuelle Unterverzeichnis ist $UO."
		echo " "
	        echo  "      Verzeichnis $UO beibehalten druecke [ENTER]," 
		read -p "      neues Verzeichnis anlegen, bzw. in Verzeichnis wechseln (a) ?: " FO   
		# vermeide Fehlerausschrift bei leerer Eingabe. \a .. trenne a von Variable
		FO=$FO\a
		echo " "

		   case $FO in
		      a) 
			  echo "      Unterordner $UO wird beibehalten "
			  ;;
		      aa)
			  read -p "      Bitte Ordnernamen vergeben:  " UO
		   	  ;;
		      wa)
			  read -p "      Bitte Ordnernamen vergeben:  " UO
		   	  ;;

		      qa)
			  echo "      Abbruch  "
			  sleep 2
			  exit  
			  ;;
		  
		      *) 
			  echo "      Ungueltige Eingabe "
			  FO=n
			  ;;
		   esac

	done

	if [ -d $HOME/$SCAN/$UO ]; then
		echo " "
	else
		echo "      Erzeuge Unterordner $UO"
		mkdir $HOME/$SCAN/$UO
        fi
	
	read -p "      Eingabe Dokumenten-Namen :  " DN
		
		while [ -z $DN ]; do
			read -p "      Eingabe Dokumenten-Namen   :   " DN
		done	

	        
        # Namens-Endung, zur Unterscheidung der Original-Scans gegen Zusammengefasste PDF's
        DN=$DN.scan

	echo " "
	if [ -s $HOME/$SCAN/$UO/$DN.pdf ]; then
		echo "      Achtung:"
		echo "      Das Dokument  $HOME/$SCAN/$UO/$DN.pdf wird ueberschrieben. "
	else	
		echo "      Das Dokument wird zu $HOME/$SCAN/$UO/$DN.pdf gespeichert. "
	fi
        echo " "

	### Device automatisch finden - dauert laenger ###
	## DEV=`scanimage -L | grep scanner|cut -c9-49|cut -d\' -f1`
	## scanimage --device=$DEV --resolution=150 --format=tiff --progress --verbose --mode Gray > /tmp/image.tif

	## Bitte Scanner-Device manuell finden und in naechster Zeile eintragen: scanimage -L | grep scanner 
	scanimage --device=mustek:/dev/sg0 --resolution=150 --format=tiff --progress --verbose --mode Gray > $HOME/$SCAN/$UO/image.tif

	## schneide beiderseitig Rand ab (Scannerbreite Letter) und konvertiere zu 8 Bit Tiefe
	convert -shave 80x0 -depth 8 $HOME/$SCAN/$UO/image.tif $HOME/$SCAN/$UO/image_shave.tif

	## Paket LIBTIF
	tiff2pdf -p A4 -j -q 75 -o $HOME/$SCAN/$UO/$DN.pdf $HOME/$SCAN/$UO/image_shave.tif  
	rm $HOME/$SCAN/$UO/image.tif
	rm $HOME/$SCAN/$UO/image_shave.tif
	
	## Vorschau
	echo " "
	read -p "      Vorschau des PDF Dokumentes gewuenscht? (j/n) : " VS
	VS=$VS\a
	
	if [ $VS = ja ]; then
	 	 kpdf /$HOME/$SCAN/$UO/$DN.pdf &
	fi
	
	echo " "
	read -p "      Ein weiteres Dokument einscannen?       (j/n) : " START
	FO=n
	START=$START\a

done
echo " "

## PDF zusammenfassen, wenn mehr als ein Dokument im Ordner. Benoetigt pdftk
ORDNER=$HOME/$SCAN/$UO
ANZAHL=`ls -1 $ORDNER/*.scan.pdf |wc -l`

if [ $ANZAHL -gt 1 ]; then
	echo "      Es sind $ANZAHL PDF-Dokumente im Ordner $UO"
	read -p  "      PDF-Dokumente im Ordner $UO zu einem Dokument zusammenfassen? (j/n) : " MERGE
	MERGE=$MERGE\a

	if [ $MERGE = ja ]; then
		# NUR MIT Pfadangabe UND MIT `PFAD/*` wird der komplette Pfad ausgegeben
		DATEIEN=`ls -r --sort=time $HOME/$SCAN/$UO/*.scan.pdf`
		pdftk $DATEIEN cat output $HOME/$SCAN/$UO/$UO\_komplett.pdf

		read -p "      Vorschau des zusammengefuegten PDF-Dokumentes gewuenscht?     (j/n) : " VG
	        VG=$VG\a
		if [ $VG = ja ]; then
		  nohup kpdf /$HOME/$SCAN/$UO/$UO\_komplett.pdf &	
	        fi   
	fi
fi

echo " "
echo "      ENDE"
sleep 2
exit 0
-- ENDE --

Post Reply