[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Anzahl von TextFrames auf einer Seite

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

Anzahl von TextFrames auf einer Seite

Stefan Dpunkt
Beiträge gesamt: 12

31. Mär 2014, 16:06
Beitrag # 1 von 34
Bewertung:
(7148 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Zusammen.

Ich arbeite mich grad in das Thema InDesign & JavaScript ein und wollte mir eine Automatisierung erarbeiten.
Mein Ziel ist, CSV einlesen, Mustervorlagen entsprechend der Bedingungen auswählen, Daten neu setzen, fertig!

1. Ich nutze die Datenzusammenführung um eine CSV-Datei einzulesen (Titel, @Bild, Text1, Text2, Text3). Die Texte sind unterschiedlich lang.
2. In der den Mustervorlagen gibt es nur zwei Platzhalter, einen für das Bild und einen für die Texte
3. Maximal sollen nur drei Datensätze pro Seite erzeugt werden
=> das klappt hervorangend

Jetzt wollte ich JavaScript zum Einsatz bringen:

Ich gehe alle TextFrames durch und alle die mehr als oder genau 14 Zeilen, sollen eine neue Mustervorlage zugewissen bekommen.
Die neue Vorlage soll nur zwei Datensätze enthalten, die nächste Seite dann wieder drei Datensätze.
Damit hab ich schon mein erstes Problem, das ändern der Vorlage klappt, aber ich behalte immer noch die drei Datensätze auf der Seite.

Wie löse ich das Problem?

#target InDesign
var _dok = app.activeDocument;
var _alleSeiten = _dok.pages;

for (var i = 0; i < _alleSeiten.length; i++) {
var _seite = _alleSeiten[i];

if (app.activeDocument.textFrames.length > 0) {
for (var j = 0; j < _dok.textFrames.length; j++ ){

var _tf = _dok.textFrames[j];
var _tfLines = _tf.lines.length;

if (_tfLines >= 14){
alert("_tfLines: " + _tfLines);
_seite.appliedMaster = _dok.masterSpreads.itemByName("D-2");
} // if_tfLines

}
}// for
}
X

Anzahl von TextFrames auf einer Seite

Hans Haesler
  
Beiträge gesamt: 5826

1. Apr 2014, 10:20
Beitrag # 2 von 34
Beitrag ID: #525732
Bewertung:
(7069 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

herzlich willkommen auf HDS! :-)

Also ... wenn Du ein Beispieldokument zur Verfügung stellen würdest, dann wäre eher jemand bereit, eine Lösung zu finden.

Vorerst nur soviel: Dein Script macht ein Schleife durch die Seiten und innerhalb dieser Schleife eine Schleife durch die Textrahmen des Dokuments. Statt durch die Textrahmen der aktuellen Seite.

So wäre es schon mal besser:

Code
var _dok = app.activeDocument; 
var _alleSeiten = _dok.pages;

for (var i = 0; i < _alleSeiten.length; i++) {
var _seite = _alleSeiten[i];

if (_seite.textFrames.length > 0) {
for (var j = 0; j < _seite.textFrames.length; j++ ){

var _tf = _seite.textFrames[j];
var _tfLines = _tf.lines.length;

if (_tfLines >= 14) {
alert("_tfLines: " + _tfLines);
_seite.appliedMaster = _dok.masterSpreads.itemByName("D-2");
}
}
}
}

Mein Angebot: Wenn Du mir ein Beispieldokument sendest (die E-Mail-Adresse steht in meinem Profil), werde ich versuchen, Deine Aufgabe zu lösen.

Gruss, Hans


als Antwort auf: [#525710]

Anzahl von TextFrames auf einer Seite

Hans Haesler
  
Beiträge gesamt: 5826

1. Apr 2014, 14:31
Beitrag # 3 von 34
Beitrag ID: #525754
Bewertung:
(7020 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

ich bedanke mich für das Beispieldokument. Aber so einfach kann die Sache nicht automatisiert werden.

Erstes Problem: Der Übersatz. Weder manuell noch per Script kann die Anzahl der versteckten Zeilen ermittelt werden. 
Die Lösung ist: Die Höhe des Rahmens ändern ("Rahmen an Inhalt anpassen").

Das zweite Problem: Mit einer Zuweisung einer anderen Musterseite wird die Anzahl der Rahmen auf der aktuellen Dokumentseite nicht verändert.
Mögliche Lösung: Die überflüssigen Rahmen entfernen und die übrigbleibenden vergrössern und verschieben.

Ich muss gleich weg. Deshalb werde ich erst in den Abendstunden versuchen können, das Script zu erweitern.

Gruss, Hans


als Antwort auf: [#525710]

Anzahl von TextFrames auf einer Seite

Hans Haesler
  
Beiträge gesamt: 5826

1. Apr 2014, 19:52
Beitrag # 4 von 34
Beitrag ID: #525778
Bewertung:
(6976 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

das angekündigte Script läuft, ist aber nicht brauchbar, weil die Inhalte nicht einfach so entfernt werden können.

Unterdessen hatte ich eine geniale :-) Idee für einen anderen Ansatz.
Ich weiss, dass Du das Script selber entwickeln willst. Deshalb nachstehend eine Steilvorlage in Form einer Outline.

Als Code nur so wenig: Damit die Reihenfolge der Rahmen stimmt, muss die Schleife auf jeder Seite rückwärts laufen:

Code
if (_seite.textFrames.length > 0) { 
for (var j=_seite.textFrames.length-1; j>-1; j--) {

1. Einen Array vorbereiten, um die Musterseiten-Namen zu speichern.
2. Eine Schleife durch die Seiten, von der ersten bis zur letzten.
3. Auf jeder Seite eine Rückwärtschleife durch die Textrahmen.
4. Jeden Rahmen auf Übersatz prüfen; falls notwendig, den Rahmen an den Inhalt anpassen.
5. Bei jedem Rahmen die Anzahl Zeilen holen.
6. Mithilfe eines Zählers feststellen, wann eine Seite "voll" ist und den Musterseiten-Namen an den Array hängen.
7. Bei jedem Rahmen am Schluss der Textkette ein Rahmenumbruch-Zeichen einfügen.
8. Wenn alle Seiten durch sind, die Textrahmen von der ersten bis zur letzten Seite verketten.
9. Alle Seiten entfernen; nur die erste nicht.
10. Aufgrund des Arrays die notwendige Anzahl Seiten einfügen.
11. Wieder eine Schleife durch die Seiten und bei jeder die im Array notierte Musterseite zuweisen.
12. Alle Musterseiten-Objekte aller Seiten übergehen.
13. Alle Textrahmen der Reihe nach verketten (ausser Titelrahmen und Seitennummer).

So sollte es klappen. Aber hoffentlich hat jemand eine viel bessere Lösung.

Gruss, Hans


als Antwort auf: [#525754]

Anzahl von TextFrames auf einer Seite

Stefan Dpunkt
Beiträge gesamt: 12

2. Apr 2014, 16:58
Beitrag # 5 von 34
Beitrag ID: #525811
Bewertung:
(6896 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Zusammen.

ich bin ein Stückchen weiter gekommen, jetzt wird es wohl an mangelndem Fachwissen liegen, dass ich nicht weiter komme.
Ab Punkt 7 verstehe ich nur Hbf!

Kann mir dabei einer helfen!


als Antwort auf: [#525778]

Anzahl von TextFrames auf einer Seite

Kai Rübsamen
Beiträge gesamt: 4684

2. Apr 2014, 17:17
Beitrag # 6 von 34
Beitrag ID: #525813
Bewertung:
(6887 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

es ist schwierig Hans Erläuterungen zu folgen, wenn man das Beispiel nicht hat. Auch erschließt sich mir nicht, was das Zuweisen von verschiedenen Musterseiten mit dem Vorhandensein von entweder zwei oder drei Rahmen auf den Dokumentseiten zu tun hat.

Auch nicht klar: Versuchst du jetzt die Datenzusammenführung über ein Skript zu lösen oder platzierst du per Datenzusammenführung 3 Objekte pro Seite (Ist) und das Skript soll das dann wieder umverteilen (Soll)?

Falls du das Beispiel zur Verfügung stellst, könnten wir hier zumindest mal gemeinsam Hans Schritte nachbauen. Bitte dann auch deinen aktuellen Stand des Skripts zur Verfügung stellen.

Ansonsten vielleicht auch interessant: http://indesignsecrets.com/...-flow-in-a-story.php


als Antwort auf: [#525811]
(Dieser Beitrag wurde von Kai Rübsamen am 2. Apr 2014, 17:18 geändert)

Anzahl von TextFrames auf einer Seite

Hans Haesler
  
Beiträge gesamt: 5826

2. Apr 2014, 19:44
Beitrag # 7 von 34
Beitrag ID: #525821
Bewertung:
(6848 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ihr Beiden,

die Punkte, welche ich notiert hatte, sind nur in der Vorstellung – während einer Ausfahrt mit dem Rennrad – entstanden. Bei der Umsetzung in JavaScript-Code kommen dann garantiert fehlende Feinheiten zum Vorschein. 

Zum Beispiel macht es keinen Sinn, die Namen der Musterseiten direkt dem Array anzuhängen. Beim Ausprobieren heute Morgen sagte ich mir, dass es besser wäre, zunächst nur die Anzahl Zeilen im Array zu erfassen. Nur so kann man später vorausschauend klären, ob der nächste Rahmen noch Platz auf der Seite hat. Oder nicht.

Weil die Höhe der Textrahmen drei unterschiedliche Raster notwendig machen, glaube ich nicht, dass die Aufgabe mit einer Datenzusammenführung gelöst werden kann. Es sei denn, im von Kai erwähnten Link finde sich etwas Brauchbares. Aber ob das Script von Loic mit CS3 unter Windows funktioniert, kann ich nicht sagen.

Zu den Punkten ab dem siebten, werde ich im Laufe des Abends versuchen, Erklärungen zu liefern.

Gruss, Hans


als Antwort auf: [#525813]

Anzahl von TextFrames auf einer Seite

Hans Haesler
  
Beiträge gesamt: 5826

2. Apr 2014, 23:10
Beitrag # 8 von 34
Beitrag ID: #525825
Bewertung:
(6816 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

*****
7. Bei jedem Rahmen am Schluss der Textkette ein Rahmenumbruch-Zeichen einfügen.
*****

Die Absicht dahinter: Wenn die Rahmen beim Punkt 8 verkettet und die Seiten beim Punkt 9 entfernt werden, dann wird dadurch der Textanfang zu Beginn jedes Rahmens gewährleistet. 

Per Script geschieht das so:

Code
_tf.parentStory.insertionPoints[-1].contents = SpecialCharacters.FRAME_BREAK; 

In der Textkette (= 'parentStory') des Textrahmens _tf wird dem Inhalt (= contents) des letzten (= -1) Einfügepunkts (= insertionPoints) das spezielle Zeichen "Rahmenumbruch" (= FRAME.BREAK) zugewiesen.

Als ganzes Snippet:

Code
var _dok = app.activeDocument; 
var _alleSeiten = _dok.pages;

for (var i = 0; i < _alleSeiten.length; i++) {
var _seite = _alleSeiten[i];
if (_seite.textFrames.length > 0) {
for (var j=_seite.textFrames.length-1; j>-1; j--) {
var _tf = _seite.textFrames[j];
_tf.parentStory.insertionPoints[-1].contents = SpecialCharacters.FRAME_BREAK;
}
}
}

Die Schleife muss dabei nicht unbedingt rückwärts laufen. 
Das eingefügte Zeichen ist kaum sichtbar. Es wird manuell mit Shift + Enter erzeugt.

*****
8. Wenn alle Seiten durch sind, die Textrahmen von der ersten bis zur letzten Seite verketten.
*****

Die Absicht dahinter: Wenn beim Punkt 9 die Seiten entfernt werden, dann bleibt der gesamte Text in den Rahmen der ersten Seite erhalten.

Per Script geschieht das so:

Code
var _dok = app.activeDocument; 
var _alleSeiten = _dok.pages;

for (var i=0; i<_alleSeiten.length; i++) {
var _seite = _alleSeiten[i];
if (_seite.textFrames.length > 0) {
for (var j=_seite.textFrames.length-1; j>0; j--) {
var _tf = _seite.textFrames[j];
_tf.nextTextFrame = _seite.textFrames[j-1];
}
}
try {
_seite.textFrames[0].nextTextFrame = _alleSeiten[i+1].textFrames[-1];
}
catch (e) {
}
}


*****
9. Alle Seiten entfernen; nur die erste nicht.
*****

Per Script geschieht das so:

Code
_dok.pages.itemByRange(1, -1).remove(); 

Mit 'itemByRange' wird der Seitenbereich angegeben. In den Klammern stehen die Werte von, bis. Die 1 ist die Seite 2, das -1 steht für die letzte Seite. Und 'remove()' ist die Methode zum Entfernen der definierten Objekte.

Soviel für den Moment.

Gruss, Hans


als Antwort auf: [#525821]

Anzahl von TextFrames auf einer Seite

Hans Haesler
  
Beiträge gesamt: 5826

3. Apr 2014, 10:15
Beitrag # 9 von 34
Beitrag ID: #525835
Bewertung:
(6767 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Achtung: Die folgenden Snippets sind für CS3 gedacht. Nicht alle sind mit CS5 (und höher) lauffähig.
Ich hatte sie zwar nur mit CS5 getestet. Mit CS3 hätte ich "UltraEdit" nicht zur Verfügung.

*****
9a. Ein nicht vorgesehener Zwischenschritt.
*****

Auf der ersten Seite dem ersten Textrahmen ein Etikett geben und alle anderen Rahmen entfernen.

Code
var _dok = app.activeDocument; 

// dem ersten Textrahmen ein Label verpassen
_dok.pages[0].textFrames[-1].label = "Text 0";

// mit einer Rückwärtschleife die anderen Objekte entfernen
var _alleRahmen = _dok.pages[0].pageItems;
for (var n=_alleRahmen.length-1; n>-1; n--) {
if (_alleRahmen[n].label != "Text 0") {
_alleRahmen[n].remove();
}
}

Jetzt enthält der einzige Textrahmen auf der ersten Dokumentseite den gesamten Text.

*****
10. Aufgrund des Arrays die notwendige Anzahl Seiten einfügen.
*****

Wenn sich im Array z.B. 7 Musterseiten-Namen befinden, dann fügen wir 6 (eine weniger) ein.
Der Array wird natürlich anders erzeugt. Aber damit das Snippet lauffähig ist, wird er hier so definiert.

Code
var _dok = app.activeDocument; 
var _masterArray = ["C-3", "A-1", "C-3", "D-2", "C-3", "A-1", "C-3"];

for (var p=0; p<_masterArray.length-1; p++) {
_dok.pages.add();
}

*****
11. Wieder eine Schleife durch die Seiten und bei jeder die im Array notierte Musterseite zuweisen.
*****

Und nochmals benutzen wir den Dummy-Array:

Code
var _dok = app.activeDocument; 
var _alleSeiten = _dok.pages;
var _masterArray = ["C-3", "A-1", "C-3", "D-2", "C-3", "A-1", "C-3"];

for (var p=0; p<_alleSeiten.length; p++) {
_alleSeiten[p].appliedMaster = _dok.masterSpreads.itemByName(_masterArray[p]);
}

*****
12. Alle Musterseiten-Objekte aller Seiten übergehen.
*****

Wenn auf den Musterseiten die Bild- und Textrahmen mit einem Label versehen sind, können Rahmen wie jener der Rubrik und der Pagina ausgeschlossen werden.

Code
var _dok = app.activeDocument; 
var _alleSeiten = _dok.pages;

for (p=0; p<_alleSeiten.length; p++) {
var _allObjects = _alleSeiten[p].masterPageItems;
for (n=0; n<_allObjects.length; n++) {
if (_allObjects[n].label != "") {
_allObjects[n].override(_alleSeiten[p]);
}
}
}

Mit anderen Worten: Nur wenn das Label eines Musterobjekts (_allObjects[n].label) nicht leer ist (!= ""), wird es übergangen.

*****
12a. Nochmals ein nicht vorgesehener Zwischenschritt
*****

Der erste Textrahmen "Text 1" auf der ersten Seite wird entfernt.
Der "alte" Textrahmen "Text 0" wird in "Text 1" umbenannt (nur der Form halber).

Code
var _dok = app.activeDocument; 

_dok.pages[0].textFrames.itemByName("Text 1").remove();
_dok.pages[0].textFrames.itemByName("Text 0").label = "Text 1";

*****
13. Alle Textrahmen der Reihe nach verketten (ausser Titelrahmen und Seitennummer).
*****

Bedingung: Auf den Musterseiten müssen die Rahmen in der "richtigen" Reihenfolge erzeugt worden sein.

Code
var _dok = app.activeDocument; 
var _alleSeiten = _dok.pages;

for (var i=0; i<_alleSeiten.length; i++) {
var _seite = _alleSeiten[i];
if (_seite.textFrames.length > 1) {
for (var j=0; j<_seite.textFrames.length-1; j++) {
var _tf = _seite.textFrames[j];
_tf.nextTextFrame = _seite.textFrames[j+1];
}
}
try {
_seite.textFrames[-1].nextTextFrame = _alleSeiten[i+1].textFrames[0];
}
catch (e) {
}

*****
14. Aufräumen
*****

Auf gewissen Seiten wird ein (oder zwei) Text- und Bildrahmen zuviel vorhanden sein.
Wenn beim Erstellen des _masterArray parallel ein zweiter Array mit der Anzahl der Textrahmen pro Seite bestückt wurde, kann diese Aufgabe auch per Script erledigt werden.

*****
Natürlich sind alle Bildrahmen leer. Deshalb der Zweifel, ob die Datenzusammenführung geeignet ist.

Gruss, Hans


als Antwort auf: [#525825]

Anzahl von TextFrames auf einer Seite

Stefan Dpunkt
Beiträge gesamt: 12

3. Apr 2014, 15:56
Beitrag # 10 von 34
Beitrag ID: #525854
Bewertung:
(6719 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Zusammen.
Soooooo, der Hans hat es jetzt geschafft und hat mich völlig verwirrt.

Das ist mein aktuellster Stand!

Code
/******* 
init
*******/
// das aktuelle Dokument
var _dok = app.activeDocument;

// alle Seiten
var _alleSeiten = _dok.pages;

// alle Musterseiten
var _alleMusterseiten = _dok.masterSpreads;

/*******
action
*******/
// alle TextFrames anpassen (ALT-STRG-C)
// app.documents[0].textFrames.everyItem().fit(FitOptions.frameToContent);

// eine Schleife durch die Musterseiten
for (var i = 0; i < _alleMusterseiten.length; i++)
{
var _curMspread = _alleMusterseiten[i];

// der Name der aktuellen Musterseite
var _mSpreadName = _curMspread.name;
var _aSpreadName = [_mSpreadName];
}

// eine Schleife durch alle Seiten
for (var i=0; i<_alleSeiten.length; i++)
{
var _seite = _alleSeiten[i];
if (_seite.textFrames.length > 1)
{
for (var j=0; j<_seite.textFrames.length-1; j++)
{
var _tf = _seite.textFrames[j];
_tf.parentStory.insertionPoints[-1].contents = SpecialCharacters.FRAME_BREAK;
_tf.nextTextFrame = _seite.textFrames[j+1];
}
}
try
{
_seite.textFrames[-1].nextTextFrame = _alleSeiten[i+1].textFrames[0];
}
catch (e) {}
}
_dok.pages.itemByRange(1, -1).remove()

// dem ersten Textrahmen ein Label verpassen
_dok.pages[0].textFrames[-1].label = "Text 0";

// mit einer Rückwärtschleife die anderen Objekte entfernen
var _alleRahmen = _dok.pages[0].pageItems;
for (var n=_alleRahmen.length-1; n>-1; n--)
{
if (_alleRahmen[n].label != "Text 0")
{
_alleRahmen[n].remove();
}
}
var _masterArray = ["C-3", "A-1", "C-3", "D-2", "C-3", "A-1", "C-3"];

for (var p=0; p<_masterArray.length-1; p++)
{
_dok.pages.add();
}

for (var p=0; p<_alleSeiten.length; p++)
{
_alleSeiten[p].appliedMaster = _dok.masterSpreads.itemByName(_masterArray[p]);
}
for (p=0; p<_alleSeiten.length; p++)
{
var _allObjects = _alleSeiten[p].masterPageItems;
for (n=0; n<_allObjects.length; n++)
{
if (_allObjects[n].label != "")
{
_allObjects[n].override(_alleSeiten[p]);
}
}
}

_dok.pages[0].textFrames.itemByName("Text 1").remove();
_dok.pages[0].textFrames.itemByName("Text 0").label = "Text 1";



als Antwort auf: [#525835]

Anzahl von TextFrames auf einer Seite

Hans Haesler
  
Beiträge gesamt: 5826

3. Apr 2014, 20:08
Beitrag # 11 von 34
Beitrag ID: #525863
Bewertung:
(6687 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

das nimmt Form an ... :-)

Aber: Um der vorher von Dir gemeldeten Fehlermeldung auf den Grund zu gehen, habe ich in Zeile 48 ein 'exit()' eingefügt und das Script ausgeführt. Nach dem Stopp die Verkettungen anzeigen lassen: Die waren wild durcheinander.

Die Ursache: Im ersten Dokument, welches Du mir geschickt hast, waren die Textrahmen in der Z-Achse umgekehrt geschichtet. So wie es vermutlich die Datenzusammenführung produziert.

Greife bitte auf ein Dokument zurück, welches datenzusammengeführt wurde und teste das Script erneut. Sehr wahrscheinlich musst Du dann in Zeile 39 ...

Code
_tf.nextTextFrame = _seite.textFrames[j+1]; 

... anstelle des Pluszeichens wieder "mein" Minuszeichen setzen: [j-1]

Mit einem automatisch aufgebauten Dokument, welches so einfach ist, wie das vorliegende, kann man sich das aufwendige Ermitteln und Sortieren der Positions-Werte ersparen.

Die Schleife durch die Musterseiten (Zeilen 20 bis 27) ist nicht notwendig.

Noch nicht gelöst ist das Auflisten der zuzuweisenden Musterseiten-Namen. Dieser Array kann nicht – so wie im Snippet gezeigt und von Dir in Zeile 62 übernommen – hard-gecodet eingefügt werden. Man muss ihn dynamisch zusammenstellen.

Also: Die Zeile 17 entkommentieren, damit kein Textrahmen mehr Übersatz hat. Nur so kann man in jedem Rahmen die Zeilen zählen lassen und das Ergebnis fortlaufend einem Array anfügen.

Anschliessend muss man diesen Array durchgehen, die Zahlen auswerten und vorauschauend entscheiden, welcher Musterseiten-Name an den Array '_masterArray' angefügt werden soll.

Und noch etwas: Es wird sich keiner aufraffen und versuchen, ein Testdokument zu konstruieren. Folglich werden wir keine Hilfestellung von Dritten bekommen.

Gruss, Hans


als Antwort auf: [#525854]

Anzahl von TextFrames auf einer Seite

Hans Haesler
  
Beiträge gesamt: 5826

4. Apr 2014, 07:14
Beitrag # 12 von 34
Beitrag ID: #525871
Bewertung:
(6645 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

um die Bilder zu "retten", folgende Idee: Bevor die Seiten entfernt werden, die Bildpfade in einen Array geben.

*****
8a. Die Bildpfade auflisten
*****

Die Laufrichtung der inneren Schleife muss der Z-Achsen-Schichtung entsprechen.

Code
var _dok = app.activeDocument; 
var _alleSeiten = _dok.pages;
var _bilderArray = new Array ();

for (var i=0; i<_alleSeiten.length; i++) {
var _seite = _alleSeiten[i];
for (var j=_seite.rectangles.length-1; j>-1; j--) {
try {
var _pp = _seite.rectangles[j].graphics[0].itemLink.filePath;
_bilderArray.push(_pp);
}
catch (e) {
_bilderArray.push("");
}
}
}

Dann können die Bilder am Schluss wieder plaziert werden, nachdem auf gewissen Seiten der (die) überzählige(n) Rahmen entfernt wurden.

Gruss, Hans


als Antwort auf: [#525863]

Anzahl von TextFrames auf einer Seite

Uwe Laubender
Beiträge gesamt: 5318

4. Apr 2014, 10:07
Beitrag # 13 von 34
Beitrag ID: #525879
Bewertung:
(6610 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Hans!
Ich konnte bereits etwas Erfahrung mit DataMerge und Scripting sammeln.

Nur soviel dazu:

Die zeitliche Reihenfolge, in der die Textrahmen bei einem Merge erzeugt werden, kann durchaus etwas beliebig ausfallen. Auch die Reihenfolge der IDs der Textrahmen kann nicht unbedingt als eine verlässliche Größe für deren geometrische Reihenfolge (Positionierung) dienen.

Ich bin da gewissermaßen ein gebranntes Kind.

Die einzige Verlässlichkeit, ohne eine Kontrollstruktur mit zB. einer fortlaufenden Ziffer im CSV einzuführen, ist die geometrische Anordnung, die sich letztlich nach dem Merge ergibt.


als Antwort auf: [#525871]

Anzahl von TextFrames auf einer Seite

Hans Haesler
  
Beiträge gesamt: 5826

4. Apr 2014, 10:37
Beitrag # 14 von 34
Beitrag ID: #525881
Bewertung:
(6601 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Uwe!

danke für Deinen Einwurf!

Nun, im Beispieldokument von Stefan sind die Rahmen schön regelmässig geschichtet.

Sollte es sich aber herausstellen, dass es Unregelmässigkeiten gibt, könnte ich eine Sortierung der Rahmen liefern. Hatte ich kürzlich gescriptet.

Gruss, Hans


als Antwort auf: [#525879]

Anzahl von TextFrames auf einer Seite

Uwe Laubender
Beiträge gesamt: 5318

4. Apr 2014, 11:30
Beitrag # 15 von 34
Beitrag ID: #525887
Bewertung:
(6580 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Hans!

Ja. Ich hatte die (negative) Erfahrung bei einem Merge gemacht, der etliche Hundert CSV-Zeilen umfasste. Wollte die Reihenfolge nach den IDs der erzeugten Rahmen festlegen (also zeitliche Reihenfolge). Das ging gründlich in die Hose.

Müsste aber noch mal überprüfen, ob die Index-Reihenfolge eine verlässliche Größe darstellt. Wobei sich das eine aus dem anderen ergeben sollte. Kann mich da aber auch irren.


als Antwort auf: [#525881]
X