Copy link to clipboard
Copied
Hallo,
ich habe mal wieder ein Problem. Ich möchte Musterseiten anhand von Text zuweisen. Dazu habe ich folgendes Script:
var _dok = app.activeDocument;
var allPages = _dok.pages;
main()
function main() {
//Zuordnung Text -> Musterseite
var _listMasterpage = [
["##Musterseite A", "A-Musterseite"],
["##Musterseite B", "B-Musterseite"]
]
//Schleife durch alle Seiten
for (var i = 0; i < allPages.length; i++) {
//Alle Seiten durchlaufen und Musterseiten zuweisen, "tf_zuordnung" Bezeichnung des Textrahmen, in dem der zu prüfenden Text steht
var curPage = allPages[i];
if (curPage.textFrames.itemByName("tf_zuordnung").isValid) {
var tf = curPage.textFrames.itemByName("tf_zuordnung");
var cont = tf.contents.replace(/\r/g, "");
if (cont != 0) {
for (var j = 0; j < _listMasterpage.length; j++) {
var curList = _listMasterpage[j][0];
if (cont == curList) {
alert(cont)
curPage.appliedMaster = _dok.masterSpreads.itemByName(_listMasterpage[j][1]);
break;
}
}
}
}
}
}
Klappt an sich auch super. Nun kommt aber eine XML ins spiel. Wenn ich in dem Beispiel das Element <test_1> bzw. <test_2> in den TR ziehe, arbeitet das Script, wie es soll.
Ziehe ich nun <Konten1> in den TR, will er es nicht mehr.
Hier die Beispieldateien (xml,js,idml)
Danke für die Hilfe.
Hi,
das Szenario, wo du das XML-Tag "Knoten1" auf einen Textrahmen funktioniert nicht, weil hier unsichtbare Steuerzeichen in Spiel kommen. Dadurch enstpricht der Textinhalt des Textrahmens nicht exakt "## Musterseite A" (bzw. B).
Lösungsvorschlag 1:
Wenn es nicht nötig ist, es ganz genau zu nehmen, ändere die Codezeile
if (cont == curList) {...}
in
if (cont.indexOf(curList) != -1) {...}
um.
Lösungsvorschlag 2:
Wenn aber wirklich nichts außer ##Musterseite A/B im Textrahmen stehen darf, musst du den
...Copy link to clipboard
Copied
Hi,
das Szenario, wo du das XML-Tag "Knoten1" auf einen Textrahmen funktioniert nicht, weil hier unsichtbare Steuerzeichen in Spiel kommen. Dadurch enstpricht der Textinhalt des Textrahmens nicht exakt "## Musterseite A" (bzw. B).
Lösungsvorschlag 1:
Wenn es nicht nötig ist, es ganz genau zu nehmen, ändere die Codezeile
if (cont == curList) {...}
in
if (cont.indexOf(curList) != -1) {...}
um.
Lösungsvorschlag 2:
Wenn aber wirklich nichts außer ##Musterseite A/B im Textrahmen stehen darf, musst du den Textinhalt einmal umkodieren, das Steuerzeichen löschen und wieder umkodieren:
var cont = tf.contents.replace(/\r/g, "");
cont_uri = encodeURI(cont);
cont_uri = cont_uri.replace(/%EF%BB%BF/g, "");
cont = decodeURI(cont_uri);
Copy link to clipboard
Copied
Hallo,
vielen Dank für die Hilfe. Lösungsvorschlag 2 klappt sehr gut.