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ßlichscanimage
findutils, sed
: Standard-Tools wiesed
oderxargs
netpbm
: Tools zum Manipulieren der pnm-Dateien, diescanimage
ausgibt, z.B.pnmrotate
zum Rotieren eines pnm um einen bestimmten Winkellibtiff4, libtiff-tools
: Befehle zum Manipulieren von TIFFs, beispielsweisetiffcp
odertiff2pdf
gs-common
: Ghostscript zum Optimieren des PDFs mitpdfopt
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.