blog · git · desktop · images · contact & privacy · gopher


Skripts für den Scan-Alltag unter Linux

Sie kursieren zwar an ziemlich vielen Stellen im Netz, aber hier mal meine Skripts für die folgenden Aufgaben:

Diese News werde ich auch erweitern, wenn ich mir etwas neues bastele. :)

Auf umschweifendere Erklärungen verzichte ich, da jeder Schritt im jeweiligen Skript erläutert ist.

– Nachtrag 2012-04-08: Etwas out of date heute. Ich werde das bei Gelegenheit vielleicht mal aktualisieren und auch auf GitHub stellen.

copyscan.sh

Aufruf: copyscan.sh <Name des Druckers>

#!/bin/bash

DPI=200
MODE=Gray

# erstmal scannen
echo "Scanne mit $DPI dpi / $MODE ..."
scanimage -p --mode=$MODE --resolution=$DPI --quick-format=A4 > /tmp/copy.pnm

# dann in PS umwandeln
echo "Wandle in Druckformat um ..."
pnmtops -setpage -equalpixels -dpi $DPI -width 8.2 -height 11.7  /tmp/copy.pnm > /tmp/copy.ps

# nun drucken
echo "Sende Printjob an \"$1\" ..."
lpr -P $1 /tmp/copy.ps

# aufräumen
echo "Räume auf ..."
rm /tmp/copy.pnm
rm /tmp/copy.ps

# fertig, der user kann nun noch eine taste drücken, erst dann
# wird das (eventuelle) gnome-terminal geschlossen
read -p "Fertig."

multiscan2pdf.sh

Aufruf: multiscan2pdf.sh <Name der Zieldatei> [<Skalierung>]

Der Parameter Skalierung gibt hierbei an, auf wieviel Prozent jede eingescannte Seite nachträglich runtergerechnet werden soll. 50% empfehlen sich hier, da das PDF bei 200 DPI sonst doch sehr groß wird.

#!/bin/bash

DPI=200
MODE=Color

# alle seiten einscannen, bis der user strg+c drückt
echo "Scanne mit $DPI dpi / $MODE ..."
echo "Ausgabedatei: $1"
echo ""
echo "- Start einer Seite mit Taste am Scanner"
echo "- Ende durch CTRL+C"
echo ""

# batchstart ist so hoch gesetzt, damit wir dreistellige zahlen haben ...
scanimage -p --mode=$MODE --resolution=$DPI --quick-format=A4 --batch=/tmp/batchpdf%d.tif --batch-start=100 --wait-for-button --format=tiff

echo -e "\n\nEINSCANNEN BEENDET.\n"

# wurde ein zweiter parameter angegeben?
if [ ! -z $2 ]; then
    # reduziere jede datei um $2% in der auflösung
    echo "Reduziere Auflösungen um $2% ..."
    for onefile in /tmp/batchpdf???.tif
        do
            # ausgabedateinamen basteln
            out=`echo $onefile | sed 's/\.tif/-small\.tif/'`
            # konvertieren
            convert -resize $2% $onefile $out
            # zurückschreiben in alten namen
            mv $out $onefile
        done
fi

# ein großes TIFF draus machen
echo "Erstelle ein großes TIFF ..."
tiffcp -c lzw /tmp/batchpdf???.tif /tmp/batchpdfBIG.tif

# tiff2pdf
echo "Umwandlung TIFF -> PDF ..."
tiff2pdf -z /tmp/batchpdfBIG.tif -o /tmp/batchpdf.pdf -t "MultiScan2PDF"

echo "Kopiere Endprodukt nach: $1"
cp /tmp/batchpdf.pdf $1

# aufräumen
echo "Räume auf ..."
rm /tmp/batchpdf*.tif
rm /tmp/batchpdf.pdf

echo ""
read -p "Fertig."