Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

[Info] Mehrere Dokumente direkt in PDF scannen

Alles rund um Hardware, die unter Linux läuft oder zum Laufen gebracht werden soll

Moderator: Moderatoren

Antworten
Fisnix
Newbie
Newbie
Beiträge: 8
Registriert: 14. Aug 2005, 12:52

[Info] Mehrere Dokumente direkt in PDF scannen

Beitrag von Fisnix » 28. Aug 2005, 16:19

Hallo,

weil ich nur einen einfachen Scanner (Canon Lide 30, SANE Backend plustek) besitze aber trotzdem öfter mehrere DIN A4 Papierdokumente in eine einzige PDF Datei archivieren möchte, habe ich hierfür ein kleines Skript geschrieben. Vielleicht hat jemand anderes auch Verwendung dafür. Man benötigt außer einem Scanner mit funktionierendem Backend auch das Konsolenfrontend scanimage sowie das Grafiktool ImageMagick.

scanimage bietet zwar mit der option --batch-prompt und --batch-count die Möglichkeit, mehrere Seiten hintereinander zu scannen und man kann die so erstellten pnm-Dateien genauso weiterbehandeln, wie am Ende meines Skripts, aber ich wollte alles gerne noch etwas individueller gestalten. Deswegen rufe ich scanimage innerhalb einer Schleife auf.

Da ich einen Kernel > 2.6 verwende gibt es bei mir das Modul scanner nicht mehr und libusb kümmert sich um den Scanner. Seltsamerweise erscheint mein Scanner nach jedem Booten entweder unter plustek:libusb:001:005 oder unter plustek:libusb:001:003. Deswegen schneide ich mir zu Beginn des Skripts den gerade gültigen Namen aus der Ausgabe von scanimage -L aus und übergebe diesen dann beim Aufruf von scanimage.

Bestimmt gibt es hierfür noch eine elegantere Lösung.

Wer einen festen Device Eintrag für seinen Scanner hat, kann die entsprechenden Zeilen einfach löschen und SCANNER=/dev/usbscanner oder Ähnliches schreiben.
Nachdem alle Seiten als pnm-Dateien gespeichert wurden, werden diese zur Platzersparnis in jpeg-Dateien umgewandelt und schließlich in ein PDF-Dokument geschrieben. Alle Grafikdateien werden danach wieder gelöscht.

Das Skript legt alle Dateien direkt im Homeverzeichnis an. Dies und die Dateinamen kann man natürlich beliebig anpassen.

Skript scan2pdf:

Code: Alles auswählen

#! /bin/bash
clear

#Scanner bestimmen bei Verwendung von libusb 
#Wenn nicht libusb verwendet wird einfach 
#SCANNER="/dev/usbscanner" oder ähnliches setzen.

SCANNERMESSAGE=$(scanimage -L)
START=$(expr index "$SCANNERMESSAGE" \`)
START=$[$START + 1]
ENDE=$(expr index "$SCANNERMESSAGE" \')
INTERVALL=$[$ENDE - $START]
SCANNER=$(expr substr "$SCANNERMESSAGE" $START $INTERVALL)

echo "Mehrere DIN A4 Dokumente in ein PDF scannen"
echo "*******************************************"
echo "Scanner ist $SCANNER"
echo

echo "Auflösungen:"
echo "   [1]  50 ppi" 
echo "   [2] 100 ppi" 
echo "   [3] 150 ppi" 
echo "   [4] 300 ppi" 
echo
echo -n "Bitte Scanauflösung auswählen: "
read AUSWAHL_PPI

case $AUSWAHL_PPI in
 1) RES=50;;
 2) RES=100;;
 3) RES=150;;
 4) RES=300;;
 *) RES=100;;
esac

echo "Scanauflösung wird auf $RES ppi gesetzt"
echo

COUNT=1

echo -n "$COUNT. Seite einlegen und [beliebige Taste] für Scannen oder [b] für Beenden: "
read EINGABE

if [ "$EINGABE" = "b" ]; then
 exit 0
fi

while [ "$EINGABE" != "b" ]
do
 POSTFIX=$(printf "%04d" $COUNT)
 echo "Scanne scan2pdf$POSTFIX.pnm..." 

 scanimage --device=$SCANNER --resolution=$RES -l 0mm -t 0mm -x210mm -y297mm > $HOME/scan2pdf$POSTFIX.pnm
 COUNT=$[$COUNT + 1]
 echo -n "$COUNT. Seite einlegen und [beliebige Taste] für Scannen oder [b] für Beenden: "
 read EINGABE
done


echo "Erzeuge PDF Dokument..."

mogrify -format jpeg $HOME/scan2pdf*.pnm
convert -adjoin $HOME/scan2pdf*.jpeg $HOME/scan2pdf_doc.pdf
echo "Aufräumen..."
rm $HOME/scan2pdf*.pnm
rm $HOME/scan2pdf*.jpeg

An Erfahrungsberichten aus der Zusammenarbeit mit Hans-Georg Niederhausen und der FIS Fulda Immobilienservice GmbH interessiert? Einfach E-Mail senden oder zu http://www.derdichter.de gehen

Werbung:
tiloseine
Newbie
Newbie
Beiträge: 15
Registriert: 14. Feb 2006, 16:58
Wohnort: Halle (Saale)
Kontaktdaten:

Beitrag von tiloseine » 14. Feb 2006, 17:07

:D Funktioniert super! Danke

SuSE 9.3
Canon Lide 20

Benutzeravatar
scanner_freak
Hacker
Hacker
Beiträge: 300
Registriert: 19. Mai 2004, 13:12

Beitrag von scanner_freak » 17. Feb 2006, 08:35

Ich markiere das mal als Wichtig, damit es nicht "verschütt"
geht.

Danke für das Script.
Gerhard

Antworten