bei der Releaseversion (8.0.0 Build 370) von InDesign CS6 stolpere ich gerade über Effekte, die mit mit dem gleichen ExtendScript-Code unter CS4, CS5, CS5.5 und dem letzten deutschen Prerelease von CS6 (Build 344) so nicht auftreten.
Variablen, die auf z.B. einen Rahmen zeigen, verlieren nach einer Schleife (Seiten einfügen, Musterseiten zuweisen, Rahmen von der Musterseite lösen und verketten) ihren Wert, ein resolve() auf die Variable bringt CS6 zum Absturz, gleiches auch beim Aufklappen des Objekts im Daten-Browser.
Auf ein kleines Beispiel konnte ich es bislang noch nicht herunterbrechen, das Verhalten ist allerdings beliebig reproduzierbar: CS6 370 mag es nicht, alle Versionen davor bis CS4 verhalten sich wie erwartet.
Hier erstmal nur als "Merker" in der Hoffnung, dass sich dieses Problem doch noch löst oder zumindest betätigt.
Viele Grüße, Jo
CS6: diffuse Probleme mit Scripting und dem Release
Mittlerweile habe ich einen Hinweis gefunden, der in Richtung der Ursache zeigen könnte:
liefert mir noch einen gültigen Rahmen. Danach kommt dieser Rahmen als nächster in die Kette. Soweit alles gut.
Dann wird's problematisch: Eine neue Seite einfügen und dieser Seite einen Master zuweisen. Hier klappt es nur, wenn es der "richtige" Master ist. Dann bleibt Variable und Objekt gültig, ID usw. ist korrekt. Wenn ich einen anderen Master erwische, killt mir das nachträglich den Rahmen in nextFrame!?
Wenn ich auf die Vererbung von der Musterseite pfeife und den Rahmen mit
ablöse, klappt's, das war aber nicht Ziel der Übung :(
Zum nachstellen deutlich vereinfacht (es geht auch mit nur einem Master daneben):
Es braucht dazu noch ein Dokument wie folgt: 1. Eine Musterseiten mit einer Seite und darauf ein Textrahmen.
2. Eine Seite im Dokument mit der Musterseite als Master und darauf den Textrahmen der Musterseite mit Strg + Shift + Klick gelöst.
Erwünschtes Ergebnis ist: Vier Seiten jeweils mit Textrahmen und diese sind verkettet (und erben optimalerweise auch noch vom Master, aber das ist Bonus).
Viele Grüße, Jo
CS6: diffuse Probleme mit Scripting und dem Release
Hallo, Jo! So ganz verstehe ich noch nicht, was Du beabsichtigst.
Gehe ich recht in der Annahme, dass Du:
1. Seiten hinzufügen möchtest (Dein Beispiel mit der for-Schleife, die das 3x macht) 2. Den Mustertextrahmen auf den hinzugefügten Seiten lösen willst 3. Die abgelösten Textrahmen miteinander verknüpfen möchtest, wobei der Textrahmen auf der letzten Seite des ursprünglichen Dokuments mitverknüpft werden soll?
Deinen hier geposteten Code habe ich auch in InDesign CS4 nicht zum Laufen gebracht. Da liegt das Problem dann nicht (nur) an InDesign CS6, denke ich mal.
Für den Fall, dass ich mit meinen Annahmen richtig liege, funktioniert folgendes Snippet (getestet in InDesign CS4 mit einem neuen einseitigen Dokument, desssen einzige Musterseite einen Mustertextrahmen enthält):
***** Mit herzlichem Gruß, Uwe Laubender
CS6: diffuse Probleme mit Scripting und dem Release
Ich gehe noch davon aus, dass der Textrahmen auf der ersten Seite bereits gelöst ist, bei deinem Ansatz sollte er das noch nicht sein ("Musterseitenobjekt wurde bereits übergangen...").
Allerdings habe ich das gerade mit CS4 (6.0.6) hier nochmal extra durchlaufen lassen und es tut
Da würde mich der Fehler interessieren...
Auch dein Script geht mit der CS6 in die Knie, sobald ich den Master neu zuweise (1. Zeile in der 1. for-Schleife):
CS4 macht mit, CS6 nicht.
Mein Problem liegt an dem Masterwechsel, den ich dann doch ab und zu wirklich brauche, das hier ist nur ein absolutes Minimalbeispiel.
Vielen Dank soweit und viele Grüße, Jo
CS6: diffuse Probleme mit Scripting und dem Release
Dass sich bei den Mastertextrahmen in InDesign CS6 etwas gewaltig geändert hat, weiss ich. Testen konnte ich das bislang noch nicht.
Schau' Dir mal die Dokumentation des CS6-DOMs bei Jongware an. Vielleicht findest Du dort, was Du suchst.
Die Eigenschaft "MasterTextFrame" gibt es jedenfalls nicht mehr in CS6. Stattdessen gibt's "createPrimaryTextFrame". Wie das zu handhaben ist, dürfte sich doch herausfinden lassen. (Habe leider heute keine Zeit mehr dafür.) ***** Mit herzlichem Gruß, Uwe Laubender