Gestern gab es eine Anfrage in unserem TALK-Raum, wie man denn PDF-Dateien mit einem Wasserzeichen auf allen Seiten versieht. Solche Anforderungen nehme ich gerne als Herausforderung an, wenn ich selbst nicht weiss, wie die Lösung lautet. Als prompte Vorschläge wurden ImageMagick oder PDFTK genannt. Wie sich in diesem Artikel zeigt, ist die Lösung nicht so einfach, wie vermutet wurde.
Oft ist es richtig, eine Anforderung zu analysieren, bevor man sich mit möglichen Lösungen beschäftigt. Also, worum geht es hier? Man hat eine PDF-Datei, die man auf allen Seiten mit einem Wasserzeichen versehen möchte. Das Wasserzeichen ist ein diagonal verlaufender Text. Dabei soll das Wasserzeichen im Hintergrund liegen, damit die PDF-Datei nicht vom Wasserzeichen verdeckt wird. Somit muss die PDF-Datei transparent sein, damit das darunterliegende Wasserzeichen nicht von der PDF-Datei verdeckt wird.
Nachdem die Anforderung verstanden wurde, kann man nach möglichen Lösungen suchen.
Beginnen möchte ich mit einem Versuch, der sehr einfach ist und funktioniert.
Versuch 1 - LibreOffice
Man öffne die PDF-Datei in LibreOffice Draw. Dann exportiert man die Datei als PDF-Datei mit dem Menüpunkt Datei, Exportieren als, Als PDF exportieren. Bei den Exportoptionen wählt man den Punkt Mit Wasserzeichen versehen und gibt einen Text ein. Das Ergebnis sieht so aus:
Der Wasserzeichen-Text wird vertikal, mit fester Grösse und Farbe als Hintergrund eingefügt. Auf die Ausrichtung, Grösse und Farbe hat man keinen Einfluss. Lediglich der Text kann bestimmt werden.
Versuch 2 - PDFTK (background)
Während der erste Versuch einfach ist und augenscheinlich funktioniert, erfüllt er nicht ganz die Anforderungen. Diese verlangten einen diagonalen Text im Hintergrund. Das PDF-Toolkit (pdftk) bietet zwei Optionen, die für eine Lösung taugen könnten: background und stamp. Für meine Beispiele gibt es zwei Dateien: Statuten.pdf und Wasserzeichen.pdf. Das Wasserzeichen soll unten liegen und von den Statuten transparent überdeckt werden. Und genau dort liegt das Problem. Dieser naheliegende Befehl führt nicht zum gewünschten Ergebnis:
pdftk Statuten.pdf background Wasserzeichen.pdf output Statuten_mit_Wasserzeichen.pdf
Als Ergebnis erhält man eine Datei, die genau der Statuten.pdf entspricht, weil ebendiese nicht transparent ist und somit das Wasserzeichen vollständig abdeckt. Man könnte den Befehl herumdrehen, was jedoch aus denselben Gründen nicht zum gewünschten Resultat führt, weil die Datei Wasserzeichen.pdf auch nicht transparent ist. Nun stellt sich die Frage, wie man eine PDF-Datei transparent macht. Dazu habe ich keine Lösung gefunden (obwohl es sie bestimmt gibt).
Versuch 3 - PDFTK (stamp)
Bei diesem Versuch probiere ich es mit stamp:
Ihr seht es: stamp bügelt das Wasserzeichen über die PDF-Datei. Da die Wasserzeichen.pdf auch nicht transparent ist, werden Teile des Orignals überdeckt. Das Wasserzeichen habe ich in LibreOffice Writer erzeugt, indem ich einen Fontwork-Text eingefügt und gedreht habe. Leider gibt es beim PDF-Export keine Möglichkeit, die Datei mit transparentem Hintergrund zu speichern.
Versuch 4 - Transparentes Wasserzeichen
Die Stossrichtung ist jetzt klar; entweder muss das Wasserzeichen oder die Statuten.pdf transparent sein. In diesem Versuch machen wir das Wasserzeichen transparent. Dazu speichern wir die Wasserzeichen-Datei, die wir mit LibreOffice Writer erstellt haben, als PNG-Datei ab. Wie schon in der Einleitung angekündigt, kommt nun ImageMagick zum Einsatz:
convert Wasserzeichen.png -transparent white -background none Wasserzeichen.pdf
pdftk Statuten.pdf stamp Wasserzeichen.pdf output Statuten_mit_Wasserzeichen.pdf
Die erste Zeile erzeugt aus dem PNG eine PDF-Datei mit transparentem Hintergrund. Der zweite Befehl stempelt das nun transparente Wasserzeichen über die Statuten.pdf. So sieht das Ergebnis aus:
Das sieht brauchbar aus, obwohl es noch nicht optimal ist. Das Wasserzeichen ist in seinen weissen Bereichen transparent, wodurch man den darunterliegenden Text lesen kann. Die Umrandungen des Wasserzeichens sind nicht transparent und überdecken den Text darunter. Das kann erwünscht sein, weil damit die Entfernung des Wasserzeichens, bzw. das Scannen der Statuten erschwert wird.
Um eine optimale Lösung zu erzielen, müsste der Statuten-Text transparent sein und das Wasserzeichen mit pdftk background eingefügt werden. Wie das gehen soll, weiss ich nicht.
Fazit
Die vier Versuche haben zwei brauchbare Lösungen hervorgebracht. Wer es einfach haben möchte, öffnet die PDF-Datei in LibreOffice Draw und speichert diese mit einem Wasserzeichen ab. Als Alternative dient der vierte Versuch, bei dem eine transparente Wasserzeichen.png über die PDF-Datei gestempelt wird. Dabei ist darauf zu achten, dass der Wasserzeichen-Text nur aus dünnen Konturlinien besteht (LibreOffice Fontwork), weil sonst zu viel des darunterliegenden Textes überdeckt wird.
Vielleicht finden unsere Leser und Leserinnen eine bessere Lösung.
Update
Ja, die Community hat bessere Lösungen gefunden. Herzlichen Dank an alle Kommentatoren, hier und auf Mastodon. Ich möchte diesen Artikel mit zwei Lösungsvorschlägen abrunden. Der erste kommt von Roland (siehe Kommentare) und der zweite von Cristal Pixel.
Rolands Lösung
Falls die Datei als ODT (LibreOffice Writer) vorliegt, geht man dort auf den Menüpunkt: Format, Seitenvorlage, Transparenz und stellt diese auf 100 % ein:
Dann speichert man die ODT-Datei als PDF ab. Nun kann man, wie bei Versuch 2 beschrieben, den Text über das Wasserzeichen legen. Das Ergebnis sieht so aus:
Da die Statuten jetzt transparent sind, ist das darunterliegende Wasserzeichen vollständig sichtbar.
Cristal Pixels Lösung
Diese Variante eignet sich, wenn man keine Originaldatei des Textes, sondern nur eine PDF-Datei hat. Diese öffnet man in LibreOffice-Writer, wobei beim Öffnen der Dateifilter "PDF - Portable Document Format (Writer)" gewählt werden muss. Macht man das nicht, wird die Datei in LO-Draw geöffnet. In LO-Writer öffnet man den Menüpunkt: Format, Wasserzeichen und stellt die gewünschten Parameter ein:
Nachdem die Datei mit den Änderungen wieder als PDF-Datei gespeichert wurde, präsentiert sich das Ergebnis so:
Damit wäre das Thema ausführlich und abschliessend behandelt und bleibt für alle im GNU/Linux.ch-Nachschlagewerk erhalten. Vielen Dank an alle Beteiligten.
Quelle: https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
Hallo Ralf,
vielen Dank für die schnelle Umsetzung als Artikel.
Ich habe es mit PDFTK inzwischen geschafft, nachdem du eine Antwort von Superuser geschickt hast: https://superuser.com/questions/449130/how-to-add-text-at-bottom-of-pages-using-pdftk/451289#451289
1) Ich habe mir bei http://svgeditoronline.com/ ein Wasserzeichen in der Auflösung 1920 x 1440 erstellt. Damit es bei A3 Blättern nicht so verwaschen aussieht.
2) Man kann im Editor die Transparenz einstellen. Dazu klickt man links auf den Schieberegler unter der Farbe. Da erscheint R G B A. Bei A stelle ich 0,2 ein. Damit habe ich dann 20% Deckung.
3) Das ganze kann man auf der Seite als PNG exportieren.
4) Da es bei mir für die Arbeit ist, habe ich in Word ein neues Dokument geöffnet und ein leeres Blatt mit dem Bild erstellt.
5) Export über Word durch den integrierten Exporter. Damit blieb die Transparenz bestehen. Beim Druck mit FreePDF ist ein weißes Blatt mit dem Schriftzug entstanden.
6) PDFTK öffnen und deinen Schritt 3 durchführen. Das Gute daran, ich kann unterschiedlich große Dokumente (A3, A4) verwenden. Es wird immer vollflächig von PDFTK "aufgebügelt".
7) Der schwierigste Schritt: Den Kollegen erklären, wie es funktioniert und dass sie die Batch ausführen müssen.
Vielen Dank für den Stupser in die richtige Richtung.
Hab im Moment keine Zeit es zu probieren, aber ich wuerde es in in Inkscape versuchen, sollte einfach sein, lg
Hallo, falls Statuten.pdf auch mit LO erzeugt wurde, solltest Du dort unter Format -> Seitenvorlage auf den Reiter Transparenz gehen und dort die Transparenz auf 100% setzen. Danach als PDF exportieren und dann über pdftk ein Wasserzeichen drunter packen. Das wasserzeichen sollte dann allerdings nicht als Outline-Text definiert werden sondern komplett grau, sonst sieht man es u.U. nicht so gut. Mache ich im Büro schon seit Jahren so.
Grüße Roland
Dank für den Artikel und für die guten Kommentare. Wieder was dazugelernt dank Euch.
Herzlichen Dank an alle Kommentatoren. Ich habe den Artikel mit den Lösungen von Roland und Cristal Pixel ergänzt.
Bei einer Kundin läuft das schon seit zehn Jahren. Imagemagick hinter einer Nautilus Action. Ein Einzeiler. Sie musste beliebige PDF wasserzeichnen und wollte eigens dafür AA anschaffen. Man bedenke nebst Kosten den Aufwand für Dutzende von Dokumenten pro Woche. zz.
Wie oben festgestellt kommt das Wasserzeichen - unerwartet - über das Originaldokument. Das WZ soll dann transparent und halbdurchsichtig sein.
Fertig.
NB: Das Konstrukt PDF lässt zu, das WZ wieder zu entfernen. Damals half PDFEdit, für geübte Postscript Freaks tuts auch ein Texteditor. Um das zu umgehen muss man letztlich PDF zu Bilddateien aufblasen und verwaschen (JPG Komprimierung). Drum bitte NIE eine gescannte Unterschrift an ein PDF pflastern.
Wenn es schnell gehen soll, nutze ich jpdf Tweak. (https://jpdftweak.sourceforge.net/) Damit hat man sehr viele Möglichkeiten. Beim Wasserzeichen kann ich den Text frei eingeben, die Transparenz einstellen und auf welchen Seiten es erscheinen soll. Hier ein Screenshot:https://myprivatecloud.dedyn.io/s/cmW2s6zcby5QKKL Danke für dieses schöne Stück freier Software.