ubuntuusers.de

PDF Drucker mit Firmenpapier

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

wewa

Anmeldungsdatum:
14. September 2008

Beiträge: Zähle...

Wohnort: Österreich

Hallo,

ich verwende bereits CUPS-PDF um aus einer Wine-Applikation PDFs zu erzeugen.

Gibt es einen PDF Drucker wo ich ein Firmenpapier einstellen kann oder lässt sich CUPS-PDF so konfigurieren?

lg wewa

PS: Mit Firmenpapier meine ich, dass der PDF Drucker automatisch Logos, Texte usw. in den Hintergrund des PDF-Dokuments legen soll.

Frieder108

Avatar von Frieder108

Anmeldungsdatum:
7. März 2010

Beiträge: 9583

selbes Thema, wie in deinem anderen Thread ( ◀ klick mich, ich bin ein Link) → einfach mal richtig fragen ( ◀ klick mich auch, ich bin auch ein Link)

nen schönen Abend noch 😛

Frieder

Thomas_Do Team-Icon

Moderator
Avatar von Thomas_Do

Anmeldungsdatum:
24. November 2009

Beiträge: 8808

Na ja, ich versteh' schon warum es geht: Digitales Briefpapier beim PDF-Druck. Ich kenne nur keine Lösung unter Linux.

mrkramps Team-Icon

Avatar von mrkramps

Anmeldungsdatum:
10. Oktober 2006

Beiträge: 5523

Wohnort: south central EL

Man könnte vielleicht ein Wasserzeichen dafür missbrauchen, bspw. pdftk - Wasserzeichen einfügen. Das wäre so jetzt allerdings nur in der Nachbearbeitung einer bereits vorhandenen PDF möglich.

CUPS selber setzt sich aus verschiedenen Backends samt Konfiguration, Filtern und Definitionsdateien (PPD) zusammen. Ich bin mit der Materie nicht besonders vertraut, aber soweit ich das beurteilen kann, sollte es zumindest theoretisch möglich sein einen eigenen Filter zu schreiben und den in einer angepassten PPD aufzurufen um die erzeugte PDF nachzubearbeiten. Die meisten Filter sind Binärdateien, allerdings finden sich dazwischen auch Python-, Perl und Shell-Skripte. In einem solchen Skript könnte man ggf. PDFtk oder eine andere Software aufrufen um das notwendige Wasserzeichen mit dem Druckbefehl automatisch einzufügen.

wewa

(Themenstarter)

Anmeldungsdatum:
14. September 2008

Beiträge: 168

Wohnort: Österreich

Ok danke. Ich werde es mit inotify und pdftk versuchen.

Lässt sich bei pdftk auch einstellen, dass das Wasserzeichen nur auf Seite 1 eingefügt wird?

luigi17

Avatar von luigi17

Anmeldungsdatum:
9. August 2008

Beiträge: 1798

Wohnort: Weserbergland

Mit LibreOffice arbeiten - Briefpapier / Briefkopf einlesen und/oder neu gestalten, dies als Vorlage speichern, die Vorlage fürs Briefe-Schreiben verwenden und dann als PDF exportieren. So mache ich es.

wewa

(Themenstarter)

Anmeldungsdatum:
14. September 2008

Beiträge: 168

Wohnort: Österreich

So, wie versprochen meine Lösung.

Folgendes Bash-Script wird über Autostart gestartet.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
inotifywait -mrq -e modify --format %w%f ~/PDF | while read FILE
do
    ENDUNG=${FILE/*./}
    if [ "$ENDUNG" == "pdf" ]; then
        if [ ! -n "`echo $FILE | grep \"_.pdf\"`" ]; then
            DATEINAME=${FILE%.pdf}
            pdftk "${FILE}" "background" "${HOME}/Vorlagen/Firmenpapier.pdf" "output" "${DATEINAME}_.pdf"
        fi
    fi
done

Es überwacht den Ordner ~/PDF auf Änderungen und fügt dann PDF-Dateien (welche nicht mit _.pdf enden) das Wasserzeichen (bzw. das Firmenpapier) im Hintergrund hinzu und speichert diese Datei unter neuem Namen ab. Der Name der neuen Datei ist identisch mit dem der alten, jedoch wird dieser um ein "_" erweitert. Damit dieses Skript funktioniert, wird das Paket inotify-tools benötigt (siehe inotify).

Nicht geklärt ist hingegen folgende Frage.

Wie kann man das Wasserzeichen nur auf der ersten Seite einfügen?

lg wewa

mrkramps Team-Icon

Avatar von mrkramps

Anmeldungsdatum:
10. Oktober 2006

Beiträge: 5523

Wohnort: south central EL

wewa schrieb:

Nicht geklärt ist hingegen folgende Frage.

Wie kann man das Wasserzeichen nur auf der ersten Seite einfügen?

Mit PDFtk geht es nicht direkt. Die Funktionen background und stamp verpassen allen Seiten ein Wasserzeichen. Aber man könnte die erste Seite des Dokuments im Skript extrahieren, mit Wasserzeichen versehen, und anschließend alle Seiten wieder zusammenführen. Das ist keine schöne Lösung, aber mir fällt spontan keine Alternative ein.

Aus deinem Skript schließe ich, dass du CUPS-PDF ausschließlich für diesen Anwendungsfall einsetzt. Also alle deine PDFs, die du über diesen Drucker schickst, mit einem Wasserzeichen versehen möchtest. Mit PPD und benutzerdefinierter Filterkette bin ich bislang gescheitert, aber CUPS-PDF verfügt selber über eine Möglichkeit in der Konfiguration ein Skript für die Nachbearbeitung einer erzeugten PDF anzugeben. Das würde dir dann die Überwachung der Verzeichnis ersparen und dein Skript entsprechend nach jedem Druckauftrag ausgeführt werden. Das wäre halt unkomfortabel, wenn das Wasserzeichen nur auf bestimmte PDFs angewendet werden soll, was aber bei dir scheinbar nicht zutrifft.

Für das Skript übergibt CUPS-PDF automatisch den Dateinamen in $1 und den Benutzernamen in $2. Den Hinweis darauf, sowie die notwendige Zeile für das Skript findet man in der /etc/cups/cups-pdf.conf. Zu ändern wäre also:

#PostProcessing

In:

PostProcessing /pfad/zu/deinem/skript

Und in dem Skript könnte dann bspw. etwas stehen wie:

1
2
3
4
#!/bin/bash
datei="$1"
benutzer="$2"
pdftk "$datei" background /home/"$benutzer"/PDF/wasserzeichen.pdf output "${datei%.pdf}_.pdf"

Da CUPS von AppArmor überwacht wird, muss die Vorlage wasserzeichen.pdf ebenso wie das Skript selber in der Konfiguration mit den entsprechenden Rechten hinterlegt sein. Da ~/PDF dort bereits mit Lese- und Schreibrechten eingetragen ist, liegt die Vorlage dort schon nicht verkehrt. Aber das Skript muss man in der Datei /etc/apparmor.d/usr.sbin.cupsd noch zusätzlich im Block für CUPS-PDF mit den entsprechenden Rechten nachtragen:

/pfad/zu/deinem/skript Pxr,

Danach AppArmor und CUPS einmal neu starten:

sudo service apparmor restart ; sudo service cups restart 


Ich hoffe, die Angaben stimmen so. Ich hatte das vergangene Tage zwar bereits erfolgreich ausprobiert, sitze aber gerade nicht an einem Linux-Gerät um das nochmal gegenzuprüfen.

wewa

(Themenstarter)

Anmeldungsdatum:
14. September 2008

Beiträge: 168

Wohnort: Österreich

Danke mrkramps, ich habe deine Tipps berücksichtigt und es funktioniert nun einwandfrei.

Hier mein Skript, welches das Wasserzeichen nun nur auf der ersten Seite einfügt.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash
file="$1"
user="$2"
pagecount=$(pdftk "$file" dump_data | grep NumberOfPages | sed 's/[^0-9]*//')
if [ "$pagecount" == "1" ]
  then
    pdftk "$file" background /home/"$user"/PDF/.background/background.pdf output "${file%.pdf}_.pdf"
  else
    #extract first page
    pdftk "$file" cat 1 output "${file%.pdf}_FirstPage.pdf"
    #extract other pages
    pdftk "$file" cat 2-end output "${file%.pdf}_OtherPages.pdf"
    #add background to first page
    pdftk "${file%.pdf}_FirstPage.pdf" background /home/"$user"/PDF/.background/background.pdf output "${file%.pdf}_FirstPageBackground.pdf"
    #concatenate pages
    pdftk "${file%.pdf}_FirstPageBackground.pdf" "${file%.pdf}_OtherPages.pdf" cat output "${file%.pdf}_.pdf"
    #remove temporary files
    rm "${file%.pdf}_FirstPage.pdf"
    rm "${file%.pdf}_OtherPages.pdf"
    rm "${file%.pdf}_FirstPageBackground.pdf"
fi
Antworten |