CUPS-PDF

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Ein Terminal öffnen

  3. Einen Editor öffnen

  4. Root-Rechte erlangen

  5. Ein einzelnes Paket installieren, optional

Inhaltsverzeichnis
  1. Installation
  2. Verwendung
  3. Konfiguration
  4. Problemhebung
  5. Links

Wiki/Icons/Oxygen/pdf.png ./pdf-cubs4.png CUPS-PDF 🇬🇧 ist ein Backend für den Druckdienst CUPS. Es handelt sich um ein Programm mit einer langen Tradition: bis einschließlich Ubuntu 8.04 war es standardmäßig vorinstalliert und wurde genutzt, um Dokumente programmunabhängig im PDF-Format drucken zu können. Ab Ubuntu 8.10 wurde es durch die Funktion gtkprint abgelöst, das zumindest bei GTK-basierenden Anwendungen eine Postscript- bzw. PDF-Datei direkt erzeugen kann. Dazu wird im Dialog "Drucken" der virtuelle Drucker "In Datei drucken" ausgewählt und das Ausgabeformat sowie der Name der Datei angegeben. Inzwischen enthält auch KDE eine entsprechende Funktion.

Möchte man in wirklich allen Programmen PDF-Dateien erzeugen, bietet sich dennoch die zusätzliche Einrichtung von CUPS-PDF an. Im Gegensatz zu gtkprint steht CUPS-PDF auch in Java- und mittels Wine ausgeführten Windows-Anwendungen zur Verfügung. Es kann auch als virtueller Drucker in einem papierlosen Netzwerk genutzt werden, wenn man CUPS erlaubt, die lokal vorhandenen Drucker anderen Clients zur Verfügung zu stellen.

Installation

Wiki/Icons/synaptic.png Ab Ubuntu 16.04 installiert man das folgende Paket [1]:

Paketliste zum Kopieren:

sudo apt-get install printer-driver-cups-pdf 

Oder mit apturl die Pakete installieren. Link: apt://printer-driver-cups-pdf

Verwendung

Bei der Installation wird automatisch ein neuer Drucker mit dem Namen "PDF-Drucker" angelegt. Zur Kontrolle und Konfiguration dienen je nach Desktop-Oberfläche unterschiedliche Werkzeuge:

Auch im Browser kann CUPS-PDF verwaltet werden. Dazu gibt man die Internet-Adresse (URL) http://localhost:631/printers/ in die Adresszeile des Browsers ein. Nun werden alle installierten Drucker anzeigt.

Die Voreinstellungen sind in der Regel korrekt gesetzt. Kontrollieren sollte man dennoch das Papierformat (DIN A4) und bei Bedarf den DPI-Wert. In den meisten Fällen reicht eine Auflösung von 300 oder 600 dpi aus.

Dokumente werden in einem konfigurierbaren Verzeichnis gespeichert: früher per Vorgabe unter ~/PDF/, ab Ubuntu 10.10 direkt im Homeverzeichnis.

Konfiguration

Wiki/Icons/settings.png Nach jeder manuellen Änderung der Konfiguration muss CUPS neu gestartet werden:

sudo service cups restart 

Umbenennen des Druckers

Ein Ändern des Standardnamens "PDF-Drucker" ist nicht bei jeder Ubuntu-Variante ohne Weiteres möglich. Dann muss die Datei /etc/cups/printers.conf in einem Editor mit Root-Rechten [3] bearbeitet werden. Hier sucht man den Eintrag

<Printer "Name">

wobei Name durch den den aktuellen Druckernamen ersetzt werden muss. Dieser Name kann dann einfach ersetzt werden. Es dürfen aber keine Leerzeichen im Namen vorkommen. Alternativ kann die CUPS-Weboberfläche unter http://localhost:631/printers/ genutzt werden.

Ändern des Speicherorts

Wer den Ausgabeordner ändern möchte, muss die Datei /etc/cups/cups-pdf.conf in einem Editor mit Root-Rechten bearbeiten. Hier sucht man die Zeile mit

Out ${HOME}/PDF

und ändert den Ausgabeordner (statt PDF) wie gewünscht ab.

Da CUPS durch AppArmor überwacht wird, ist noch ein zusätzlicher Eingriff erforderlich. Dazu die Datei /etc/apparmor.d/usr.sbin.cupsd in einem Editor mit Root-Rechten bearbeiten und in den Zeilen:

@{HOME}/PDF/ rw,
@{HOME}/PDF/* rw,

ebenfalls den gewünschten Ausgabeordner zweimal (statt PDF) anpassen. Anschließend müssen AppArmor und CUPS neu gestartet werden:

sudo service apparmor restart
sudo service cups restart 

Überschreiben verhindern

Speziell bei Internetseiten kann es passieren, dass erstellte PDF-Dokumente immer wieder überschrieben werden. Hintergrund dieses Problems ist, dass als Dateiname von CUPS-PDF automatisch der Seitentitel benutzt wird. Wenn dieser nicht individuell gesetzt ist, wird eine bereits bestehende Datei mit dem gleichen Namen überschrieben.

Um das zu verhindern, wird die Datei /etc/cups/cups-pdf.conf mit Root-Rechten editiert und der folgende Eintrag wie folgt abgeändert:

### Key: Label
##  label all jobs with a unique job-id in order to avoid overwriting old
##  files in case new ones with identical names are created; always true for
##  untitled documents
##  0: label untitled documents only
##  1: label all documents with a preceeding "job_#-"
##  2: label all documents with a tailing "-job_#" (version > 2.5 only)
### Default: 0

Label 1

Auch nach dieser Änderung muss CUPS neu gestartet werden. Damit wird in Zukunft jede erstellte PDF-Datei eindeutig benannt (nummeriert) und ein versehentliches Überschreiben verhindert.

Problemhebung

Schwierigkeiten mit Apparmor

Wenn CUPS-PDF Probleme bereitet:

"... apparmor="DENIED" operation="mknod" parent=16861 profile="/usr/lib/cups/backend/cups-pdf" ..."

so hilft eine Ergänzung in /etc/apparmor.d/usr.sbin.cupsd:

  capability mknod,

Anschließend wie oben beschrieben CUPS und AppArmor neu starten.

PDF/A-Erstellung

Möchte man das Ausgabeformat auf PDF/A (konkret PDF/A-1b) umstellen, editiert man die Datei /etc/cups/cups-pdf.conf mit Root-Rechten und passt folgende Zeile an (die entscheidende Änderung ist gelb markiert):

GSCall %s -q -dPDFA -dCompatibilityLevel=%s -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -sOutputFile="%s" -dAutoRotatePages=/PageByPage -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dPDFSETTINGS=/prepress -c .setpdfwrite -f %s

Falls die Zeile mit einem # beginnt, dieses entfernen, um die Änderung zu aktivieren. Für eine Erläuterung der Parameter siehe Ghostscript.