• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Dynamisches Datum in PDF Dateien

DerOtto

New member
Hallo,
um beim Ausdruck von PDF-Dateien am unteren Rand
"Dokument gültig bis [Druckdatum + 3 Tage]"
einzufügen verwende ich im Moment folgendes Script unter "Document Will Print" Action

HTML:
var inch = 72;
for (var p = 0; p < this.numPages; p++) {
var aRect = this.getPageBox( {nPage: p} );
aRect[1] = .5*inch;
aRect[3] = aRect[1] - 24; // and 24 points high

var f = this.addField("PrintField", "text", p, aRect )
f.delay = true;
f.textSize = 10;
f.textFont = font.Cour;
f.textColor = color.black;
f.alignment = "center";
f.readonly = true;
f.display = display.noView;
f.delay = false;
}

var d = new Date();
d.setDate(d.getDate()+3);
this.getField("PrintField").value = "Dokument gültig bis " + util.printd("dd.mmm.yyyy", d);

Das funktioniert soweit auch, nur fragt es nach jedem Druck nach, ob es gespeichert werden soll.
An den PDFs sollen keine Änderungen vorgenommen werden, außer die, die vom Script beim Ausdrucken generiert werden.
Bestätige ich diese Speicherung wächst die PDF jedesmal ein wenig an, da anscheinend jedesmal ein neues Feld über das alte gelegt wird.

Nun zu meinen Fragen:
Läßt es sich so einstellen, daß das bestehende Feld nur mit aktualisierten Daten befüllt wird, anstatt ein neues Feld darüber zu legen?
Läßt sich die Speicherabfrage verhindern?

Ich habe von JavaScript KEINEN PLAN!
Das obige Skript ist aus verschiedenen Quellen "zusammengeklaut".
Bitte so antworten, daß es auch eure Oma verstehen würde... ;)

Danke schonmal,
Der Otto
 
Zuletzt bearbeitet von einem Moderator:
Bitte so antworten, daß es auch eure Oma verstehen würde... ;)

Deine Oma muss es echt draufhaben!!!
value stezen...aha welchen Wert? Was tut der dann?
if (!f)...was tut das? wohin?
sollen die ... auch mit rein?

Kommt schon, ihr seid doch auch nicht mit Java als Muttersprache aufgewachsen...
Da ich "nur" dieses Script brauche hatte ich jetzt auch nicht vor JavaScript zu lernen.
Also bittte so, daß ich nachvollziehen kann welcher Code wohin muß und am besten auch noch ein bisserl Info, was der Code tut. Laßt mich nicht dumm sterben... ;)
Danke und schönes Wochenende,
Der Otto
 
Den Code, mit dem man das Feld erzeugt und platziert, hast du doch schon oben gezeigt.

Das "value setzen" ist in deinem Code einfach die letzte Zeile...

PS: hat dein Dokument nur eine Seite?
 
Hallo kkapsner,
Die Dokumente haben unterschiedlich viele Seiten, von einer bis 20 und mehr. Auf jeder Seite sollte das Gültigkeitsdatum stehen (tut es soweit auch)
Wie gesagt, das Skript ist "zusammengebastelt" ich habe nicht mehr als eine ungefähre Vorstellung davon was welcher Teil tut. Deshalb fände ich es auch echt super, wenn ich zu Codefragmenten ein wenig Beschreibung bekäme, damit ich
A) ein bisserl was lerne
B) weiß wo ich was wie einfügen/ersetzen muß
um das Ziel zu erreichen.
Danke schonmal,
Der Otto
 
Auf jeder Seite sollte das Gültigkeitsdatum stehen (tut es soweit auch)
Das ist's ja gut - du erzeugt da nämlich auf jeder Seite ein Feld, aber immer mit der selben ID/Namen. Im DOM würde das zu Problemen führen, aber in PDF anscheinend nicht...

was welcher Teil tut.
Also der Teil mit der for-Schleife erzeugt die Element und die letzten drei Zeilen setzen den Wert. Wenn du also den ersten Teil in das if von tsseh setzt, und die letzten drei Zeilen danach platzierst, sollte es passen.
 
SO, mein "neues Skript" sieht jetzt so aus:
Code:
var f=this.getField("PrintField");
if (!f)
{
var inch = 72;
for (var p = 0; p < this.numPages; p++) {
var aRect = this.getPageBox( {nPage: p} );
aRect[1] = .5*inch;
aRect[3] = aRect[1] - 24; // and 24 points high

var f = this.addField("PrintField", "text", p, aRect )
f.delay = true;
f.textSize = 10;
f.textFont = font.Cour;
f.textColor = color.black;
f.alignment = "center";
f.readonly = true;
f.display = display.noView;
f.delay = false;
}
}
var d = new Date();
d.setDate(d.getDate()+3);
this.getField("PrintField").value = "Dokument gültig bis " + util.printd("dd.mmm.yyyy", d);

Er funktioniert genauso gut/schlecht wie der erste, die Speicherabfrage kommt immer noch nach jedem Druck des Dokuments...sind die zwei }} da überhaupt richtig???
Danke für jeden weiteren Hinweis.
Otto
 
Er funktioniert genauso gut/schlecht wie der erste, die Speicherabfrage kommt immer noch nach jedem Druck des Dokuments.
die speicherabfrage wirst du vermutlich nicht wegbekommen, du änderst ja das pdf, es dürfte aber nicht mehr anwachsen.
wenn es da nicht eine speziallösung für pdf gibt, wirst du mit dem speichern leben müssen.
 
Mir wurde "empfohlen" es mit this.dirty=false zu versuchen, aber jedesmal wenn ich das irgendwo und irgendwie eingebaut hatte war das Datum auf dem Ausdruck weg...
und das mit den 2 } stimmt so?
Danke
DerOtto
 
Zurück
Oben