[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Absatzformaten-Ordner wird nicht getaggt

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

Absatzformaten-Ordner wird nicht getaggt

netsrik
Beiträge gesamt: 93

27. Sep 2011, 11:59
Beitrag # 1 von 8
Bewertung:
(3059 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Leute,

ich brauch mal wieder Eure Hilfe. Mit InDesign CS 4 gibt es die Möglichkeit in der Absatzformat-Palette Ordner anzulegen. Was ich gleich auf meiner Musterseite genutzt habe. Da liegen jetzt so Absatzformate rum und speziell für die Rubrikenseiten ein Ordner "Rubrik" mit den dafürgedachten Formaten.
In meinem Script, das den XML-Export machen soll habe ich das aber nicht bedacht. Das ist vermutlich diese Stelle:
Code
function createTagsFromParagraphStyles(myParameters) 
{
var myDocument = myParameters.document;
for (var i = 0; i < myDocument.paragraphStyles.length; i++)
{
var myParagraphStyle = myDocument.paragraphStyles[i];
var myParagraphStyleName = myParagraphStyle.name;
var myMarkupTagName = calculateTagNameForParagraphStyle(myParagraphStyleName);
var myNamedXmlTag = getXmlTagByName(myDocument.xmlTags, myMarkupTagName);
if (myNamedXmlTag == null)
{
myNamedXmlTag = createXmlTag(myDocument, myMarkupTagName);
}
}
}


Wie kann ich das Problem lösen? Das Script gibt mir auch keine Fehlermeldung, dass diese Absatzformate nicht getaggt sind.

Ich hoffe, ich habe mich verständlich ausgedrückt.

Viele Grüße,

Kirsten
X

Absatzformaten-Ordner wird nicht getaggt

Martin Fischer
  
Beiträge gesamt: 12783

27. Sep 2011, 12:15
Beitrag # 2 von 8
Beitrag ID: #481107
Bewertung:
(3047 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kirsten,

mit myDocument.paragraphStyles bekommst Du nur die Absatzformate auf der obersten Ebene (außerhalb der Absatzformatordner) zu fassen.

Mit myDocument.allParagraphStyles bekommst Du alle Absatzformate, also sowohl die im Root als auch die in den Ordnern, zu fassen.

P.S.:
Unter Umständen musst Du im Fortgang Deines Skripts – innerhalb der Funktion calculateTagNameForParagraphStyle() – beachten, dass mehrere Absatzformate denselben Namen tragen können, wenn sie in verschiedenen Gruppen verteilt sind. Bei der Erstellung des Tag-Namens müsste eventuell auch der Name der jeweiligen Absatzformatgruppe mit hinzugezogen werden.


als Antwort auf: [#481104]
(Dieser Beitrag wurde von Martin Fischer am 27. Sep 2011, 12:17 geändert)

Absatzformaten-Ordner wird nicht getaggt

netsrik
Beiträge gesamt: 93

27. Sep 2011, 16:17
Beitrag # 3 von 8
Beitrag ID: #481121
Bewertung:
(3006 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

ich habe es geändert in myDocumen.allParagraphStyles und bekomme die nächste Fehlermeldung. Alle Absatzformate haben andere Namen, also nicht denselben.

Die neue Fehlermeldung lautet Fehler 55, Objekt unterstützt Eigenschaft oder Methode name nicht. Zeil 692 Quelle: myPageName myParentPage.name;

Diese Fehlermeldung hatte ich schon mal und weiß nicht was es zu bedeuten hat. Hast Du einen Tipp? Ich guck mir das Script nochmal von ganz von vorne an.

Danke erstmal,

viele Grüße, Kirsten


als Antwort auf: [#481107]

Absatzformaten-Ordner wird nicht getaggt

Martin Fischer
  
Beiträge gesamt: 12783

27. Sep 2011, 16:36
Beitrag # 4 von 8
Beitrag ID: #481125
Bewertung:
(3002 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kirsten,

wie lautet Zeile 692?

Wie wird myParentPage ermittelt?

Könnte es sein, dass beim Auftreten des Fehlers die Variable myParentPage den Wert null oder ein Objekt Spread beinhaltet?


als Antwort auf: [#481121]
(Dieser Beitrag wurde von Martin Fischer am 27. Sep 2011, 16:36 geändert)

Absatzformaten-Ordner wird nicht getaggt

netsrik
Beiträge gesamt: 93

28. Sep 2011, 11:04
Beitrag # 5 von 8
Beitrag ID: #481179
Bewertung:
(2925 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

Du stellst aber schwierige Fragen:
die Zeile 692 lautet so: myPageName = myParentPage.name;
der Wert null oder 0 und MasterSpread ist auch drin, hier der Code dazu:

Code
var myFirstTextFrame = null; 
var myParentPage = null;
var myPageName = null;

if (myStory.textFrames.length == 0)
{
myPageName = "0";
if (myStory.textContainers.length > 0)
{
myFirstTextFrame = myStory.textContainers[0];
myParentPage = myFirstTextFrame.parent;
myPageName = myParentPage.name;
if (myParentPage.parent != null)
{
var myParentPageParentConstructorName = myParentPage.parent.constructor.name;
if (myParentPageParentConstructorName == "MasterSpread")
{
myPageName = myParentPage.parent.name;
}
}
}

}


Dein Schlusswort gefällt mir sehr gut, das hat mich gleich viel fröhlicher gemacht!

Danke und viele Grüße,

Kirsten


als Antwort auf: [#481125]

Absatzformaten-Ordner wird nicht getaggt

Martin Fischer
  
Beiträge gesamt: 12783

28. Sep 2011, 11:19
Beitrag # 6 von 8
Beitrag ID: #481185
Bewertung:
(2922 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kirsten,

wenn der Textrahmen myFirstTextFrame auf der Montagefläche liegt, dann ist myFirstTextFrame.parent ein Objekt Spread (Druckbogen).

Ein Druckbogen hat im Gegensatz zu einer Seite keine Eigenschaft name.

Deswegen ergibt die Zuweisung myPageName = myParentPage.name in diesem Fall (wenn in myParentPage ein Druckbogen steckt) einen Fehler.

Du könntest alles mit try-catch abfangen.
Besser wäre aber, wenn Du den Objekttyp von myParentPage über if-else abfragen würdest (myParentPage.constructor) und je nach Typ auf die eine oder andere Weise reagierst.

Der Sinn Deiner Abfragen ab if (myParentPage.parent != null) will sich mir nicht so recht erschließen. Womöglich ist das Richtige gemeint, aber nicht ganz richtig und zumindest an der falschen Stelle umgesetzt.


als Antwort auf: [#481179]
(Dieser Beitrag wurde von Martin Fischer am 28. Sep 2011, 11:24 geändert)

Absatzformaten-Ordner wird nicht getaggt

netsrik
Beiträge gesamt: 93

30. Sep 2011, 15:15
Beitrag # 7 von 8
Beitrag ID: #481393
Bewertung:
(2863 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

das Problem liegt glaub ich an dem Dokument und nicht an dem Script. Ich versuche es noch mal auf einen anderen Weg: Du hattest mir folgenden Hinweis gegeben:
"Unter Umständen musst Du im Fortgang Deines Skripts – innerhalb der Funktion calculateTagNameForParagraphStyle() – beachten, dass mehrere Absatzformate denselben Namen tragen können, wenn sie in verschiedenen Gruppen verteilt sind. Bei der Erstellung des Tag-Namens müsste eventuell auch der Name der jeweiligen Absatzformatgruppe mit hinzugezogen werden. "

Meintest Du diese Stelle vielleicht:
Code
function calculateTagNameForParagraphStyle(myParagraphStyleName) 
{
var myTagName = myParagraphStyleName.replace(/\s+/, '_').replace(/[?*#<>@]+/, '_').replace("[", "").replace("]", "").replace("&", "").replace(" ", "_");
return myTagName;
}


An welcher Stelle soll ich da den Namen der jeweiligen Absatzformatgruppe hinzuziehen?

Viele Grüße,

Kirsten


als Antwort auf: [#481185]

Absatzformaten-Ordner wird nicht getaggt

Martin Fischer
  
Beiträge gesamt: 12783

30. Sep 2011, 16:22
Beitrag # 8 von 8
Beitrag ID: #481397
Bewertung:
(2846 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Du könntest z.B. vor dem Absatzformatnamen den Namen der Absatzformatgruppe ergänzen und zwischen die beiden Namen ein Divis - oder Underscore _ einfügen.

Aber es ist schon so, dass im Code oben ein Fehler war.
Zwischen den beiden Zeilen
Code
myParentPage = myFirstTextFrame.parent;  
myPageName = myParentPage.name;

muss geklärt werden, was passiert, wenn myFirstTextFrame.parent kein Page-Objekt zurückgibt, sondern ein Spread-Objekt. In letzterem Fall kann nämlich keine name-Property ermittelt werden und es wird ein Fehler ausgegeben.


als Antwort auf: [#481393]
X