• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

pdf dateien aus verzeichnis drucken

Hallo,

ich steh das mal wieder vor nem Problem.
Ich hab ein Verzeichnis, da liegen viele PDF's drin und die müssen alle gedruckt werden.
Das soll ein script machen, da jede PDF datei 2x gedruckt werden muss.
Das ganze soll aus der Konsole heraus funktionieren.
Hat da jemand nen Ansatz für mich?

Gruß

sphings
 
haveaniceday schrieb:
Das sollte einfach sein. pdf2ps ist das Stichwort.

for i in *.pdf
do
pdf2ps $i - | lpr -#2 -Pmeinprinter

done

Haveaniceday

danke :)
wie kann ich das denn machen, das er die datei die er gerad gedruckt hat dann direkt löscht?
nach abschluss aller drucks wäre blöd, weil in das verzeichnis laufend neue pdf dateien reinkommen.

Gruß

sphings
 
Code:
for i in *.pdf 
 do 
 pdf2ps $i - | lpr -#2 -Pmeinprinter 
 rm $i
done

Bitte mal in einer Kopie des Verzeichnisses ausprobieren.
 
Grothesk schrieb:
Code:
for i in *.pdf 
 do 
 pdf2ps $i - | lpr -#2 -Pmeinprinter 
 rm $i
done

Bitte mal in einer Kopie des Verzeichnisses ausprobieren.

Das mit dem ausprobieren ist genau das problem ;) weil die pdf's die da neu reinkommen, das kann ich nciht steuern, wann die kommen ... die werden von extern in das verzeichnis geladen.
Aber ich werds mal testen ...
 
Das ist ja wurscht. Mir geht es nur darum, dass du keine Dateien löschst, die noch gebraucht werden. Darum das skript in einer Kopie des Verzeichnisses testen.
 
Grothesk schrieb:
Das ist ja wurscht. Mir geht es nur darum, dass du keine Dateien löschst, die noch gebraucht werden. Darum das skript in einer Kopie des Verzeichnisses testen.

Das sowieso immer :)
Ich lass ja nichts ungetestetes auf meine Daten los ;)

Danke ...

Ihr seid echt die besten hier :)
 
Jetzt druckt er mir laufend folgendes, wenn keine PDF Datei im Verzeichnis ist:

Code:
ERROR: /undefinedfilename in (/zielverzeichnis/*.pdf)

wie mach ich das denn das er das nicht druckt ?!?
Der Cronjob dazu sieht wie folgt aus:

Code:
*/5 * * * * /home/auction/bin/rechnungendrucken 2>&1 > /dev/null
 
Grothesk schrieb:
Code:
for i in *.pdf 
 do 
 pdf2ps $i - | lpr -#2 -Pmeinprinter 
 rm $i
done

Bitte mal in einer Kopie des Verzeichnisses ausprobieren.
Wäre auch ein bisschen gefährlich, denn wenn der lpr oder der pds2ps aus irgendwelchen Gründen fehlschlägt wird die Datei trotzdem gelöscht. Um das zu verhindern, bitte mit && arbeiten ...
 
notoxp schrieb:
Grothesk schrieb:
Code:
for i in *.pdf 
 do 
 pdf2ps $i - | lpr -#2 -Pmeinprinter 
 rm $i
done

Bitte mal in einer Kopie des Verzeichnisses ausprobieren.
Wäre auch ein bisschen gefährlich, denn wenn der lpr oder der pds2ps aus irgendwelchen Gründen fehlschlägt wird die Datei trotzdem gelöscht. Um das zu verhindern, bitte mit && arbeiten ...

Das wäre noch mal garnicht so schlimm da von der datei vorher ne sicherheitskopie ins archiv gelegt wird ...
schlimmer ist die Fehlermeldung die er mir alle paar minuten druckt wenn kein pdf im verzeichnis liegt.
 
Schau dir mal die Syntax von dem Befehl if [ ....] ;then ... fi an.
Die Optionen für if findest du auch unter man test
Damit kann man einbauen das nur existente Files gedruckt werden.

Theoretisch könnten auch ab und zu verstümmelte Dateien rauskommen.
Nämlich wenn das Skript eine Datei halb vorfindet und dann der Dateischreiber
diese Datei noch weiter fortsetzt.

Haveaniceday
 
haveaniceday schrieb:
Schau dir mal die Syntax von dem Befehl if [ ....] ;then ... fi an.
Die Optionen für if findest du auch unter man test
Damit kann man einbauen das nur existente Files gedruckt werden.

Theoretisch könnten auch ab und zu verstümmelte Dateien rauskommen.
Nämlich wenn das Skript eine Datei halb vorfindet und dann der Dateischreiber
diese Datei noch weiter fortsetzt.

Haveaniceday

test das war nen gutes schlagwort ...
Ich sitz leider gerad nicht vor der Linuxkiste :(

aber könnte das funktionieren?

Code:
test -z `ls -A` && echo "ist leer"
if test ! -z "$LS" ; then
        for i in /opt/lampp/htdocs/rechnungen/drucken/*.pdf
        do
                #pdf2ps $i - | lpr -#2 -PHPLaser 2> /dev/null
                #rm -r $i 2> /dev/null
        done
fi
 
Andere schreiben an dieser Stelle einen ls innerhalb der for-Schleife. So wird die Schleife nicht durlaufen, sollte der ls auf Fehler laufen. Das sieht in etwa so aus:
Code:
        for i in `ls /opt/lampp/htdocs/rechnungen/drucken/*.pdf`
        do
                #pdf2ps $i - | lpr -#2 -PHPLaser 2> /dev/null
                #rm -r $i 2> /dev/null
        done
Ein -f bei rm erspart dir übrigens die Redirection.
 
Ich dachte eher an:

Code:
for i in *.pdf 
 do 
 if [ -r "$i" ]
 then
  pdf2ps "$i" - | lpr -#2 -Pmeinprinter
  rm -f "$i"
 fi
done

Mit den "" um $i geht es auch für Namen mit Leer und Sonderzeichen.
Solche Dateien könnten ja mal von Wind..f kommen.
Aber die Version mit ls geht auch.

Haveaniceday
 
Oben