[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt CS6: diffuse Probleme mit Scripting und dem Release

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

CS6: diffuse Probleme mit Scripting und dem Release

mx
Beiträge gesamt: 161

8. Mai 2012, 08:54
Beitrag # 1 von 6
Bewertung:
(2169 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

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
X

CS6: diffuse Probleme mit Scripting und dem Release

Uwe Laubender
Beiträge gesamt: 5006

8. Mai 2012, 09:54
Beitrag # 2 von 6
Beitrag ID: #494585
Bewertung:
(2135 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Jo!

Bekommst Du die Rahmen in den Griff, wenn Du sie über ihre ID ansprichst?
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#494576]

CS6: diffuse Probleme mit Scripting und dem Release

mx
Beiträge gesamt: 161

8. Mai 2012, 13:32
Beitrag # 3 von 6
Beitrag ID: #494605
Bewertung:
(2086 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

Danke für die Antwort.

Kurz: Die ID ist nicht mehr gültig!

Mittlerweile habe ich einen Hinweis gefunden, der in Richtung der Ursache zeigen könnte:
Code
nextFrame = masterFrame.override(nextPage); 

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
Code
nextFrame.detach() 

ablöse, klappt's, das war aber nicht Ziel der Übung :(

Zum nachstellen deutlich vereinfacht (es geht auch mit nur einem Master daneben):
Code
var currentDocument = app.activeDocument; 
currentDocument.revert();

var currentPage = currentDocument.pages[0];
var currentFrame = currentPage.textFrames[0];
var nextPage = null;
var nextFrame = null;
var masterFrame = currentPage.appliedMaster.textFrames[0];

for(var i=0;i<3;i++){
nextPage = currentPage.parent.pages.add(LocationOptions.AFTER, currentPage);
if(!currentFrame.isValid)
$.bp();
//In der folgenden Zeile entsteht das Problem (im zweiten Durchlauf bei i=1). Was eben noch gültig war...
currentPage.appliedMaster = currentDocument.masterSpreads[0];
if(!currentFrame.isValid)
$.bp();
//.. ist es jetzt nicht mehr
nextPage.appliedMaster = currentDocument.masterSpreads[0];
masterFrame = currentDocument.masterSpreads[0].textFrames[0];
nextFrame = masterFrame.override(nextPage);
currentFrame.nextTextFrame = nextFrame;
currentFrame = nextFrame;
currentPage = nextPage;
}


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


als Antwort auf: [#494585]

CS6: diffuse Probleme mit Scripting und dem Release

Uwe Laubender
Beiträge gesamt: 5006

8. Mai 2012, 14:17
Beitrag # 4 von 6
Beitrag ID: #494612
Bewertung:
(2070 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
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):

Code
var currentDocument = app.activeDocument;  
var lastPage = currentDocument.pages[-1];

var lastMasterFrame = lastPage.appliedMaster.textFrames[0];
var textFrameArray = new Array();

textFrameArray[0] = lastMasterFrame.override(lastPage);

for(var i=0;i<3;i++){
lastPage = currentDocument.pages.add(LocationOptions.AFTER,currentDocument.pages[-1]);
textFrameArray[i+1] = lastMasterFrame.override(lastPage);
};

for(var n=0;n<textFrameArray.length-1;n++){
textFrameArray[n].nextTextFrame = textFrameArray[n+1];
};

*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#494605]

CS6: diffuse Probleme mit Scripting und dem Release

mx
Beiträge gesamt: 161

8. Mai 2012, 14:51
Beitrag # 5 von 6
Beitrag ID: #494616
Bewertung:
(2053 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

Genau so:
Antwort auf [ Uwe Laubender ] 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?


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
Antwort auf [ Uwe Laubender ] Deinen hier geposteten Code habe ich auch in InDesign CS4 nicht zum Laufen gebracht.

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):

Code
var currentDocument = app.activeDocument;   
var lastPage = currentDocument.pages[-1];

var lastMasterFrame = lastPage.appliedMaster.textFrames[0];
var textFrameArray = new Array();

textFrameArray[0] = lastMasterFrame.override(lastPage);

for(var i=0;i<3;i++){
//jetzt neu: Master zuweisen
currentDocument.pages[-1].appliedMaster = currentDocument.masterSpreads[0];
lastPage = currentDocument.pages.add(LocationOptions.AFTER,currentDocument.pages[-1]);
textFrameArray[i+1] = lastMasterFrame.override(lastPage);
};

for(var n=0;n<textFrameArray.length-1;n++){
textFrameArray[n].nextTextFrame = textFrameArray[n+1];
};


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


als Antwort auf: [#494612]

CS6: diffuse Probleme mit Scripting und dem Release

Uwe Laubender
Beiträge gesamt: 5006

8. Mai 2012, 15:13
Beitrag # 6 von 6
Beitrag ID: #494622
Bewertung:
(2036 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Jo!

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


als Antwort auf: [#494616]
X

Aktuell

PDF / Print
PDF-XCange_300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
26.10.2021

Online
Dienstag, 26. Okt. 2021, 10.00 - 10.30 Uhr

Webinar

In unserem ca. 30-minütigen kostenlosen Webinar zeigt Ihnen unser Produktmanager Karsten Schwarze, wie Sie mit ColorLogic ColorAnt, CoPrA und ZePrA einen konsistenten Farbmanagement Workflow aufbauen und die Druckqualität sichern.

Ja

Organisator: Impressed GmbH

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=305

Mit ColorLogic ColorAnt & CoPrA & ZePrA zum perfekten Druckergebnis
Veranstaltungen
29.10.2021 - 08.07.2022

Digicomp Academy, Zürich
Freitag, 29. Okt. 2021, 13.00 Uhr - Freitag, 08. Juli 2022, 19.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte.

Preis: 10'500.– zzgl. 7.7% MWST
Dauer: 30 Tage(ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberater AT digicomp DOT ch