[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt <![CDATA[-Bug in ESTK CS5 und CS5.5

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

Uwe Laubender
Beiträge gesamt: 5319

9. Aug 2011, 14:25
Beitrag # 1 von 5
Bewertung:
(2569 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, zusammen!

Neulich stieß ich auf ein Problem bei Benutzung des ESTKs CS5 und CS5.5 in Verbindung mit InDesign. Andere Scripter sind auch schon darauf aufmerksam geworden:

http://forums.adobe.com/message/3147388#3147388
Bug or change in CS5 Extendscript Toolkit debugger or parser
(Beitrag vom 20.09.2010)

Der Bug ist auch in CS5.5 noch nicht behoben.

Bug-Beschreibung (soweit ich das verstanden habe und durch eigene Tests untermauern konnte):
Der "contents" eines Objekts (bei mir Tabellenzellen) wird falsch ausgelesen. Es entsteht ein Konstrukt, das aus "<![CDATA[" (o.ä.) plus dem eigentlichen Zelleninhalt besteht! (Siehe auch angehängten Screenshot.)

Anbei nun eine kleine Testdatei und ein Script, das diesen Bug provoziert.
Dazu noch diverse Versuche diesen Fehler zu beheben, indem ich dem ausgelesenen Contents einen weiteren String voranstelle.

Dies klappt nur unter bestimmten Voraussetzungen. Um mit den Ergebnissen weiterzuarbeiten (z.B. in einem Array) sollte der Hilfsstring wieder entfernt werden…

Im Anhang also eine IDML-Datei mit einem einfachen Textrahmen, der eine einfache Tabelle, deren Zelleninhalte ausgelesen werden sollen und per $.writeln() in die Konsole des ESTK geschrieben werden.

Ein Wort der Warnung: Wird der Bug ausgelöst, nützt es auch nichts das Script in InDesign CS5 oder CS5.5 zu starten, der Bug bleibt bestehen; hat sich also in der Scripting-Engine festgesetzt. Um "reinen Tisch" zu machen, sollte das ESTK und auch InDesign neu gestartet werden.

Der Fehler tritt nicht in ESTK/InDesign CS3 oder CS4 auf!

Code
//_Provoke_C-DATA_Error_110809-1.jsx 
//Uwe Laubender
//DESCRIPTION:Provokes C-DATA-Error when executed in ESTK of InDesign CS5 or CS5.5
//Voraussetzung: Textrahmen mit Tabelle ist angewählt:

_Provoke_C_DATA_Error()
function _Provoke_C_DATA_Error(){

var _d = app.activeDocument;
var _table = app.selection[0].parentStory.tables[0];
var _columns = _table.columns.everyItem().getElements();

for(var c = 0;c<1;c++){
var _cells = _columns[0].cells.everyItem().getElements();
for(var n=_cells.length-1;n>0;n--){

//Versuch 1:
//Provoziert den C-DATA-Error in InDesign CS5 ESTK und InDesign CS5.5 ESTK:
$.writeln(_cells[n].contents);

//Versuch 2:
//IMMER NOCH C-DATA-Error (leerer String, der dem Inhalt hinzugefügt wird):
//~ $.writeln(""+_cells[n].contents);

//Versuch 3:
//IMMER NOCH C-DATA-Error (Tabulator im String, der dem Inhalt hinzugefügt wird):
//~ $.writeln("\t"+_cells[n].contents);

//Versuch 4:
//KEIN C-DATA-Error mehr (Zeichen "Raute" im String, der dem Inhalt hinzugefügt wird):
//~ $.writeln("#"+_cells[n].contents);

//Versuch 5:
//KEIN C-DATA-Error mehr (EIN beliebiges Zeichen im String, der dem Inhalt hinzugefügt wird):
//~ $.writeln("a"+_cells[n].contents);

//In Komination Versuch 1 und Versuch 4 oder 5 wird der Fehler AUCH provoziert!!
//Der Fehler wird NICHT erzeugt, wenn das Script in InDesign ausgeführt wird. ES SEI DENN: es ist vorher im ESTK ausgeführt worden.
//Dies triggert offenbar die Scriping-Engine!

};
};

}; //Function _Provoke_C_DATA_Error ENDE


Gibt es noch andere Workarounds als
1. das ESTK nicht zu benutzen?
2. mit einem Hilfsstring zu arbeiten?

MacBook Pro 2.4GHz | OS X 10.5.8 | Adobe CS3/CS4/CS5/CS5.5 Design Premium

Anhang:
TEST_Inhalt_Spalte1_auslesen_C-DATA-FEHLER.idml (34.7 KB)   C-DATA-Bug_ESTK_Konsole.png (36.6 KB)
X

WernerPerplies
Beiträge gesamt: 2762

9. Aug 2011, 15:20
Beitrag # 2 von 5
Beitrag ID: #477765
Bewertung:
(2551 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

Du machst mir Angst! ;-)

Jetzt habe ich für meine Kalenderanwendung jede Menge Tabellenzellen ausgelesen und kein Problem gehabt.

Und Dein Code provoziert bei direkt den beschriebenen Effekt.

Ich werde mir jetzt mal die Unterschiede ansehen.


als Antwort auf: [#477756]

WernerPerplies
Beiträge gesamt: 2762

9. Aug 2011, 15:42
Beitrag # 3 von 5
Beitrag ID: #477770
Bewertung:
(2541 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

wäre das eine Lösung?
Code
_Provoke_C_DATA_Error()  
function _Provoke_C_DATA_Error(){

var _d = app.activeDocument;
var _table = app.selection[0].parentStory.tables[0];
var _columns = _table.columns.everyItem().getElements();

for(var c = 0;c<1;c++){
var _cells = _columns[0].cells.everyItem().getElements();
for(var n=_cells.length-1;n>0;n--)
{
if (_cells[n].contents.length>0) $.writeln(_cells[n].contents);
};
};

}; //Function _Provoke_C_DATA_Error ENDE



als Antwort auf: [#477756]

Uwe Laubender
Beiträge gesamt: 5319

9. Aug 2011, 16:15
Beitrag # 4 von 5
Beitrag ID: #477773
Bewertung:
(2528 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Werner!

Ja, das wäre eine Lösung. Danke.
Man muß schon höllisch aufpassen…

MacBook Pro 2.4GHz | OS X 10.5.8 | Adobe CS3/CS4/CS5/CS5.5 Design Premium


als Antwort auf: [#477770]

Uwe Laubender
Beiträge gesamt: 5319

19. Jun 2012, 12:59
Beitrag # 5 von 5
Beitrag ID: #496683
Bewertung:
(2179 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, zusammen!
Es scheint als sei dieser Bug mit dem neuen ESTK für die CS6 behoben.
Ich bitte diejenigen unter euch, die das CS6 ESTK installiert haben, das mal auszuprobieren.

Als Kombination: CS6 ESTK zusammen mit InDesign CS5, CS5.5 und CS6.
Der Fehler dürfte nicht mehr auftreten.

Mit dem ESTK (3.5.1.59) für die CS5.5 in Kombination mit InDesign CS5, CS5.5 und CS6 tritt der Fehler in Erscheinung. Jedenfalls bei mir.


als Antwort auf: [#477756]
X