Seitenzahl und Logo via JavaScript in PDF als Wasserzeichen hinzufügen?

senoyches

Lt. Junior Grade
Registriert
Dez. 2018
Beiträge
386
Hallo zusammen,

ich habe vor einige Wasserzeichen in vorhandene PDF Dokumente zu machen, da das
Neben Logo, Anschrift, Pfad, Dateiname, Datum und Seitenzahl, sowie © Zeichen je nach Dokument an mindestens 5 Stellen geschieht, wäre das jedes PDF Dokument öffnen und 5x das Passende Wasserzeichen einfügen, was doch etwas Zeit in Anspruch nimmt bei sagen wir mal 1000 oder mehr Dokumenten.

Daher kam ich schnell auf JavaScript, dieses bietet meine PDF XChange Editor Pro intern an.

Ich habe mir also schnell ein wenig Code zusammen gebastelt der auch für die einzelnen Bereiche gut funktioniert. Bei 2 Bereichen gibt es aber noch Probleme.

1. Die Seitenzahl, diese lautet immer Seite 0 oder 1 wie auch immer ich "this.pageNum" nachträglich maniupuliere
Javascript:
var Horiz = 21.6; //Seitlicher Abstand vom Blattrand
var Vert = 6; // von Blattrand (von unten/oben)
//var Seite = util.printf("%,301d", (this.pageNum+1));
//Seite = ("%,301d", Seite)
var Datum = util.printd("dd.mm.yyyy", new Date);
var Seite = this.pageNum + 1;
var Seiten = this.numPages;
var Fusszeilerechts = Datum + "\nSeite " + Seite + " von " + Seiten
this.addWatermarkFromText({
cText: Fusszeilerechts,
cFont: "Segoe-UI-Light",
nFontSize:8,
nHorizAlign:app.constants.align.right,
nVertAlign:app.constants.align.bottom,
nHorizValue: Horiz * 72 / 25.4, //Seitenabstand l/r
nVertAlign:app.constants.align.bottom,
nVertValue: Vert * 72 / 25.4, //Seitenabstand o/u
});

Allerdings erscheint nun überall das aktuelle Datum und unten Drunter steht dann z.B. Seite 1 von 16 aber auf jeder Seite, wünschenswert aber wäre natürlich auf jeder Seite die passende Seite auch mit Schleifen oder ähnlichem kam ich bisher nicht zum Erfolg. Es wirkt fast so, als ob der Code nur 1x global für das gesamte Dokument ausgeführt wird und nicht für jede Seite manuell überprüft wird. Hat einer noch eine Idee wo ich schauen könnte.

Das entsprechende Referenzhandbuch dazu hab ich mir schon angesehen: https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/js_api_reference.pdf allerdings konnte ich da nichts in der Richtung finden.

Bei Logos habe ich das Problem, das Augenscheinlich alles funktioniert jedenfalls gibt die interne JavaScript Console undefined zurück, nur das Logo erscheint nicht im Endeffekt arbeitet es ja sehr ähnlich, nur das einige Parameter getauscht werden müssen.

und der Befehl
this.addWatermarkFromText({...
entsprechend durch
this.addWatermarkFromFile({...

ersetzt werden muss, auch beim Pfad hab ich an vorangestellte /vor dem Laufwerksbuchstaben gedacht, aber auch das führte nicht zur Lösung.

Falls noch jemand Ideen hat würde ich mir freunden davon zu hören und bedanke mich im Voraus.

Mfg Senoyches
 
Die Adobe Referenz gilt erst einmal nur für Adobe Produkte.
Eventuell ist fromFile nicht implementiert ? (Sicherheitsgründe - nachladbare Inhalte ?) - lt. API Doku unterscheiden sich fromFile / fromText gerade bei der Ausführung wegen der Sicherheit ("Note: ....")

Eventuell ein Sandboxing / Rechteproblem - iirc kann das mittels Sysinternal Tools überprüft werden

Ist das Problem eher der Unterschied von einer "Batch-Bearbeitung" der Dokumente mit JavaScript (Nutzung von SDK/JS Schnittstellen) und wenn in die PDF Dokumente Javascript eingefügt wird und dann damit dynamisch das PDF verändert wird: PDF statt Flash

Die API-Doku beschreibt das Auslösen durch Batch/Console events - bei Batchverarbeitung gibt es dann wohl nur 1 Event pro Dokument - das Dokument wird nicht "Seitenweise" bearbeitet.
Das "addWatermark" müsste mehrmals Ausgeführt werden / die "Seitenweise Iteration" (da ja Fusszeile bei jeder Seite anders sein soll) ist irgendwie kaputt/nicht funktional.
 
Sorry für die späte Reaktion meinerseits.

zunächst einmal vielen Dank für die Antwort.

Die Adobe Referenz gilt erst einmal nur für Adobe Produkte.
Leider konnte ich explizit nichts finden, was genau alles geht, hier fehlte mir irgendwie die passende Dokumentation speziell zu unserem verwendeten Editor.
Eventuell ein Sandboxing / Rechteproblem - iirc kann das mittels Sysinternal Tools überprüft werden
und welches Tool benötige ich dort genau konnte jetzt bei iirc nix genaues finden, bin in dem Bereich kein Experte.

Das "addWatermark" müsste mehrmals Ausgeführt werden / die "Seitenweise Iteration" (da ja Fusszeile bei jeder Seite anders sein soll) ist irgendwie kaputt/nicht funktional.
Das ist in der Tat Schade, dann muss ich tatsächlich über das klassische Wasserzeichen arbeiten, das ich über klicken einfüge, denn dort geht es.

Hättest du denn alternative Lösungsansätze die mich ohne wahnsinnig viel Klickarbeit zum Ziel bringen könnten. Da dich zumindest ganz gut auszukennen scheinst. Ein kaufen einer Adobe Suite kommt allerdings nicht in Frage da man sich in meiner Firma nun mal intern auf dieses PDF Tool festgelegt hat.
 
Zurück
Oben