Belegnummerierungsstempel mit JavaScript erstellen

Martob282

Mitglied
Hallo zusammen

Vorab: Ich kenne mich mit programmieren nicht sonderlich gut aus und bin neu in diesem Forum. Sollte ich die Frage am falschen Ort erstellt haben, bitte ich um Verschiebung an den richtigen Ort.

Zur Sache: Ich arbeite als Rechtsanwalt und bisher haben wir, wenn wir eine elektronische Eingaben gemacht haben, alle Beweisurkunden ausgedruckt und jeweils auf der ersten Seite mit einem physischen Stempel versehen, welcher die Belege für jede Eingabe fortlaufen von 1 aus nummeriert (Beleg 1, Beleg 2, Beleg 3 etc.). Anschliessend haben wir die durchnummerierte Belegsammlung als PDF eingescannt und elektronisch versendet.

Ich möchte nun das ganze aber effizienter gestalten und mit JavaScript einen dynamischen PDF-Stempel erstellen, welcher jedesmal wenn gestempelt wird, eine höheren Wert ausgibt (d.h. Beleg 1, Beleg 2, Beleg 3 etc.), so dass ich, wenn ich ein PDF habe, in welchem sämtliche Belege zusammengefasst sind, jeweils auf der ersten Seite eines jeden Belegs einen Stempel anbringen kann und diese dann entsprechend als Beleg 1, Beleg 2, Beleg 3 etc. gekennzeichnet sind. Im Idealfall würde der Stempel auch seine Nummerierung ändern, wenn die bereits gestempelten Belege in der Reihenfolge vertauscht würden. Der Stempel müsste also zählen können, wie viele Stempel auf den Seiten vor ihm liegen, sodass sich die Nummerierung automatisch ändert, wenn die Reihenfolge der Belege ändert.

Meine Frage ist nun, ist sowas überhaupt möglich und kann mir jemand hier allenfalls weiterhelfen?
Nach mehrstündiger Suche im Internet bin ich leider nicht fündig geworden und langsam am verzweifeln...
 
Grundsätzlich sollte das kein Problem darstellen, die Frage ist allerdings, wie genau der Ablauf ist/sein soll. Wenn Du von JavaScript schreibst (hat übrigens außer dem Namen nichts mit Java zu tun), kann das serverseitig gemeint sein, im Browser oder innerhalb einer PDF. Jedenfalls ließe sich da was bauen.
 
Wie kommt man denn, wenn jemand eine Frage zu JavaScript in einem Java-Forum postet, auf PHP?
LOL, wobei es ja gefühlt 3 Mrd. Möglichkeiten gibt. Neben praktisch allen Programmiersprachen, gibt es ja auch fertige Programme oder auch Utilities für die Befehlszeile usw. Das ist nicht m. E. auch nicht das Problem, vielmehr stellt sich mir die Frage, warum ausgerechnet nach JavaScript gefragt wurde und wie der Workflow aussehen soll. Evtl. läuft da auch irgendeine scriptfähige Software von Adobe. Man weiß es nicht 🙂
 
Hallo Zusammen
Besten Dank für eure überraschend schnellen Antworten. Wie gesagt meine Kenntnis in dem Bereich sind äusserst bescheiden. Meine Idee wäre, dass ich sämtliche PDF-Belege (z.B. eingescannter Arbeitsvertrag, Vollmacht, Kündigungsschreiben, Arbeitszeugnis etc.) in einem PDF zusammenfasse und danach mit dem Programm PDF-XChange Editor die Belegsammlung durchgehe und jeweils die erste Seite eines jeden Belegs stemple. Dabei sollte eine fortlaufende Nummerierung, beginnend bei 1, entstehen. Der Grund, weswegen ich spezifisch nach JavaScript gefragt habe, ist, dass sich beim PDF Programm XChange Editor mit JavaScript dynamische Stempel "programmieren" lassen.

Die Quelldokumente sind meist physische Belege, welche eingescannt wurden. Mit der zunehmenden Digitalisierung im Rechtswesen kann es aber vorkommen, dass auch künftig vermehrt beispielsweise elektronisch signierte PDF's gestempelt werden müssten.

Ich hoffe, es ist damit etwas verständlicher, was ich so umständlich zu beschreiben versuche! Sorry...
 
Meine Idee wäre, dass ich sämtliche PDF-Belege (z.B. eingescannter Arbeitsvertrag, Vollmacht, Kündigungsschreiben, Arbeitszeugnis etc.) in einem PDF zusammenfasse und danach mit dem Programm PDF-XChange Editor die Belegsammlung durchgehe und jeweils die erste Seite eines jeden Belegs stemple.
Keine gute Idee, in dem Fall müsste die Anwendung mühselig und fehleranfällig herausfinden, wo ein neuer Beleg beginnt. Gegenvorschlag: je Beleg ein Scan, den in ein Verzeichnis legen und das Programm stempelt die erste Seite einer jeden PDF-Datei im Verzeichnis.

Mit der zunehmenden Digitalisierung im Rechtswesen kann es aber vorkommen, dass auch künftig vermehrt beispielsweise elektronisch signierte PDF's gestempelt werden müssten.
Eine signierte PDF zu verändern dürfte nicht möglich sein. Hier könnte man sich überlegen, das PDF zu rendern, dieses zu stempeln und das Original ins PDF als Anhang einzubinden und ggf. selbst zu signieren (eine Art digitale, beglaubigte Kopie). Für einen echten Lösungsvorschlag müsste ich mich aber erst im Detail damit beschäftigen.
 
Wow, tausend Dank für deine wiederum äusserst prompte Rückmeldung.

Keine gute Idee, in dem Fall müsste die Anwendung mühselig und fehleranfällig herausfinden, wo ein neuer Beleg beginnt. Gegenvorschlag: je Beleg ein Scan, den in ein Verzeichnis legen und das Programm stempelt die erste Seite einer jeden PDF-Datei im Verzeichnis.
Leider müssen sämtliche Belege als ein PDF eingereicht werden. Der Stempel soll auch nicht automatisch angebracht werden. Vielmehr wähle ich den Standort bei jedem Stempelvorgang einzeln aus. Dies ist deshalb erforderlich, weil jeder Beleg verschieden ist und keine wichtigen Informationen mit dem Stempel abgedeckt werden dürfen. Der Vorgang muss also nicht vollständig automatisiert werden, vielmehr wähle ich den Standort manuell (wie bis anhin bei den physischen Beilagen) aus, an welchem der Stempel angebracht werden soll.

Eine signierte PDF zu verändern dürfte nicht möglich sein. Hier könnte man sich überlegen, das PDF zu rendern, dieses zu stempeln und das Original ins PDF als Anhang einzubinden und ggf. selbst zu signieren (eine Art digitale, beglaubigte Kopie). Für einen echten Lösungsvorschlag müsste ich mich aber erst im Detail damit beschäftigen.

Mir geht es nicht darum, das PDF inhaltlich zu verändern, sondern vielmehr wie bei einem physischen Beleg, einen Nummerierungsstempel "draufzuhauen". Viele PDF-Programme bieten dazu die Funktion "Anmerkungen". Damit kann man auf die PDF's draufschreiben ohne deren Inhalt zu verändern (analog wie beim Papierausdruck, welcher mit handschriftlichen Notizen versehen wird). Darin enthalten ist auch eine Stempelpalette, welche einen dynamische Stempel, basieren auf JavaScript zulässt.

Diese Möglichkeit würde ich gerne verwenden, um auf diese Art einen elektronischen Belegstempel zu erhalten, der in der Anwendung gleich funktioniert wie ein Papierstempel, d.h. jeweils Seite und Standort auswählen, auf welcher bzw. an welchem gestempelt werden soll und stempeln bzw. klicken. Das einzige was automatisch passieren soll, ist die Erhöhung der Nummer, welche gestempelt wird.

Im Internet finden sich zahlreiche Anleitungen (vgl. z.B. https://www.pdf-xchange.de/ekurseditor6/dynamische-stempel.php), wie man auf diese Art und Weise einen Datumsstempel erstellt. Den Quelltext für einen Nummerierungsstempel habe ich bis jetzt nirgends finden können, weswegen ich mich in meiner Unkenntnis an euch Spezialisten gewendet habe.

Könnt ihr mir da weiterhelfen?
 
Leider müssen sämtliche Belege als ein PDF eingereicht werden.
Das wäre nicht das Problem, da man die PDFs im Nachhinein zusammenführen kann, allerdings hat sich die Sache mit
Der Stempel soll auch nicht automatisch angebracht werden.
auch schon wieder erledigt 🙂

Mir geht es nicht darum, das PDF inhaltlich zu verändern, sondern vielmehr wie bei einem physischen Beleg, einen Nummerierungsstempel "draufzuhauen".
Wenn man Annotations an signierten PDFs anbringen kann, wie Du schreibst, ist das natürlich eine Lösung. Wie gesagt, das sind Details, die ich mir erst ansehen müsste, da ich auch in der Arbeit mit signierten PDFs nichts zu tun habe.

Den Quelltext für einen Nummerierungsstempel habe ich bis jetzt nirgends finden können
Wenn ich Dich richtig verstanden habe, soll in jeder PDF die Nummerierung von vorne beginnen. Du kannst mal folgendes probieren:
Javascript:
event.value = "" + (doc.getAnnots() != null ? doc.getAnnots().length+1 : 1)
 
Vielen Dank für deine Unterstützung.

Wenn man Annotations an signierten PDFs anbringen kann, wie Du schreibst, ist das natürlich eine Lösung. Wie gesagt, das sind Details, die ich mir erst ansehen müsste, da ich auch in der Arbeit mit signierten PDFs nichts zu tun habe.
Das funktioniert. Habe es mit anderen (nicht dynamischen) Stempel bereits versucht.

Wenn ich Dich richtig verstanden habe, soll in jeder PDF die Nummerierung von vorne beginnen.
Ja, das ist richtig.

Javascript:
event.value = "" + (doc.getAnnots() != null ? doc.getAnnots().length+1 : 1)
Der Code funktioniert leider nicht bzw. gibt kein Ergebnis im Textfeld aus. Muss ich noch zusätzlich etwas eingeben - wie bereits erwähnt: Ich bin eigentlich in einem anderen Fachgebiet zu Hause. 🙃

Eine kleine Ergänzung noch: Es wäre schön, wenn nicht einfach die Zahl ausgegeben würde, sondern mit "Beleg" und dann die Zahl, d.h. Beleg 1, Beleg 2 usw.
 
Das war auch nur mal ins Blaue hinein. Probier einfach mal
Javascript:
event.value = "Beleg";
Das sollte zumindest "Beleg" ausgeben.
 
OK, dann schau ich später mal, ob es noch andere Möglichkeiten gibt. Hintergrund ist: wir brauchen einen globalen Speicherplatz, um die Nummer zwischen dem Stempeln zwischenzuspeichern und hochzählen zu können.
 
Das verstehe ich leider nicht ganz. Wie meinst du das?
Ich zitiere:
https://acrobatusers.com/tutorials/print/dynamic_stamp_secrets/ hat gesagt.:
The forReal property is true when any stamp in the Stamp File is being placed on the document and false at all other times. This property narrows things down, but we need one more property to uniquely identify the situation when our particular stamp is being placed. The stampName property identifies the stamp in current use. Both of these properties must be used together to qualify stamp code that performs any kind of blocking operation, such as displaying a popup dialog.
 
Verstehe ich das richtig, dass das Problem darin besteht, dass der Zähler des Stempels auch mitzählt, wenn ein anderer Stempel zwischendurch verwendet wird?

Dies wäre nämlich nur halb so schlimm, da ich nicht vorhabe, auf den Belegen noch weitere Stempel anzubringen.
 
Verstehe ich das richtig, dass das Problem darin besteht, dass der Zähler des Stempels auch mitzählt, wenn ein anderer Stempel zwischendurch verwendet wird?
Soweit ich das sehe: immer, wenn die Formularfelder des PDFs neu berechnet werden. Das wäre z. B. auch der Fall, wenn das PDF ein Formular enthält und sich dort ein Wert z. B. per Benutzereingabe ändert.
 
Hallo,
Ich brauche auch so was in der Art.
Allerdings brauchen mehrere Mitarbeiter Zugriff auf die fortlaufende Nummer also wenn der eine Kollege gerade die Papiere digital stempelt, kann solange der andere Kollege weitere Papiere mit der fortlaufenden Nummer stempeln. Ohne dieselbe Nummer zu verwenden oder ständig nach der letzten Nummer fragt, um die fortlaufende Nummer einzutragen.
Die fortlaufenden Nummern sehen wie folgt aus 1; 2; 3; ... 25016; 25017; und so weiter..
Kann man dann auch selber variieren ab wann man mit der fortlaufenden Nummer anfängt? Daher man schon mit der Nummer fortgeschritten ist. Also ich müsste diesen Stempel so einstellen, dass es dann bei 24501 anfängt. Und ab einem neuen Geschäftsjahr soll es dann wieder bei 1 fortlaufend anfangen.

Vielen Dank vorab für eure Hilfe!!!

Viele Grüße
IceCuBe (-;
 
Im PDF selbst? Im Grundsatz bräuchtest Du

a) eine zentrale Instanz, die den Nummernkreis verwaltet, sowie
b) Zugriff auf diese Instanz aus dem PDF heraus.

DA würde mir z. B. ein einfacher HTTP-Request einfallen. Allerdings brauchst Du dafür lt.. https://community.adobe.com/t5/acro...-in-the-pdf/td-p/12096009?profile.language=de allerdings den Acrobat und nicht nur den Reader. Keine Ahnung.

Wenn das nicht im PDF selbst passieren muss, oder Du Massen an PDFs stempeln musst/willst, dann würde ich das über ein separates Tool machen.
 
Hallo,

Ja im PDF selbst.
Zugriff auf die PDF Datei über den Server kriege ich hin.
Also gibt es die Möglichkeit die Eingangspapiere (die demnächst als PDF reinkommen) mit der fortlaufenden Nummer stempeln zu können, ohne unnötig die Papiere zu drucken und dann zu stempeln und wieder scannen und als PDF abspeichern.....?
Ich will diesen Druck-Prozess nicht und alles digitalisieren.
Alles soll in der PDF-Datei abgestempelt werden mit Eingangsstempel, Datum, Adresse, Signatur und fortlaufende Nummer.....

Dankeeee!
 
Sorry, ich habe mich vielleicht etwas unglücklich ausgedrückt. Ich meinte nicht, dass Du auf die PDFs über einen Server Zugriff haben musst, sondern dass Du eine zentrale Instanz benötigst, die den Nummernkreis verwaltet. Das kann im Prinzip eine zentrale Datei sein, ein DB-Server, usw. wobei die Umgebung, in der der Spaß realisiert werden soll, diesbezüglich Einschränkungen vorgeben kann.

Und "im PDF selbst"... Dass der Stempel ins PDF soll: logisch. Worum es mir geht ist, wo und wie die Funktionalität zur Verfügung gestellt werden soll. S. dazu auch die Beiträge #2 bis #4 und #9.

Also gibt es die Möglichkeit die Eingangspapiere (die demnächst als PDF reinkommen) mit der fortlaufenden Nummer stempeln zu können, ohne unnötig die Papiere zu drucken und dann zu stempeln und wieder scannen und als PDF abspeichern.....?
Ja, natürlich. Das ist doch auch, was @Martob282 macht.
 
Hallo,

funktioniert das auch über ein anderes kostenfreies Programm als Acrobat Pro? Ich habe nur den Acrobat Reader.
Aber es soll am Ende trotzdem eine PDF-Datei mit einer fortlaufenden Nummer gestempelt werden.

VG
 
Das kommt auf die konkreten Anforderungen an. Was stellst Du Dir konkret vor? Wie soll das vom Workflow her ablaufen? Die Arbeitsweisen können ja sehr unterschiedlich sein.

Beispielsweise macht es doch einen Unterschied, ob ich alle drei Wochen mal ein PDF stempeln muss oder ich am Tag 10.000 PDFs bekomme. Die PDFs alle paar Wochen möchte ich ggf. noch am Bildschirm sehen, bevor ich sie stemple, bei 10.000 PDFs am Tag habe ich nicht die Zeit, mir diese vorher noch anzusehen. Und wenn ich sie am Bildschirm sehe: was muss ich sehen können? Reicht die erste Seite? Brauche ich unbedingt Zoom etc. Reicht ggf. sogar einfach nur der textuelle Inhalt?

Das sind alles Dinge, die bekannt sein müssen, dann kann man z. B. sagen, ob man hierfür ggf. mal schnell eine Lösung aus dem Handgelenk schütteln kann - oder, ob jemand eine Software kennt, die das bereits kann.

Ich stelle gerade fest, dass ich mich in diesem Thread ständig wiederhole (s. Kommentare #2 und #6): konkrete Anforderungen werden benötigt!
 
Es ist für den Wareneingang gedacht. Also jeden Tag kommen mindestens 10 Lkw's mit Papieren, die abgestempelt werden sollen.
Demnächst werden die Papiere als PDF in den Wareneingang verschickt. Um nicht unnötig zu drucken, will ich diese PDF Dateien digital mit einer fortlaufenden Nummer (Paginiernummer 0001-9876) abstempeln und digital ablegen. Im Wareneingang sind ca. 3 Mitarbeiter, die die Papiere annehmen. Also müssen alle 3 Mitarbeiter auf diese fortlaufende Nummer zugreifen können, ohne die Nummer jedes mal manuell eingeben zu müssen oder den Kollegen ständig zu fragen wer bei welcher Nummer zuletzt war....
Und natürlich will man sich vorher die PDF Datei angucken, ob die richtige verschickt wurde und dann erst 'abstempeln'.
Auf dem Dokument muss natürlich die Bestellnummer, Auftragsnummer, Lieferant, Materialbezeichnung, Menge, etc. ...

Mit Acrobat Reader habe ich es nicht hingebkommen.
Und Adobe Acrobat Pro wäre zu teuer. Vielleicht gibt es dafür auch eine andere Lösung.
 
Es gibt https://www.pdflabs.com/tools/pdftk-server/ Damit müsste man alles machen können, also Stempel, Metadaten einfügen und ändern, usw.
Damit lässt sich bestimmt eine Billiglösung basteln, welche alles kann was du willst. Ich denke für ein Unternehmen ist es am Ende besser eine professionelle Lösung einzusetzen, welche auf das Unternehmen abgestimmt ist, inkl. Support, Garantie und Versicherung. Was nützt eine billige Software, wenn am Ende die Arbeitszeit die Ersparnis auffrisst oder Fehler bei der Bastelei immense Kosten verursacht. Wenn das dann am Ende 500€ pro Jahr kostet - so what, fun costs
 
Hallo zusammen,
ich bin bei meiner Suche hier auf das Forum und dieses Thema gestoßen.
Ich versuche einen Stempel zu erstellen, der einfach fortlaufend nummeriert. Es geht darum auf einer PDF diverse Punkte mit nummern zu versehen, beginnend bei 1... usw.

Das Script von oben:

if (event.source.forReal) {
var d = event.source.source;
if(typeof(d.belegNr) == "undefined") {
d.belegNr = 0;
}

d.belegNr++;
event.value = "Beleg " + d.belegNr;
}

Habe ich schon soweit abgeänderbekommen, dass mir einfach nur eine Zahl ausgegeben wird und mit jedem Stempeln die Zahl um 1 erhöht wird.
Kann ich das Script jetzt noch so abändern, dass wenn ich ein Dokument mit bspw. 10 Seiten habe, ich auf jeder Seite mit der Nummer 1 anfangen kann zu stempeln? Also das ich auf jeder Seite bspw. die Punkte von 1 bis 10 nummerieren könnte?
Ich hoffe ich hab mich einigermaßen verständlich ausgedrück.
Vielen Dank!
 
oder was mir gerade einfällt und evtl. auch möglich wäre, jedes mal wenn ich den Stempel starte, eine Abfrage mit welcher Nummer ich beginnen möchte, dann wären spätere Änderungen evtl. auch einfacher Umzusetzten.
Vielleicht hat ja jemand von euch eine idee die ich auch als laie umgesetzt bekomme, vielen Dank euch.
 

Zurück
Oben