Seite 1 von 1

Dynamische, mehrseitige PDF | Ausblenden von Content auf Master- und / oder Folgeseiten

Verfasst: 15.08.2013, 14:34
von micha2409
Hallo zusammen,

nachdem ich lange Zeit mit meinem Angebots- und Rechnungsformular hantiert habe - und sehr zufrieden war, muss(te) ich nun einige Änderungen - an den Firmendaten und den Funktionen - vornehmen.

Vieles konnte ich mir mit den spärlichen JavaScript-Kenntnissen und einigen Tuts sowie Forenbeiträgen selbst zusammenreimen und umsetzen. Siehe Datei im Anhang...

Allerdings gibt es ein, zwei Baustellen, bei denen ich absolut nicht weiter komme und ich gerne eure Hilfe in Anspruch nehmen würde. :D

Es geht um die Optionsfelder "Screen" bzw. "Print".
1.) sollen diese - sobald die PDF mehrseitig wird - nur auf der ersten Seite zu sehen sein aber auf ALLEN Seiten die Funktion ausführen.
2.) sollen - wenn man die Option "Print" wählt - diverse Elemente "verschwinden" und auch nicht gedruckt werden. Bei etlichen Elementen habe ich das schon hinbekommen. Allerdings die Elemente "Hintergrundbild" (Bild), "Adresse" (Text) und "Footer" (Teilformular) sind weiterhin zu sehen. Bitte jetzt nicht denken: "Klar sieht man die noch, weil sie im Code ja auskommentiert sind". Ich habe natürlich alles mir mögliche mit dem Code angestellt, um den gewünschten Effekt zu erhalten. Da nichts davon ansatzweise funktionierte, habe ich ihn nun "sauber" auskommentiert. ;)

Bin für jeden konstruktiven Hinweis und /oder Code-Snippet dankbar! :cool:

Und hier noch die Codestelle in der PDF, um die es geht:
In der Hierarchie auf "Masterseite" klicken. Im Scripteditor unter "Ereignisse mit Skripten" von der ersten bis zur letzten Zeile...

1.000 Dank schon mal!
Micha


PDF wurde erstellt mit: LiveCycle Designer ES2 v9.0.0

Dynamische, mehrseitige PDF | Ausblenden von Content auf Master- und / oder Folgeseiten

Verfasst: 15.08.2013, 18:25
von Merklin
Hallo Micha,

ich weiß nicht ob ich dich richtig verstehe.

Also, wenn du  Print & Screen, nur einmal haben willst, solltest du diese Felder, nicht auf die Masterseite legen, sondern in die Designer Ansicht.

Dadurch erledigt sich auch deine zweite Frage. Jetzt hast du einen ordentlichen Pfad zu deinen Feldern, Bildern usw. und kannst sie auch so aus- & ein blenden, wie du es vor hast.

Auf die Masterseite zu zugreifen, ist nicht ganz ohne.

VG Merklin

Dynamische, mehrseitige PDF | Ausblenden von Content auf Master- und / oder Folgeseiten

Verfasst: 15.08.2013, 23:20
von micha2409
Hallo Merklin,

vielen Dank für die rasche Antwort. Allerdings bringt sie mich nicht wirklich weiter oder ich habe dich noch nicht ganz verstanden...

Also die Optionsfelder für "Screen" und "Print" werden schon - wie gewünscht - nur auf der ersten Seite angezeigt.
Wurde durch diesen Code realisiert:

Code: Alles auswählen

if (xfa.layout.page(this) != '1') {
   var page1 = xfa.resolveNode("#pageSet.Seite1");
   page1.Header.presence = "invisible";
   page1.ScreenPrintOptions.presence = "invisible";
}
Allerdings sollen die if-Abfragen die hinter den Optionsfeldern hinterlegt sind eben nicht nur auf der 1. Seite greifen, sondern auch auf allen folgenden. Beispielsweise das Hintergrundbild auf ALLEN Seiten ausblenden. Dass es auf der 1. Seite funktioniert, hatte ich zwischenzeitlich schon hinbekommen aber eben nicht auf den folgenden, FALLS es ein mehrseitiges PDF wird. (Den Code dazu habe ich in das angefügte PDF wieder eingefügt)

Wie du sagst, ist es wohl "komplizierter" aus dem Inhaltsbereich auf die Masterseite zuzugreifen. Habe es eben, wie von dir vorgeschlagen, mal ausprobiert... und kam damit nicht wirklich zurecht. :?
Aus diesem Grund habe ich die Optionsfelder "Screen" und "Print" gleich auf der Masterseite platziert und mit oben genanntem Code auf den Folgeseiten ausgeblendet. Ich dachte, so wäre es einfacher, die Sichtbarkeit von Elementen auf der Masterseite und den "Inhaltsseiten" zu manipulieren?!?

Letzten Endes geht es darum, eine "dynamische Variable" einzubauen, die eben nicht auf xxx.yyy.Seite1.zzz... zugreift, sondern auf alle erzeugten / vorhandenen Seiten. So in etwa: xxx.yyy.Seite??.zzz wobei ?? für die dyn. Variable / Wildcard steht. Wenn ich wüsste, WIE der LCD "nummeriert"... Also zählt er die Seiten durch, addiert bei jeder neuen 1 und ist das Hintergrundbild auf jeder der Folgeseiten dann immer noch über den Namen "Hintergrundbild" ansprechbar? Wenn das klar wäre, könnte ich mir vorstellen eine if-Abfrage bzw. eine for-Schleife zu basteln, die einfach das Element "Hintergrundbild" auf allen n Seiten "invisible" macht.

Vielleicht könntet ihr doch noch mal in die PDF schauen?!
Habe eine Kleinigkeit erweitert und eine weitere 'Idee' eingefügt... Ich habe dieses doofe Gefühl, wenn man sich ganz nah dran glaubt aber einfach der 'Schlüssel' fehlt... :(
Sollte ich mit meinem Gedankenansatz tatsächlich komplett falsch liegen, bitte keine Scheu mit Kritik! Aus der lernt man ja auch! Aber eine kleine Erläuterung wäre dann - für den AHA-Effekt - superlieb! :D

Vielen Dank noch mal an Merklin und vorab schon mal an alle, die mir bei meinem Problemchen helfen!


PS:
Mein neues Motto: Ich bräuchte Hilfe, keinen Code! ;)

Dynamische, mehrseitige PDF | Ausblenden von Content auf Master- und / oder Folgeseiten

Verfasst: 15.08.2013, 23:37
von micha2409
PPS:

Soeben kam mir noch eine Idee in eine andere Richtung, die evtl. auch funktionieren "könnte".
Gibt es eine Möglichkeit, einfach alle Elemente / Objekte mit einem bestimmten Namen - zB. "Hintergrundbild" - auf ALLEN Seiten auszublenden??
Das gleiche würde dann auch mit dem "Footer" passieren...

Nur so ein "Gedanken-Schwubbler"! ;-)

Dynamische, mehrseitige PDF | Ausblenden von Content auf Master- und / oder Folgeseiten

Verfasst: 18.08.2013, 10:40
von micha2409
Hmmm, hat denn wirklich niemand eine Idee / irgendeinen Ansatz, wie das Problem zu lösen sein könnte??

@Merklin: Nochmals Danke für deinen Beitrag, aber ich steige immer noch nicht ganz durch... Soeben nochmals probiert aber durch das "Verschieben" der Optionsfelder "Screen" und "Print" auf die 'Designansicht' wird es - gefühlt - wesentlich komplizierter, die Elemente "Hintergrundbild" und "Footer" auf den Folgeseiten zu steuern. :? Vielleicht stelle ich mich auch einfach zu doof an!?

Schöööönen Sonntag alle zusammen! :cool:

Dynamische, mehrseitige PDF | Ausblenden von Content auf Master- und / oder Folgeseiten

Verfasst: 18.08.2013, 17:34
von Merklin
Hallo Micha,

hast du die Felder die du ausblenden willst auf GLOBAL gesetzt?

VG Merklin

Dynamische, mehrseitige PDF | Ausblenden von Content auf Master- und / oder Folgeseiten

Verfasst: 18.08.2013, 18:00
von micha2409
Hallo Merklin,

die Optionsfelder haben den "Bindungswert": "Globale Daten verwenden", wie in der angefügten PDF zu sehen. Für das auszublendende Element "Hintergrundbild" (Bild) kann man keine "Bindung" - also auch kein "global" angeben und der "Footer" (Teilformular) bietet zwar die Möglichkeit eine "Bindung" anzugeben, aber "global" eben auch nicht... :?

Es geht wirklich nur noch um diese beiden Elemente... Alle anderen (egal wo platzierten) lassen sich entw. per Maulklick auf "Print" oder programmatisch auf allen Folgeseiten ausblenden...
Evtl. hilft ein Blick in die PDF die Nebel zu lichten? :)

Danke mal wieder! :D

Dynamische, mehrseitige PDF | Ausblenden von Content auf Master- und / oder Folgeseiten

Verfasst: 18.08.2013, 22:11
von Merklin
Hallo Micha,

ich glaube du musst alle Seiten einzeln abfragen, um die Felder auszublenden.

Hier mal ein Beispiel. Ich glaube es war von armine.

VG Merklin

Dynamische, mehrseitige PDF | Ausblenden von Content auf Master- und / oder Folgeseiten

Verfasst: 19.08.2013, 12:17
von nele_sonntag
  1. Habe jetzt keine Zeit, mir alles durchzulesen, aber die beiden Elemente einfach auf "visible on screen" zu stellen, ist keine Option?
  2. Betreffende Objekte vom Druck ausschließen:

    Code: Alles auswählen

    Objekt.relevant = "-print"; 
  3. "Gibt es eine Möglichkeit, einfach alle Elemente / Objekte mit einem bestimmten Namen - zB. "Hintergrundbild" - auf ALLEN Seiten auszublenden??
    Das gleiche würde dann auch mit dem "Footer" passieren..."

    Auch das gibt es, entweder lässt du eine Schleife über alle Objekt laufen, die mit einem bestimmten Präfix beginnen (das kannst du mit "substring" extrahieren) oder du kannst diesen Objekten im initialize eine "id" mitgeben, die du in der Schleife abfragst und sagst, dass diese ausgeblendet werden sollen.

    LG Mandy

Dynamische, mehrseitige PDF | Ausblenden von Content auf Master- und / oder Folgeseiten

Verfasst: 21.08.2013, 09:36
von micha2409
1.000 Dank an euch beide!!! :D

In dem Formular von Merklin habe ich endlich die gesuchte Stelle gefunden, die ich für mein Script benötigte:

Code: Alles auswählen

for (var i = 0; i < xfa.host.numPages; i++)
{
		var oFields = xfa.resolveNode("Formular1.#pageSet.Seite1[" + i + "]");
		oFields.OBJEKT.presence = "hidden";
	}
Und mit dem Hinweis von Mandy

Code: Alles auswählen

Objekt.relevant = "-print";
konnte ich mein Formular noch ein wenig "verfeinern"!

Apropos verfeinern: Durch die gegebenen Hinweise und dem Herumexperimentieren damit kamen mir noch 2, 3 nette Features in den Sinn, die auch damit auch gleich umsetzen konnte.

EINFACH GENIAL! :cool:
DANKE nochmals!

Micha

PS @MOD: Problem gelöst. Kann geschlossen werden! :)