Login
Newsletter
Werbung

So, 10. April 2005, 00:00

Mehrseitige Dokumente in ein PDF scannen mit scanimage

Das Skript sieht dann so aus:

#!/bin/bash
# Scan Images
scanimage --device=epson:/dev/sg1 --batch=out%d.pnm \
 --batch-start=11 --wait-for-button --resolution=180

# Delete last image as it is invalid
ls out*.pnm | sort | tail -1 | xargs rm

# Create TIFFs
echo "Creating TIFF images..."
ls out*.pnm | while read p; do echo $p; q=`echo $p |
 sed 's/out\(.*\)\.pnm/tiff\1.tif/'`; echo $q; cat $p |
 pnmrotate -noantialias -90 | pnmtotiff -lzw > $q; done

# Create one big TIFF
echo "Combining TIFF images..."
tiffcp -c lzw tiff* document.tif

# Create PDF
echo "Creating PDF document..."
tiff2pdf -z document.tif -o document.pdf \
 -a "Jochen Roemling, Abi 1997" \
 -t "Der Maulwurf" -s "http://www.last-contact.de" \
 -k 'celtis gymnasium, schweinfurt, maulwurf, schuelerzeitung'

echo "Optimizing PDF..."
pdfopt document.pdf document_opt.pdf

echo "Cleaning up..."
rm *.pnm
rm tiff*
rm document.tif
rm document.pdf

Sicherlich lässt sich das noch alles ein wenig verfeinern, so dass man es von der Kommandozeile flexibel steuern kann (beispielsweise die Auflösung, die PDF Autor/Subject Tags, den End-Dateinamen). Dann könnte man mit Python oder Perl eine einfache grafische Oberfläche machen... da ist es wieder, das Unix-Prinzip: Jedes Tool hat eine Aufgabe. Ein Programm für die GUI, eines für die eigentliche Arbeit, einfache Tools zu mächtigen Werkzeugen kombinieren. Schön, nicht? ;-)

Damit das Ganze funktioniert, braucht man natürlich einen Scanner, der mit SANE (Scanner Access Now Easy) unter Linux funktioniert. Gerüchte sagen ja, dass Scanner und Linux eine der letzten verbliebenen Feindschaften im Hardwarebereich ist, aber dazu kann ich nichts sagen, da mein SCSI-Scanner seit über drei Jahren problemlos funktioniert. Außerdem benötigt man noch folgende Pakete (hier aus Debian, andere Distributionen heißen sicherlich ähnlich) plus deren Abhängigkeiten:

  • libsane, sane, saneutils: Sane-Frontend mit Scannerzugriff einschließlich scanimage
  • findutils, sed: Standard-Tools wie sed oder xargs
  • netpbm: Tools zum Manipulieren der pnm-Dateien, die scanimage ausgibt, z.B. pnmrotate zum Rotieren eines pnm um einen bestimmten Winkel
  • libtiff4, libtiff-tools: Befehle zum Manipulieren von TIFFs, beispielsweise tiffcp oder tiff2pdf
  • gs-common: Ghostscript zum Optimieren des PDFs mit pdfopt

Zusätzliche Parameter der eingesetzten Tools können in den jeweiligen Manpages bzw. Dokumentationen nachgeschlagen werden. Mir ging es hier hauptsächlich darum, an einem einfachen Beispiel aus der Praxis die Flexibilität des Linux-way-of-doing-things darzustellen und um anderen die zwei Stunden Recherche und Programmierarbeit zu sparen, die es mich gekostet hat, bis das Script in dieser Form funktionierte.

Kommentare (Insgesamt: 6 || Alle anzeigen )
danke (less, Mo, 8. September 2014)
Re[2]: USb Scanner (tcash, Mo, 27. Juni 2011)
Re: USb Scanner (tcash, Mo, 27. Juni 2011)
USb Scanner (tcash, Mo, 27. Juni 2011)
Re: Fehler (hjb, Fr, 15. April 2011)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung