OSX: PDF drucken, mit Wasserzeichen versehen und per Mail verschicken

Das ist so ungefair das, was ich machen wollte. Meinen Schriftverkehr (PDF-Ausdrucke), mit meinem Briefpapier versehen und dann per Mail verschicken und dabei möglichst auf AppleScript verzichten, damit auch so etwas wie GUI-Scripting gar nicht erst zum Thema werden könnte :)Die Schritte dazu:- Einrichtung einesPDF-Druckers an, dazu habe ich das CUPS-PDF Package benutzt.- PDFTK installieren, das benutzt man um was Wasserzeichen in die PDFs einzubetten.pdftk gibt es auf der Seite
als Installations-Package für 10.3 und 10.4, nur kann diese Version nur ein Hintergrund-Image einfügen und nicht ein PDF mit einem andere “stempeln”. Das ist aber oft notwendig, da sonst das eigentlich PDF das Briefpapier (z.B. ein Ausdruck aus Pages) vollkommen verdeckt .Also braucht man eine neuere Version und die muss kompiliert werden, was sehr einfach geht sofern man Xcode (gcc compiler) und die darwin ports installiert hat.Dazu muss braucht man nur das hier eingeben

sudo port install pdftk
und Zeit haben, denn das kompilieren braucht einiges an Zeit.Ist die Installtion soweit durch ist auf dem Rechner nun alles, was man braucht.
– Jetzt muss nur noch die Druckereinstellung angepasst werden, dazu die /etc/cups/cups-pdf.conf Datei öffnen (root)und dort ganz unten #PostProcessing auskommentieren und den Pfad zu einer (unserer) Skript-Datei angeben.
In meinem Beispiel sieht der Eintrag dann so aus:
PostProcessing /usr/local/bin/watermark_script
angepasst werden damit die PDFs auch nachbearbeitet werden
– Jetzt nur noch das Script um was Wasserzeich einzufügen (wie im Beispiel dann ausführbar unter /usr/local/bin/watermark_script abzulegen)
#!/bin/bash
FILENAME=`basename1`
DIRNAME=`dirname $1`
/opt/local/bin/pdftk $1 stamp /BACKGROUND.pdf output $DIRNAME"/watermarked_"$FILENAME owner_pw geheimes_Kennwort allow printing compress
rm $1
/sendEmail -f von@domain.com -t an@domain.com -u $FILENAME -s mein.smtp.server.com -a $DIRNAME"/watermarked_"$FILENAME

Nun, soviel sei dazu gesagt:In diesem Skript fügt pdftk eine PDF-Dokumten namens BACKGROUND.pdf zu dem gerade gedruckten PDF hinzu. Dieses PDF liegt direkt unter /.stamp

bedeutet es überdeckt das PDF, zu dem es hinzugefügt wird (Transparenz =) ).Zudem wird es kompremiert, mit einem Kennwort gegen Änderungen geschützt, darf aber gedruckt werden.Dieses überarbeitet PDF wird dann mit einem Zusatz watermarked_ im gleichen Verzeichnis wie das Ausgangs-PDF abgespeichert (cups-pdf auf dem Schreibtisch, wenn nichts verändert wurde beim PDF-Drucker).dann wird das alte PDF gelöscht und jetzt?Nun, es wird direkt über einen smtp Server per Mail verschickt.So lege ich nämlich meine Briefe ab, ich schicke Sie mir per Mail auf meinen IMAP-Account, so habe ich immer meinen Schrifverkehr online abrufbar.
– das Email-Skript
zum versenden von Emails in der Shell habe ich von hier
Dabei handelt es sich um ein Perl-Script, dem man recht einfach ein paar Parameter mitgeben kann und schon verschickt es über den angegeben smpt-Server eine Email mit AnhangWenn man sentmail oder ähnliches vielleicht schon eingerichtet hat, funktioniert das versenden der Email natürlich auch via mail
Fertig, jetzt werden alles PDF-Ausdrucke mit meinem Logo versehen und in meine Email-Ablage geschickt. War doch ganz einfach :P

Updates 15.02.2011

Für Snow Leopard gibt es mittlerweile eine fertig kompilierte Version direkt vom “Hersteller” von pdftk

8 thoughts on “OSX: PDF drucken, mit Wasserzeichen versehen und per Mail verschicken

  1. hubi says:

    ich habe das noch eine kleine Verschönerung
    wenn man unter osx diese Zeile am Ende in das Shell-Script einfügt (statt der sendEmail Anwendung)

    open -b com.apple.Mail $DIRNAME"/watermarked_"$FILENAME

    so wird das PDF an eine neue Email in Apple Mail angehängt und man kann gleich loschreiben und verschicken.

  2. […] Als PDF Drucken, Wasserzeichen hinzufügen und via Mail verschicken DiskussionenAdd comments …das war die Anforderung und jetzt habe ich es endlich auch sauber (ohne AppleScript!) hinbekommen. -> Es ist schnell und funktioniert auch auf Rechner vor 10.4. http://hubionmac.com/wordpress/?p=43 […]

  3. […] hatte ja bereits vor einiger Zeit mal eine Anleitung geschrieben, wie man PDFs mit Wasserzeichen versehen kann. Damals über einen CUPS-PDF-Drucker, der bei […]

  4. Hendrik says:

    Hallo,

    Aus irgendeinem mir nicht beaknnten Grund funktioniert das Script unter 10.5.4 nicht wirkilch gut. Auch nach der kleinen Korrektur:
    FILENAME=`basename $1`

    startet Mail nicht:

    “No Info.plist file in application bundle or no NSPrincipalClass in the Info.plist file, exiting”

    gibt es eine gute Lösungsidee?
    vg hen

  5. Oli.D says:

    Hallo,
    ich suche schon seit Tagen etwas wie das hier. Daher frag ich dich nun einfach. Ich will in OSX einen Drucker im Netzwerk freigeben. Auf allem, was da an Druckaufträgen kommt, soll immer ein Wasserzeichen gedruckt werden. Das sollte doch eigentlich mit CUPS funktionieren, oder? Gedanklich würde ich sagen, man nehme einen PDF-Drucker, welcher im Netzwerk freigegeben ist. Dieser setzt das Wasserzeichen drauf und schickt die PDF dann an einen richtigen Drucker?!?
    Leider bin ich in deiner Anleitung schon gescheitert :-(
    Konkret beim PDFTK-Punkt. Hab auf der Seite nicht rausbekommen, was davon ich nun laden muss.
    Würde mich sehr über deine Hilfe freuen.

    VLG
    Oli.D

  6. Oli.D says:

    bzw scheitere bei dem Skript:
    Das soll doch unter Skripteditor erstellt werden, oder?
    Da bekomm ich eine Fehlermeldung: Es wurde „Ausdruck“ erwartet, aber ein „Unbekanntes Token“ wurde gefunden.
    in Bezug auf das ` vor basename1
    ??!!??

  7. Oli.D says:

    Hi,
    also – nach einem ganzen Tag Arbeit, bin ich entscheidende Schritte weitergekommen. Sinn der ganzen Sache: Wir wollen einen Druck, der an einem OS X hängt im Netzwerk freigeben. Dabei soll aber auf alles, was gedruckt wird automatisch ein Wasserzeichen gedruckt werden, ohne dass die User das umgehen können.
    Habe deinen Ansatz in den Griff bekommen und insofern verändert, dass ich anstelle des Emailaufrufes am Ende einen lp Befehl in das Postprocessing Skript gesetzt habe. An dem lokalen Mac funktioniert das auch wunderbar.
    Im nächsten Schritt habe ich dann NUR den CUPS-PDF Drucker im Netzwerk freigegeben. Auf diesen können die anderen User nun auch Drucken. Die PDFs landen dann im entsprechenden Verzeichnis, welches für anonymen Druck in der cups-pdf.conf angegeben ist. ABER: Das PostSkript wird wie es scheint nicht mehr ausgeführt. Vermute, dass es wohl daran liegen könnte, dass eben diese nun nicht mit den nötigen Berechtigungen aufgerufen wird?!? Oder wird das Skript bei anonymen Druck unter keinen Umständen ausgeführt??!!??
    Ich bin sozusagen jetzt unmittelbar vorm Ziel und fände es toll, wenn du mir bei dem Problem helfen könntest, damit die ganze Arbeit nicht umsonst war/ist.

    Danke!
    VLG
    Oli.D

Leave a Reply