pdf direkt aus dem Terminal erstellen

Nikolas

Mitglied
Thread Starter
Dabei seit
22.06.2007
Beiträge
78
Reaktionspunkte
2
Hallo

Ich habe ein paar txt-Dokumente, die ich als pdfs brauche. Da ich nicht jedes einzeln per Hand drucken will, wollte ich das ganze im Terminal automatisieren, habe aber bisher keine Idee, wie ich das machen soll. Einen virtuellen pdf-Drucker, den ich per lp ansprechen kann, habe ich nicht gefunden, und was anderes ist mir nicht eingefallen.

Nikolas
 
Ob Du im UNIX-Unterforum besser aufgehoben bist, wo ich das Thema jetzt erstmal hin verschoben habe, oder eher bei den Acrobaten, weiß ich nicht – bei Mac OS X bist Du allerdings falsch. ;)
 
Du kannst deine .txt Dateien aber auch auf eine Verknüpfung deines Druckers ziehen oder in Acrobat die Dateien zusammenführen und dann ausdrucken.
 
Die gesuchten Kommando lauten 'enscript' und 'pstopdf'.
'enscript' erzeugt Postscript Dateien aus txt files. 'pstopdf' macht daraus PDF Dateien.
Hier mal ein simples Beispiel.:
Code:
enscript [I]infile.txt[/I] -o - | pstopdf -i -o [I]outfile.pdf[/I]

Bei vielen Dateien kann man natürlich auch mit einer Schleife arbeiten.

@ Ulfrinn: Danke für's verschieben. Unix war goldrichtig ;).
 
Danke für die Hilfe (und fürs Aufräumen :) )

Da es doch etwas blöd ist, jedes Mal einen DateiNamen angeben zu müssen, habe ich ein kleines Script geschrieben:

Code:
#! /bin/bash

for ARG in "$@"
do
	name=`basename $ARG .txt`
	directory=`dirname $ARG`
        echo `pwd`/$directory/$name.pdf
	enscript $ARG -B -o - | pstopdf -i -o `pwd`/$directory/$name.pdf
done

Wie man recht schnell sieht, ist es nicht die schönste Version, da ich bei den Dateiendungen nur .txt wegschneide und den Dateinamen erst auseinandernehme, um in kurz nachher zusammenzubauen. (das -B verhindert noch einen Header in der ps-Datei)

So kann man das Programm jedenfalls nach /usr/bin oder sonstwo legen und an beliebigen Stellen per
> pdf *.txt
alle txt-Dateien zu pdfs machen.

Weiss jemand auf die schnelle, wie ich die Dateiendung besser entferne? Ein RegExp müsste hier doch passen, nur weiss ich nicht, ob es etwas einfacheres gibt.
 
Warum so umständlich? In der Z Shell kann man so etwas machen. Kann man sicher auch auf die Bash übertragen
Code:
alias pdf='for file in *.txt;do;enscript $file -o -|pstopdf -i -o ${file%.txt}.pdf;done'
Das Ganze in eine passende Startdatei der Shell und fertig ist dier Laube.

Edit:
Für die Bash muss der alias so aussehen:
Code:
alias pdf='for file in *.txt;do enscript $file -o -|pstopdf -i -o ${file%.txt}.pdf;done'
Funktiert dann auch in der Z Shell.

Gruß
maceis

PS:
Man kann mit enscript übrigens auch sehr schön formatierte PDF Dateien von man pages erstellen.
 
Zuletzt bearbeitet:
sieht schick aus. Leider habe ich damit immer noch das Problem, dass ich so nur alle txtDateien im Verzeichniss verarbeiten kann. Mit der %-Schreibweise, habe ich jetzt dieses Script:

Code:
#! /bin/bash

for ARG in "$@"
do
        enscript $ARG -B -o - | pstopdf -i -o `pwd`/${ARG%.???}.pdf
done

Damit kann ich jetzt beliebige Dateien verarbeiten und schneide beliebige (dreistellige) Endungen ab.
Damit habe ich jetzt zwar ein Script, aber ich habe leider nicht rausgefunden, wie ich bei der alias-Methode die Parameter benutzen kann.
 
Wenn Du mit Parametern arbeiten möchtest, würde ich Dir empfehlen, eine Shell function zu schreiben. Damit kannst Du dann problemlos Positionsparameter verwenden. (Mit aliasen funktioniert das nur in der tcsh, die aber aus meiner Sicht eine Reihe von Nachteilen aufweist.)

Wie man hier wieder einmal sieht, ist Unix extrem flexibel. Du kannst Dir das Grundkonzept genau so anpassen, wie Dir das für Deine individuellen Bedürfnisse und Anforderungen optimal erscheint.
 
Zurück
Oben Unten