[GastForen Programme Web/Internet PDF Grundlagen / Web / eForms PDF-Ebene einblenden/ausblenden per Script

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Web/Internet - Webdesign, eForms
Themen
Beiträge
Moderatoren
Letzter Beitrag

PDF-Ebene einblenden/ausblenden per Script

Hallenstein
Beiträge gesamt: 142

21. Jun 2012, 10:17
Beitrag # 1 von 5
Bewertung:
(10238 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Zusammen,

ich habe folgende Idee/Anforderung und so richtig klappt es noch nicht: ich möchte eine Ebene einblenden, wenn ein Textfeld mit Inhalt gefüllt wird. Wird der Textfeldinhalt wieder gelöscht, soll die Ebene wieder ausgeblendet werden. Das Script liegt auf dem Textfeld als Aktion und wird ausgeführt bei "Feld deaktivieren".

Teilweise klappt das auch. Anfangszustand ist ein leeres Textfeld. Klicke ich das TF an und schreibe etwas rein, wird die Ebene eingeblendet -> so soll es sein.
Schreibe ich aber nichts rein und deaktiviere das TF, wird die Ebene trotzdem eingeblendet.

Kann einer helfen?

Hier der Quellcode:

Code
//zunächst das tf in eine variable aufnehmen 
var feld = this.getField("testfeld").value
//alle ebenen als array, 3 ist die für mich interessante ebene
var aOCGs = this.getOCGs();

if (feld.value != ""){
aOCGs[3].state = true;
} else {
aOCGs[3].state = false;
}


Würde mich freuen, wenn einer eine Idee hat.

Viele Grüße,
Hallenstein.
X

PDF-Ebene einblenden/ausblenden per Script

Hallenstein
Beiträge gesamt: 142

21. Jun 2012, 11:16
Beitrag # 2 von 5
Beitrag ID: #496807
Bewertung:
(10213 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lösung gefunden!

Problem ist, dass die kein Inhalt trotzdem irgendwie mehr ist als "". Warum auch immer, ist eben Acrobat.

Deswegen ein kleiner Trick:

Code
//das feld 
var field = this.getField("testfeld").value
var aOCGs = this.getOCGs();

//hier wird die länge des strings bestimmt
var field_el = field.length;

if (field_el > 0){
aOCGs[1].state = true;
} else {
aOCGs[1].state = false;
}




Wenn jemand eine kürze, bessere Variante kennt, bitte posten.

Erstmal funktioniert es.


Schöne Grüße,
Hallenstein.


als Antwort auf: [#496799]

PDF-Ebene einblenden/ausblenden per Script

Max Wyss
Beiträge gesamt: 532

23. Jun 2012, 23:34
Beitrag # 3 von 5
Beitrag ID: #496949
Bewertung:
(10151 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Etwas weniger code: auf die Variablendefinitionen field und field_el verzichten. Anstelle dessen die Zeile

if (field_el…

ändern in

if (this.getField("testfield").valueAsString.length > 0) {

das OCG-Array kann auch direkt angesprochen werden:

this.getOCGs()[1].state = true // or false

HTH

Max Wyss.


als Antwort auf: [#496807]

PDF-Ebene einblenden/ausblenden per Script

Hallenstein
Beiträge gesamt: 142

24. Jun 2012, 06:43
Beitrag # 4 von 5
Beitrag ID: #496952
Bewertung:
(10122 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

danke für den Tipp, werde ich umsetzen.

Was ich mich in dem Zusammenhang schon länger frage: wie bekomme ich eigentlich den OCG (also die Nummer) einer Ebene heraus? Kann ich den irgendwo ablesen?

Ich mach es bisher immer per Try&Error, dass ich über eine Schaltfläche einfach nacheinander alle Ebenen ausblende, aber irgendwie ist das auch nervig.

Oder kann man Ebenen auch per Ebenennamen ansprechen?


Fragende Grüße,
Hallenstein.


als Antwort auf: [#496949]

PDF-Ebene einblenden/ausblenden per Script

Max Wyss
Beiträge gesamt: 532

24. Jun 2012, 10:22
Beitrag # 5 von 5
Beitrag ID: #496960
Bewertung:
(10102 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das OCG Object hat die name property. Das heisst, es ist möglich, den Namen der OCG auszulesen. Das Code-Beispiel in der Acrobat JavaScript-Dokumentation (Bestandteil des Acrobat SDKs, herunterladbar von der Adobe Website) zeigt es gut auf.

Es gibt allerdings keinen direkten Zugriff auf eine OCG (eine getOCG() Methode ist eben nicht implementiert).

Eine gewisse Vereinfachung ist möglich, wenn sicher gestellt ist, dass das Dokument immer in Acrobat 8 oder neuer benutzt wird, und die OCG-Namen eindeutig und einmalig sind. In diesem Fall kann die indexOf() Methode des Array-Objects genutzt werden:

var myIndex = this.getOCGs().indexOf("myGroup") ;

HTH

Max Wyss.


als Antwort auf: [#496952]
X