Über Sinn und Zweck lässt es sich streiten. Einige Leute werden sagen "Das geht doch auch ganz einfach, wenn ich im Druckdialog links unten auf 'PDF' klicke", andere basteln sich einen Automator-Workflow...vorenthalten möchte ich CUPS-PDF allerdings nicht, weil es sich für mich auf der Arbeit als sehr nützlich herausgestellt hat.

CUPS-PDF ist ein "Virtueller Drucker", der im Druckerdialog wie ein Drucker erscheint, wo aber auf keinem Gerät ein Ausdruck herauskommt, sondern in einem definierten Ordner ein PDF abgelegt wird. Wir bevorzugen ja das digitale Büro mit PDFs statt A4-Papierablage ;-)

Die Vorteile des virtuellen Druckers im Gegensatz zum Weg PDF > Als PDF sichern:

  • Hochgradig automatisierbar
  • Kann als freigegebener Drucker genutzt werden, so dass auch andere ihn nutzen können und auch deren PDFs in einem gemeinsamen vorher definierten Ordner landen
  • Schneller (Apfel-P, Enter, fertig)

Update: In diesem Artikel habe ich auch ohne die Installation von CUPS-PDF einen PDF-Drucker mit CUPS-Boardmitteln eingerichtet.

Installation

Okay, auch wenn ich den Begriff "Installation" beim Mac sonst eher übertrieben finde (Vom Image auf die Festplatte ziehen. Fertig.) ist er hier absolut angebracht.

Es existiert einerseits ein Installer, der sich per Doppelklick ausführen lässt – es lohnt sich auf jeden Fall, zuerst diesen auszuprobieren – allerdings hatte ich zu einem späteren Zeitpunkt Probleme, dass der PDF-Drucker nirgends zur Auswahl stand. Hierfür gibt es ein paar Troubleshooting-Tipps...aber auch diese hatten bei mir nicht geholfen.

Somit gibt es zwei Arten für Installationsschritt 1

a) Installer hier herunterladen, entpacken und ausführen. Fertig.

b) Aktuellste Source-Dateien (momentan 2.6.1 oder 3.0 Beta) hier herunterladen, kompilieren und Dateien an die richtigen Orte schieben. Zum kompilieren ist es notwendig, dass XCode/Die Apple-Developer-Tools vorhanden sind. Findet sich alles auf der mitgelieferten Installations-DVD des Macs und lässt sich einfach per Klick installieren.
Sind die Developer Tools installiert, dann die heruntergeladene .tar oder .gzip-Datei per Doppelklick öffnen, das Dienstprogramm Terminal öffnen und dort in den Unterordner

/src
des eben entpackten Verzeichnisses
cd
'en (hier sollten die Dateien cups-pdf.c und cups-pdf.h liegen). Nun folgende Befehle eingeben:

cd ~/Downloads/cups-pdf-3.0beta1/src
gcc -O9 -s -lcups -o cups-pdf cups-pdf.c
sudo mv cups-pdf /usr/libexec/cups/backend
sudo chown root:wheel /usr/libexec/cups/backend/cups-pdf
sudo chmod 0700 /usr/libexec/cups/backend/cups-pdf

Dann in den Ordner extra

cd
'en und  die dort vorhandenen Daten an die richtige Stelle im System schieben:

cd ../extra
sudo mv CUPS-PDF_*.ppd /usr/share/cups/model/
sudo mv cups-pdf.conf /etc/cups/

Die beiden PPD-Dateien, die wir eben ins System verschoben haben, werden bei der Installationsart a) übrigens nicht installiert (jedenfalls nicht bei der aktuell vorhandenen Version 2.5). Ich persönlich fände es sinnvoll, diese so oder so von den Source-Daten zu holen und nach

/usr/share/cups/model
zu kopieren.

 

Installationsschritt 2 – Konfiguration anpassen

In der
cups-pdf.conf
-Kofigurationsdatei wären noch ein paar Dinge anzupassen.

Die Textdatei editiert man am besten direkt via Terminal, um nichts zu verhunzen.
Zeilen beginnend mit einem

#
sind nur Kommentare, bzw. deaktiviert. Sind Variablen deaktiviert, wird eine Voreinstellung genommen, die in den Kommentaren über der Variable zu sehen ist.

Ich persönlich habe folgende Werte für mich angepasst (Auszug aus der

cups-pdf.conf
– ich habe nur Werte aufgeführt, die ich im Gegensatz zur Standardinstallation geändert habe):

Out /pdfprinter
AnonDirName /pdfprinter
Label 1
UserUMask 0000
GhostScript /usr/bin/pstopdf
GSTmp /private/tmp
GSCall %s %s -o %s %s

Out ist der Pfad, in dem die erstellten PDFs abgelegt werden sollen. Standardmäßig ist dies ein Verzeichnis im Benutzerordner, macht aber Berechtigungsprobleme. Ich empfehle einen Ordner außerhalb des Benutzerordners zu wählen (diesen natürlich vorher anlegen und per Terminal auf 777 zu

chmod
'en. Beispiel
sudo chmod 777 /pdfprinter
), habe mich in diesem Fall für einen Ordner direkt unter der guten alten "Macintosh HD" entschieden.

Dasselbe gilt für AnonDirName. Lasse ich in's selbe Verzeichnis laufen.

Interessant mag für Bastler noch die Variable PostProcessing gegen Ende der Konfigurationsdatei sein. 
Wird hier ein Shell- oder Perl-Skript angegeben, wird dies bei jedem Printjob aufgerufen und der absolute Pfad zum erstellen PDF als Parameter mitgegeben. 
Anwendungsbeispiel könnte zum Beispiel sein, die erstellten PDFs anhand ihres Namens (der meistens der Dateiname des Dokuments ist) in irgendwelche bestimmten Ordner zu verschieben und/oder das PDF mit ghostscript zu verkleinern (ja, CUPS-PDF erstellt schon recht große Brocken!).

Noch eine weitere kleine Anpassung am unteren Ende der Datei

/etc/smb.conf
:

guest ok = yes
create mode = 0777
browseable = yes
create mask = 0777

Danach das CUPS-System oder im Zweifelsfall den gesamten Computer neustarten.

Wie starte ich CUPS neu? Im Internet finde ich nur Lösungen via init.d, welche am Mac nicht funktionieren.
Ich starte CUPS neu, indem ich via CUPS-Webinterface

http://localhost:631/admin
ein Häkchen entferne, speichere, das Häkchen wieder setze und erneut speichere. Etwas umständlich, startet CUPS sogar gleich zweimal neu, aber wirkungsvoll ;-)

Weitere Möglichkeit:
Prozess-ID herausfinden und killen:

$ ps -ef | grep cups
    0 1197     1   0   0:13.40 ??         0:23.43 /usr/sbin/cupsd -l
  501 99260 99090   0   0:00.00 ttys000    0:00.00 grep cups
$ sudo kill 1197

(In diesem Beispiel hat der CUPS-Prozess die ID

1197
).

Installationsschritt 3 – Drucker einrichten

Das geht nun ganz ordinär über die Systemeinstellungen > Drucken & Faxen > Drucker hinzufügen.

CUPS-PDF sollte unter den Standarddruckern auftauchen, als Druckersoftware sollte man den "Generic CUPS-PDF Printer" wählen (wurde in Installationsschritt 1 aus dem Ordner "extra" an die entsprechende Stelle im System kopiert. Wurde die einfache Installation via Installer gewählt, findet man als Druckersoftware wahrscheinlich nur den "Postscript Generic postscript color printer", welcher aber auch seinen Zweck erfüllen sollte).

Beim "Generic CUPS-PDF Printer" hat man die Qual der Wahl zwischen einer Version mit einstellbaren Optionen und eine ohne einstellbare Optionen.

CUPS-PDF taucht nicht auf?

Dann per Terminal folgenden Versuch starten

sudo chown root:wheel /usr/libexec/cups/backend/cups-pdf
sudo chmod 0700 /usr/libexec/cups/backend/cups-pdf

Erscheint nach einem CUPS-Neustart immer noch nichts, so rate ich zum selbst-kompilieren der aktuellsten Source-Daten, wie unter Installationsschritt 1b beschrieben.

Installationsschritt 3 – Via CUPS-Webinterface

Statt via Systemeinstellungen lässt sich der PDF-Drucker auch über das CUPS-Webinterface 
http://localhost:631/admin
einrichten. Wer's so lieber mag... ;-)
 
Name für Drucker und Bezeichnung eintragen
 
CUPS-PDF (Virtual Printer) auswählen
In Version 3 von CUPS-PDF werden mehrere PDF-Drucker unterstützt, die man parallel nebeneinander verwenden kann (um zum Beispiel je Drucker die PDFs in verschiedenen Ausgabeverzeichnissen auszugeben oder verschiedene Nachbearbeitungen zu gewährleisten; Siehe nächsten Abschnitt).
Wählen Sie den entsprechenden CUPS-Drucker aus. Sie sind wie in der Konfigurations-Datei benannt.
 
Generic wählen und Fortsetzen.
 
Generic CUPS-PDF Printer mit oder ohne Optionen wählen
 

Jetzt habe ich einen PDF-Drucker mit einem Ausgabeverzeichnis...

Genau. Druckt man nun etwas aus, wählt den PDF-Drucker und klickt auf "Drucken" erscheint ohne weitere Nachfragerei,  wie die Datei denn heißen und wo sie liegen soll, ein PDF im vorher definierten Ordner.

Dies mag für manche unpraktisch sein, da sie ihrem PDF lieber gleich einen Namen geben, mit dem man etwas anfangen kann und das PDF manchmal da und manchmal dort abspeichern. Will man aber flott mehrere Druckaufträge zur PDF-Erstellung rauslassen, wo einem der Speicherort und Name egal ist, ist dies sicher der schnellere Weg. 

Oder man denke an die Möglichkeit, diverse Dokumentformate wie Word, RTF, JPEG auf das Druckersymbol im Dock ziehen zu können, worauf diese sofort gedruckt werden: Hier hätte man einen einfachen genericFile2PDF-Konverter.

Ab CUPS-PDF, Version 3 kommt's für anspruchsvolle User noch besser: Hier kann man nicht nur einen PDF-Drucker, sondern beliebig viele, anlegen.
Dazu muss man nur die Konfigurationsdatei

/etc/cups/cups-pdf.conf
duplizieren, das Duplikat anpassen (z.B. anderer Ausgabepfad) und nach dem Schema cups-pdf-neuerWarteschlangenname.conf benennen.
Nach einem CUPS-Neustart sollte der zusätzliche PDF-Drucker auftauchen.

 

Meine persönliche Windows-Problematik

Auf CUPS-PDF gestoßen bin ich, weil wir ein Programm auf einem Windows-Server laufen haben, welches automatisiert Ausdrucke erstellt, welche ich nicht als Papier im Drucker liegen haben wollte, sondern als PDF. Da ich es dämlich fand, den automatisch erstellten Ausdruck wieder einzuscannen, um ein PDF zu haben und auf Programm und Windows-Server wenig Einfluss habe, habe ich auf einem Mac, der sowieso die ganze Zeit läuft, den PDF-Drucker eingerichtet.

Da das Windows-Programm allerdings einen lokalen und keinen Netzwerk-Drucker benötigt, um Drucken zu können, musste ich den im Netzwerk freigegebenen PDF-Drucker dort als lokalen Drucker einrichten.

Und da es sich um Windows handelt, hat man einerseits die Problematik, dass das Programm unbedingt einen lokalen Drucker benötigt und man andererseits einen Netzwerkdrucker als lokalen Drucker anlegen kann. Logisch mag das vielleicht nur der studierte IT-Profi finden, für mich ist Logik etwas anderes.

Jedenfalls möchte ich meine Einrichtung auf dem Peezeeh auch niemandem vorenthalten. Besonders, weil ich wohl selbst hier wieder nachschauen muss, wie das nochmals genau abläuft, wenn ich den Drucker mal wieder auf einem Peezeeh einrichten muss... (Bevorzugt auf derselben Windows-Version, denn je Windows-Version sieht das auch wieder alles anders aus. Danke Microsoft!)

 

Den Weg, einen neuen Drucker anzulegen, findet wahrscheinlich jeder selbst. Nun aber als lokalen Drucker, statt als Netzwerkdrucker.
 
Neuen Anschluss erstellen: TCP/IP-Port. Okay, das hört sich nun schon nicht mehr so ganz "lokal" an.

In diesem Artikel gehe ich den Weg über "Local Port" statt "TCP/IP-Port", weil "TCP/IP-Port" nicht mehr funktionierte.

 
Nun die IP-Adresse des Macs, auf dem CUPS-PDF läuft, eingeben. Diese sollte günstigerweise fest sein und sich nicht ändern.
 
Kann man so lassen.
 
Habe hier mal irgendeinen HP Postscriptdrucker gesucht und gefunden. Verrichtet einwandfrei seinen Dienst.
 
Nun kommt der Knackpunkt, nachdem der Drucker fertig eingerichtet ist: Mit der rechten Maustaste auf das Druckersymbol klicken und "Eigenschaften" wählen. Hier unter dem Reiter "Anschlüsse" den vorhin definierten Port anklicken und dann "Konfigurieren".
 
Statt dem voreingestellten RAW haben wir lieber LPR und als Warteschlangenname ist der Name des Druckers einzutragen, wie man ihn am Mac angelegt und freigegeben hatte. Ist übrigens ratsam, an dieser Stelle auf Leer- und Sonderzeichen zu verzichten. Die LPR-Bytezählung musste ich noch aktivieren, damit die Sache auch tatsächlich funktionierte.
 
Ist man mal hinter die eigene Logik eines PCs gekommen, ist die Logik einer anderen Windows-Version dann natürlich wieder eine gänzlich andere. Im besagten Fall wollte ich das ganze auch noch auf einem Windows 2008 Server einrichten, bekam aber immer eine dämliche Fehlermeldung, wenn ich auf den Button "Konfigurieren" klicken wollte.
Durch Zufall entdeckt ich in der oberen Fensterleiste den Button Druckereigenschaften. Klickt man auf diesen, erscheint zwar ein ganz anderes Fenster, allerdings ebenfalls mit den ominösen Anschlusseinstellungen.
 
Hier muss man erst nochmals explizit sagen, dass man die Anschlusseinstellungen ja ändern will und dann kann man endlich die Einstellung der vorletzten Punktes vornehmen.