Seitennummerierung aktualisieren nach Einfügung einer Seite per Javascript

Die Möglichkeiten und Tücken von Formularen
Antworten
tobiasschaefer
Beiträge: 1
Registriert: 31.03.2011, 09:00

Seitennummerierung aktualisieren nach Einfügung einer Seite per Javascript

Beitrag von tobiasschaefer » 31.03.2011, 09:04

Hallo,

ich habe hier ein PDF-Formular bekommen mit 5 Seiten. Auf einer Seite (2) sind Positionen für ein abzugebenes Angebot enthalten. Reicht die Anzahl der Positionen nicht aus, kann der Benutzer mit einem Button, hier dem JavaScript-Code hinterlegt ist, zusätzliche Seiten mit weiteren Positionen hinzufügen. Soweit so gut. Das funktioniert alles. Was nicht funktioniert ist die automatische Aktualisierung der Seitennummerierung. Die Seitennummerierung erfolgt durch ein Textfeld, bei dem ein benutzerdefiniertes Berechnungsskript hinterlegt ist. Da das Berechnungsskript beim Hinzufügen der zusätzlichen Seite jedoch nicht angepasst wird, zeigt es die falsche Seitennummerierung an, nämlich die gleiche Seitenzahl wie bei der kopierten Quell-Seite.
Meine Frage ist:
Kann man per JavaScript beim Hinzufügen der zusätzlichen Seite das benutzerdefinierte Berechnungsskript eines Textfeldes anpassen?
Das benutzerdefinierte Berechnungsskript für die Seitennummerierung auf der Quell-Seite sieht wie folgt aus:

var theField = this.getField("ANGEBOT.SEITENZAHL1_NOX_");
theField.value = theField.page + 1;

Auf der hinzugefügte Ziel-Seite heißt das Feld jedoch anders ("P2.LEISTUNG.ANGEBOT.SEITENZAHL1_NOX_") daher müsste das benutzerdefinierte Berechnungsskript angepasst werden auf:

var theField = this.getField("P2.LEISTUNG.ANGEBOT.SEITENZAHL1_NOX _");
theField.value = theField.page + 1;

Das Skript, das das Hinzufügen der zusätzlichen Seite vornimmt, ist folgendes:
-------------------------------------------------------------------------
var spawnedTemplateExists = (this.getField("ANGEBOT.OPEN_NOX_")).value;
var prefix = "P";
var prePageBody = ".LEISTUNG.ANGEBOT.LEISTUNG.POS.BEZEICHNUNG_L_ .";
var loopPos = "";
var filledFlag = true;
var template_Leistung = this.getTemplate("LEISTUNG");
var pages = getLastPage();
var prePage = pages - 3;
var SUMBODY = "ANGEBOT.LEISTUNG.SUMME";
var USTBODY = "ANGEBOT.LEISTUNG.UST";
var AUFTRAGSSUMBODY = "ANGEBOT.LEISTUNG.AUFTRAGSSUMME";
var oldCalcIndex = (this.getField(SUMBODY)).calcOrderIndex;
var diff = 12;
var newCalcIndex = oldCalcIndex + diff;

if (spawnedTemplateExists && pages >= 2) {

for (var suffix = 0; suffix < 6; suffix++) {

try {
loopPos = prefix + prePage + prePageBody + suffix;
if ((this.getField(loopPos)).value == "") filledFlag = false;
} catch (e) {
//do nothing
}

}
}

if (!filledFlag && (app.alert("Warnung: Nicht alle Positionen des letzten Folgeblatts wurden ausgefüllt.\n\nVorgang trotzdem fortsetzen ?",1,2) == 4)) filledFlag = true;

if (template_Leistung && filledFlag) {
template_Leistung.spawn(pages-2, true, false);
(this.getField("ANGEBOT.OPEN_NOX_")).value = 1;
(this.getField(SUMBODY)).calcOrderIndex = newCalcIndex;
(this.getField(USTBODY)).calcOrderIndex = newCalcIndex+1;
(this.getField(AUFTRAGSSUMBODY)).calcOrderIndex = newCalcIndex+2;
calculateNow();
}
-------------------------------------------------------------------------

Es müsste also irgendwo in diesem Skript das benutzerdefinierte Berechnungsskript für die Seitennummerierung an die neue Bezeichnung des Seitenummerierungs-Feldes angepasst werden. Ist das möglich?
Da die ganzen Skripte in dem PDF nicht von mir stammen und ich auch nicht so tief in der "JavaScript in PDF"-Thematik drinstecke, weiß ich auch nicht, wofür manche der Befehle gedacht sind.

Viele Grüße

Tobias Schäfer

Antworten