[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt alle Elemente der Musterseite übergehen

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

alle Elemente der Musterseite übergehen

J.Puff
Beiträge gesamt: 238

23. Nov 2011, 21:36
Beitrag # 1 von 24
Bewertung:
(12241 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
ich möchte per Script alle Musterseiten-Elemente lösen.
Hat jemand eine Idee dazu?

Vielen Dank
Johannes
X

alle Elemente der Musterseite übergehen

Hans Haesler
  
Beiträge gesamt: 5826

23. Nov 2011, 22:16
Beitrag # 2 von 24
Beitrag ID: #485073
Bewertung:
(12221 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Johannes,

dazu ist kein Script notwendig. Das kann manuell gemacht werden (es sei denn, dass Du diese Aktion aus irgendeinem Grund in ein bestehendes Script einbauen möchtest).

Im Seitenbedienfeld die erste Seite auswählen. Im selben Bedienfeld zur letzten Seite scrollen. Die Umschalt-Taste niederhalten und auf das Symbol der letzten Seite klicken: Alle Seitensymbole sind ausgewählt.

Jetzt im Fly-out-Menü den Artikel "Alle Musterseitenobjekte übergehen" wählen. Und alle sind gelöst.

Gruss, Hans


als Antwort auf: [#485068]

alle Elemente der Musterseite übergehen

J.Puff
Beiträge gesamt: 238

23. Nov 2011, 22:19
Beitrag # 3 von 24
Beitrag ID: #485074
Bewertung:
(12217 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
in der Tat geht es darum, das per Script zu erledigen, da damit auch die Seiten angelegt werden.
Habe gerade override() getestet, damit scheint es zu klappen.

Schönen Abend & danke
Johannes


als Antwort auf: [#485073]

alle Elemente der Musterseite übergehen

J.Puff
Beiträge gesamt: 238

3. Dez 2011, 10:37
Beitrag # 4 von 24
Beitrag ID: #485687
Bewertung:
(12098 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
wie bereits geschrieben kann ich mit override() Musterseiten-Objekte auf der aktuellen Seite per Script lösen. Allerdings werde die Objekte dupliziert, so dass sie den Bezug zur Musterseite verlieren. Ändere ich z.B. die Position eines solchen Rahmens auf der Musterseite, ändert er sich nicht in dem mit override() gelösten Objekt.
Das ist anders, wenn ich das Objekt händisch löse.

Woran liegt das?


als Antwort auf: [#485074]

alle Elemente der Musterseite übergehen

Hans Haesler
  
Beiträge gesamt: 5826

3. Dez 2011, 13:34
Beitrag # 5 von 24
Beitrag ID: #485691
Bewertung:
(12078 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Johannes,

würdest Du bitte ein Stück Code posten?

Ich bin zwar zur Zeit unterwegs und könnte das Problem erst später untersuchen.

Gruss, Hans


als Antwort auf: [#485687]

alle Elemente der Musterseite übergehen

J.Puff
Beiträge gesamt: 238

3. Dez 2011, 19:38
Beitrag # 6 von 24
Beitrag ID: #485698
Bewertung:
(12049 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
anbei der relevante Ausschnitt aus dem Script:

Code
var _d = app.activeDocument;  
var _p = _d.pages.add();
_p.appliedMaster = _d.masterSpreads.item("A-Basic");
var _count = _p.masterPageItems.length;
for(var k=_count-1; k>= 0; k--)
{
var _tf = _p.masterPageItems[k];
_tf.override(_p);
}


Danke für die Hilfe
Johannes


als Antwort auf: [#485691]

alle Elemente der Musterseite übergehen

Hans Haesler
  
Beiträge gesamt: 5826

3. Dez 2011, 21:16
Beitrag # 7 von 24
Beitrag ID: #485702
Bewertung:
(12034 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Johannes,

danke für den Ausschnitt. Hier funktioniert das wie erwartet. Und nicht so, wie Du es beschreibst. Es gibt keinen Unterschied zur einer manuellen Aktion.

Die Objekte werden übergangen, aber nicht dupliziert. Und der Bezug zum Musterseiten-Objekt bleibt erhalten:
– Wenn auf der Musterseite die Hintergrundfarbe eines Rahmens geändert wird, dann ist es auf der Dokumentseite auch so.
– Wenn ein Rahmen verschoben wird, dann findet man ihn auf der Dokumentseite ebenfalls auf der neuen Position.

Getestet mit InDesign CS5 unter Mac OS X.

Welche Version von InDesign benutzest Du? Welche Plattform (Mac oder Win)?

Gruss, Hans


als Antwort auf: [#485698]

alle Elemente der Musterseite übergehen

J.Puff
Beiträge gesamt: 238

3. Dez 2011, 21:20
Beitrag # 8 von 24
Beitrag ID: #485703
Bewertung:
(12027 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
ich arbeite mit Mac OS X 10.6.8 und InDesign CS 5.5.
Allerdings sind die Rahmen auf mehreren Ebenen, aber das dürfte keinen Einfluss haben - oder?

Beste Grüße
Johannes


als Antwort auf: [#485702]

alle Elemente der Musterseite übergehen

Hans Haesler
  
Beiträge gesamt: 5826

3. Dez 2011, 22:23
Beitrag # 9 von 24
Beitrag ID: #485706
Bewertung:
(12010 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Johannes,

die Ebenen sollten keinen Einfluss auf das Ergebnis haben.

Ich habe jetzt den Versuch mit InDesign CS5.5 wiederholt. Ebenfalls unter Mac OS X 10.6.8. Drei Ebenen. Auf jeder ein Bildrahmen. Und wiederum kann ich Dein Problem nicht nachvollziehen.

Fragen in die Runde: Wer kennt die Ursache? Bei wem verlieren die Rahmen den Bezug zur Musterseite?

Gruss, Hans


als Antwort auf: [#485703]

alle Elemente der Musterseite übergehen

Hans Haesler
  
Beiträge gesamt: 5826

4. Dez 2011, 09:20
Beitrag # 10 von 24
Beitrag ID: #485711
Bewertung:
(11972 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Johannes,

ich kann Dein Problem nur nachvollziehen, wenn das Script erneut eine Schleife durch die Seiten macht.

Code
var _d = app.activeDocument; 
// vier Seiten anfügen ...
for (var i=0; i<4; i++) {
var _p = _d.pages.add();
_p.appliedMaster = _d.masterSpreads.item("A-Basic");
var _count = _p.masterPageItems.length;
// ... und die Musterseitenobjekte übergehen
for(var k=_count-1; k>= 0; k--) {
var _tf = _p.masterPageItems[k];
_tf.override(_p);
}
}
// eine erneute Schleife; durch die Seiten 2 bis 5
for (var i=1; i<5; i++) {
var _p = _d.pages[i];
_p.appliedMaster = _d.masterSpreads.item("A-Basic");
var _count = _p.masterPageItems.length;
// die Musterseitenobjekte übergehen
for(var k=_count-1; k>= 0; k--) {
var _tf = _p.masterPageItems[k];
_tf.override(_p);
}
}

Jetzt werden die Rahmen dupliziert. Und pro Rahmen-Paar verliert einer den Bezug zur Musterseite.
Aber sehr wahrscheinlich ist die Ursache anderswo zu suchen.

Ein Angebot: Wenn Du mir das Script zustellst, werde ich versuchen, dem Problem auf die Spur zu kommen.

Gruss, Hans


als Antwort auf: [#485706]

alle Elemente der Musterseite übergehen

J.Puff
Beiträge gesamt: 238

4. Dez 2011, 11:10
Beitrag # 11 von 24
Beitrag ID: #485712
Bewertung:
(11955 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Hans,
danke für die weitere Untersuchung.
Du hast recht, es gibt eine weitere Schleife, die allerdings einen XML-Baum durchläuft.
Das sieht dann so aus:

Code
#target indesign 

var _d = app.activeDocument;
var _root = _d.xmlElements[0];

try
{
for(var i=0; i<_root.xmlElements.length; i++)
{
var _titel = _root.xmlElements[i];
var _p = _d.pages.add();
_p.appliedMaster = _d.masterSpreads.item("A-Basic");

var _count = _p.masterPageItems.length;
for(var k=_count-1; k>= 0; k--)
{
var _tf = _p.masterPageItems[k];
_tf.override(_p);
}

// XML-Zuweisungen auf die Textrahmen
}

} catch (e) { alert(e); }

app.activeDocument.mapXMLTagsToStyles();


Den Teil XML-Zuweisungen habe ich weggelassen, da der Fehler dann ja schon passiert ist.

Beste Grüße
Johannes


als Antwort auf: [#485711]

alle Elemente der Musterseite übergehen

Hans Haesler
  
Beiträge gesamt: 5826

4. Dez 2011, 12:52
Beitrag # 12 von 24
Beitrag ID: #485715
Bewertung:
(11930 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Johannes,

und? Kanst Du jetzt das unnötige Übergehen vermeiden?

Gruss, Hans


als Antwort auf: [#485712]

alle Elemente der Musterseite übergehen

J.Puff
Beiträge gesamt: 238

4. Dez 2011, 12:55
Beitrag # 13 von 24
Beitrag ID: #485716
Bewertung:
(11927 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
ich fürchte die Frage nicht zu verstehen: was meinst Du mit unnötiges Übergehen?
Ich muss die Rahmen ja Lösen, da ich sonst keine XML-Elemente damit verknüpfen kann.

Grüße
Johannes


als Antwort auf: [#485715]

alle Elemente der Musterseite übergehen

Hans Haesler
  
Beiträge gesamt: 5826

4. Dez 2011, 15:53
Beitrag # 14 von 24
Beitrag ID: #485721
Bewertung:
(11902 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Johannes,

das einmalige Lösen ist okay. Aber ein weiteres Übergehen ist unnötig. Dadurch werden die Rahmen dupliziert.

Falls das Problem noch nicht gelöst ist, gilt mein Angebot immer noch. Aber zusätzlich zum Script sollte ich auch alles bekommen, was zum Ablauf der Aktion gehört.

Gruss, Hans


als Antwort auf: [#485716]

alle Elemente der Musterseite übergehen

J.Puff
Beiträge gesamt: 238

4. Dez 2011, 21:52
Beitrag # 15 von 24
Beitrag ID: #485730
Bewertung:
(11872 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
irgendwie stehe ich wohl auf der Leitung: wo findet sich in meinem Code das einmalige Lösen und dann das weitere Übergehen?
Ich finde nur eine Stelle: _tf.override(_p);

Danke für eine Erläuterung!
Johannes


als Antwort auf: [#485721]

alle Elemente der Musterseite übergehen

Hans Haesler
  
Beiträge gesamt: 5826

4. Dez 2011, 22:23
Beitrag # 16 von 24
Beitrag ID: #485731
Bewertung:
(3815 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Johannes,

wenn man den Code durchliest, dann sollte alles okay sein.

Aber beim praktischen Anwenden scheint es anders sein. Doch dazu fehlen mir die identischen Voraussetzungen.

So wie ich es verstehe, werden die Musterseiten-Objekte auf den Dokumentseiten nicht nur gelöst, sondern auch dupliziert. Und von jedem Rahmenpaar reagiert nur einer auf Veränderungen des entsprechenden Musterseitenobjekts. Oder ist das bei Dir anders?

Nochmals: Wenn Du mir Basisdokumente (InDesign-Dokument, JavaScript) zustellst, mit welchen das Problem zuverlässig nachzuvollziehen ist, dann werde ich gerne versuchen, die Ursache des Problems zu finden und eine Abhilfe einzubauen.

Gruss, Hans


als Antwort auf: [#485730]

alle Elemente der Musterseite übergehen

Hans Haesler
  
Beiträge gesamt: 5826

5. Dez 2011, 11:54
Beitrag # 17 von 24
Beitrag ID: #485744
Bewertung:
(3768 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Johannes,

danke für die Dateien.

Das Problem wird durch eine Zeile am Schluss des Scripts verursacht:

Code
_d.pages[0].remove(); 

Weil das Dokument doppelseitig angelegt ist, verschieben sich nach dem Löschen der ersten Seite die folgenden um eine Position nach oben. Über den Bund: linke Seiten werden zu rechten und umgekehrt.

Mein Rat: Die remove-Zeile entfernen. Dann nach dem Ausführen des Scripts bei der Seite 2 einen Abschnittsanfang definieren und die erste Seite löschen.

Gruss, Hans


als Antwort auf: [#485731]

alle Elemente der Musterseite übergehen

J.Puff
Beiträge gesamt: 238

5. Dez 2011, 12:02
Beitrag # 18 von 24
Beitrag ID: #485745
Bewertung:
(3767 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
herzlichen Dank!
Manchmal sieht mensch vor lauter Bäumen den Wald nicht ....

Beste Grüße
Johannes


als Antwort auf: [#485744]

alle Elemente der Musterseite übergehen

J.Puff
Beiträge gesamt: 238

18. Sep 2012, 23:08
Beitrag # 19 von 24
Beitrag ID: #501071
Bewertung:
(3531 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
ist schon ein paar Monate her, aber erneut habe ich Schwierigkeiten beim Lösen aller Musterseitenobjekte! Es geht um andere Dateien, aber inhaltlich gehört das Thema hierher.

Mit folgender Funktion arbeite ich:
Code
function overrideMasterItems(_page) 
{
var _allItems = _page.appliedMaster.pageItems.everyItem().getElements();
for(var i=0; i<_allItems.length; i++)
{
try {
_allItems[i].override(_page)
} catch(e) {}
}
}


Die klappt prima, löst auch alle Musterseitenobjekte. Nur leider stehen die Objekte nicht mehr in der selben Reihenfolge übereinander. Z.B. wird ein Fondbild über andere Elemente gelegt, obwohl es auf der Musterseite ganz im Hintergrund liegt.
Löse ich die Musterseitenobjekte mit dem Befehl "Alle Musterseitenobjekte übergehen" aus der Seitenpalette bleibt die Hierarchie korrekt erhalten.

Was mache ich verkehrt?

Beste Grüße
Johannes.


als Antwort auf: [#485744]
(Dieser Beitrag wurde von J.Puff am 18. Sep 2012, 23:10 geändert)

alle Elemente der Musterseite übergehen

Hans Haesler
  
Beiträge gesamt: 5826

19. Sep 2012, 07:55
Beitrag # 20 von 24
Beitrag ID: #501081
Bewertung:
(3493 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Johannes,

ich bin unterwegs und kann nichts testen.

Versuche es bitte mal so: Die Schleife rückwärts laufen lassen:

Code
for (var i=_allItems.length-1; i>-1; i--) 

Gruss, Hans


als Antwort auf: [#501071]

alle Elemente der Musterseite übergehen

J.Puff
Beiträge gesamt: 238

19. Sep 2012, 10:50
Beitrag # 21 von 24
Beitrag ID: #501106
Bewertung:
(3460 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Hans,
die Schleife rückwärts erzeugt das gleiche Ergebnis.

Beste Grüße
J.


als Antwort auf: [#501081]

alle Elemente der Musterseite übergehen

-hans-
Beiträge gesamt: 748

19. Sep 2012, 12:12
Beitrag # 22 von 24
Beitrag ID: #501131
Bewertung:
(3433 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,

vllt. temporär gruppieren? Rechte und linke Seiten dabei beachten ...

Code
var _d = app.activeDocument;   

var _g =_d.masterSpreads[0].groups.add(_d.masterSpreads[0].pages[1].pageItems);
_d.pages[0].appliedMaster.groups[0].override(_d.pages[0]);
_g.ungroup()



als Antwort auf: [#501106]

alle Elemente der Musterseite übergehen

J.Puff
Beiträge gesamt: 238

19. Sep 2012, 12:32
Beitrag # 23 von 24
Beitrag ID: #501138
Bewertung:
(3422 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
ist einen Versuch wert, probiere ich einmal aus!
Danke
J.


als Antwort auf: [#501131]

alle Elemente der Musterseite übergehen

J.Puff
Beiträge gesamt: 238

19. Sep 2012, 13:51
Beitrag # 24 von 24
Beitrag ID: #501151
Bewertung:
(3376 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
vielen Dank für den guten Hinweis, damit klappt es!

Der Vollständigkeit halber sollte allerdings auch die übergangene Gruppe wieder gelöst werden:
Code
var _d = app.activeDocument;    
var _g =_d.masterSpreads[0].groups.add(_d.masterSpreads[0].pages[1].pageItems);
_d.pages[0].appliedMaster.groups[0].override(_d.pages[0]);
_g.ungroup();
_d.pages[0].groups[0].ungroup();


Beste Grüße
J.


als Antwort auf: [#501131]
X