Mit cups-pdf mehrere PDF-Drucker ansteuerbar?

german

#1

Ich habe mittels cups-pdf mehrere PDF-Drucker angelegt, welche andere Netzwerkteilnehmer nutzen sollen, um entweder einfache PDFs ohne Briefpapier oder PDFs mit Briefpapier auszudrucken. Ein Briefpapier lässt sich bei cups-pdf mittels Postprocessing und dem Tool PDFTK einfügen.

Leider scheint UCS aber keine Möglichkeit zu bieten, je nach PDF-Drucker unterschiedliche Postprocessing-Scripte aufzurufen. Hat hierzu jemand eine Idee?


#2

Hallo,

die Beschränkung liegt hier im Cups selbst. Der Parameter “postprocessing” ist keine Eigenschaft eines Druckers, sondern des DruckerTREIBERs. Wenn Sie also mehrere Drucker angelegt haben, die alle als Treiber den DeviceURI cups-pdf:/ benutzen, dann würde ein im Treiber (/etc/cups/cups-pdf.conf) eingetragenes Postprocessing für alle diese Drucker gelten. Eine Möglichkeit, damit umzugehen, kann es sein, daß der Postprocessing-Skript erkennt, für welchen Drucker er aufgerufen wurde. Ein kleiner Test zeigt, daß das möglich ist.

In /usr/local/bin eine Datei log_printer_props.sh schreiben (und ausführbar machen):

#!/bin/bash

# Log printer properties into a log file in /tmp.
# Note that the script is called in user context
# and must therefore write into different log files
# depending on the user.

lpp_me=`id -nu`
lpp_log=/tmp/printer_props_${lpp_me}.log

(
        echo "`date` postprocessing called"
        echo
        echo "----- ARGS -----"
        while [ -n "$1" ] ; do
                echo "  '$1'"
                shift
        done
        echo "----- ENV -----"
        env
        echo
) >>${lpp_log} 2>&1

Dann in der cups-pdf.conf ändern:

PostProcessing /usr/local/bin/log_printer_props.sh

Danach auf die unterschiedlichen Drucker drucken und dann die Logs in /tmp durchsehen. Da sieht man, wie das Postprocessing aufgerufen wird; interessant ist das Environment. Für meinen Zweitdrucker hab ich z.B. gesehen:

PRINTER=secondary_PDF

So, und nun die Frage: hab ich das Problem richtig verstanden?

viele Grüße
Frank Greif.