Seite 1 von 1

Ausgeblendete Inhalte auf Masterseite werden wieder sichtbar

Verfasst: 22.07.2017, 13:45
von Jenses82
Hallo zusammen,

ich habe eine Briefvorlage im pdf-Format erstellt.
Diese beinhaltet 2 Masterseiten.
Auf der ersten Masterseite befindet sich der Briefkopf sowie die Fußzeile, ab der zweiten Briefseite soll nur noch der Briefkopf angedruckt werden. Das habe ich alles vom Prinzip her hinbekommen.

Nun habe ich ein Steuerungsmenü eingebaut, über welches verschiedene Dinge ein- und ausgeblendet werden können. Nun treten folgende Problemchen auf.

a) Ich kann den Kopf- und Fussbereich zwar ausblenden, sobald ich allerdings den Strichcode oder die Unterschriftsgrafik einblende oder der Brief aufgrund der Textmenge eine weitere Seite erhält, erscheinen die ausgeblendeten Elemente wieder.
b) Das Einblenden der Unterschriftsgrafik funktioniert nur dann, wenn dies zu Beginn des Dokuments getan wird und dann der Brieftext eingegeben wird. Spätenstens wenn sich die Unterschrift auf Seite 2 befindet, funktioniert das Script nicht mehr. Es funktioniert aber auch dann nicht mehr, wenn der Brieftext gelöscht wird und sich die Unterschrift wieder auf Seite 1 befindet.

Bin ratlos ... Hat jemanden Lösungen (mit Beispielen) für meine Probleme?

Ausgeblendete Inhalte auf Masterseite werden wieder sichtbar

Verfasst: 23.07.2017, 11:45
von Jenses82
Hallo zusammen,

ich bin nun einen Schritt weiter und habe zumindest Punkt a) "hemdsärmlig" behoben, indem ich im ready:layout-Event folgenden Code eingebaut habe.

Code: Alles auswählen

Briefvorlage::ready:layout - (JavaScript, client)
if (Briefvorlage.V1.rechtesTeilformular.StatischerAbschnitt.Steuerung.Head.rawValue == 1)
{ 
xfa.resolveNode("#pageSet[0].V1.Brief_LOGO").presence="visible";
xfa.resolveNode("#pageSet[0].V1.Brief_FUSS").presence="visible";

    for (var i = 0; i < xfa.host.numPages; i++)
         {
             var oFields = xfa.resolveNode("Briefvorlage.#pageSet.Seite2[" + i + "]");
             oFields.Brief_LOGO.presence = "visible";
    }

} else { 
xfa.resolveNode("#pageSet[0].V1.Brief_LOGO").presence="invisible";
xfa.resolveNode("#pageSet[0].V1.Brief_FUSS").presence="invisible";

    for (var i = 0; i < xfa.host.numPages; i++)
         {
             var oFields = xfa.resolveNode("Briefvorlage.#pageSet.Seite2[" + i + "]");
             oFields.Brief_LOGO.presence = "invisible";
    }
}
Die Sache mit der Unterschriftsgrafik ist für mich weiterhin ein Rätsel.

Re: Ausgeblendete Inhalte auf Masterseite werden wieder sichtbar

Verfasst: 05.04.2018, 12:37
von nele_sonntag
Hallo jensen82,

wenn du den Debugger aktivierst, bekommst du die Fehlermeldung, dass:

Code: Alles auswählen

TypeError: oFields is null
19:XFA:Briefvorlage[0]:V1[0]:rechtesTeilformular[0]:StatischerAbschnitt[0]:Steuerung[0]:Head[0]:change
Hier liegt also ein Scriptfehler vor.

Ich würde aber empfehlen, nur mit einer Masterseite zu arbeiten. Das die Fußzeile ab Seite 2 nicht eingeblendet wird, würde ich im Objekt Fußzeile auf der Masterseite 1 im calculate überprüfen und es automatisch ausblenden, wenn die Seitenanzahl größer 1 ist.

Ansonsten hast du die Möglichkeit in den Objekten selbst zu scripten, bspw. in der Subform "Brief_Logo" im calculate Event:

Code: Alles auswählen

(Briefvorlage.V1.rechtesTeilformular.StatischerAbschnitt.Steuerung.Head.rawValue == "1") ? this.presence = "visible" : this.presence = "hidden";
Dann funktionieren alle Objekte mE nach tadellos.

LG Mandy