[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Anzahl der Textzeilen aus einer Tabellenzeile auslesen

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

Anzahl der Textzeilen aus einer Tabellenzeile auslesen

dont_panic
Beiträge gesamt: 141

2. Jul 2014, 16:57
Beitrag # 1 von 18
Bewertung:
(5104 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich möchte gern die Anzahl der Textzeilen aus einer Tabellenzelle auslesen, um der Zelle danach eine bestimmte Höhe zu geben.

Leider habe ich den Parameter dafür bis jetzt nicht gefunden.

MacOS 10.8, Indesign CS 6

Vielen Dank für Eure Hilfe
X

Anzahl der Textzeilen aus einer Tabellenzeile auslesen

ToniMontanaa
Beiträge gesamt: 426

3. Jul 2014, 09:38
Beitrag # 2 von 18
Beitrag ID: #529198
Bewertung:
(5043 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

warum lässt du nicht InDesign die Höhe automatisch ermitteln indem du bei der Einstellung der Tabellenhöhe nicht den Wert Genau sondern Mindestens nimmst?

Bin ein absoluter Skript-Anfänger aber das lässt sich glaub irgendwie über autoGrow = true anwenden...


Gruß Stefan


als Antwort auf: [#529173]

Anzahl der Textzeilen aus einer Tabellenzeile auslesen

dont_panic
Beiträge gesamt: 141

3. Jul 2014, 12:09
Beitrag # 3 von 18
Beitrag ID: #529225
Bewertung:
(5016 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

die Guidelines geben exakte Werte vor für 1, 2 usw. Textzeilen vor. Daher muss ich wissen, wieviel Textzeilen in der Zelle sind.


Trotzdem Danke


als Antwort auf: [#529198]

Anzahl der Textzeilen aus einer Tabellenzeile auslesen

ToniMontanaa
Beiträge gesamt: 426

3. Jul 2014, 12:28
Beitrag # 4 von 18
Beitrag ID: #529228
Bewertung:
(5002 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Im Normalfall ist es ja so das sich die Zellhöhe immer um den Zeilenabstand des Textes erhöht?
Das hieße dann, das sich die Höhe einer Zelle mit einer Textzeile aus der Schriftgröße + Oberer Zellenversatz + Unterer Zellenversatz definiert. Wenn jetzt der Zeilenabstand bspw. 3 mm beträgt wird die Zelle mit zwei Textzeilen um 3 mm höher. Und das automatisch ohne irgendwas berechnen zu müssen.

Wenn natürlich die Zellenhöhe nicht um den Zeilenabstand vergrößert werden soll geht es nicht. Macht für mich allerdings nicht viel Sinn.

Grüße
Stefan


als Antwort auf: [#529225]

Anzahl der Textzeilen aus einer Tabellenzeile auslesen

dont_panic
Beiträge gesamt: 141

3. Jul 2014, 13:00
Beitrag # 5 von 18
Beitrag ID: #529235
Bewertung:
(4978 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

nochmals danke. Es ist wirklich so, die Guidelines sehen für 1-zeilig, 2-zeilig usw. andere Werte vor, auch für den oberen und unteren Zellversatz.

Ich werde mit einem anderen Aufbau der Tabellen verswuchen, daran etwas zu ändern.

Aber gibt es wirklich keine Möglichkeit, den Wert für die Anzahl der Zeilen zu ermitteln?


als Antwort auf: [#529228]

Anzahl der Textzeilen aus einer Tabellenzeile auslesen

Kai Rübsamen
Beiträge gesamt: 4684

3. Jul 2014, 13:50
Beitrag # 6 von 18
Beitrag ID: #529248
Bewertung:
(4954 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Mir ist noch nicht klar, wie du da was auswählen u. zuweisen möchtest, aber stell mal den Cursor in eine Zelle u. teste folgendes:

Code
var curSel = app.selection[0]; 
var curCell = curSel.parent;
var cellLines = curCell.lines.length;

alert ("In dieser Zelle befinden sich " + cellLines + " Zeilen");



als Antwort auf: [#529235]

Anzahl der Textzeilen aus einer Tabellenzeile auslesen

dont_panic
Beiträge gesamt: 141

3. Jul 2014, 14:59
Beitrag # 7 von 18
Beitrag ID: #529260
Bewertung:
(4924 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

es scheint nicht zu gehen ich bekomme als Wert immer 1 zurück

Ich arbeite jetzt mit dem Überlauf, d.h. die Zeilehöhe wird so lange vergrößert, bis der Überlauf weg ist

Vielen Dank aber trotzdem


als Antwort auf: [#529248]

Anzahl der Textzeilen aus einer Tabellenzeile auslesen

Kai Rübsamen
Beiträge gesamt: 4684

3. Jul 2014, 15:06
Beitrag # 8 von 18
Beitrag ID: #529262
Bewertung:
(4909 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hubert, bei mir funktioniert das!


als Antwort auf: [#529260]

Anzahl der Textzeilen aus einer Tabellenzeile auslesen

dont_panic
Beiträge gesamt: 141

3. Jul 2014, 15:10
Beitrag # 9 von 18
Beitrag ID: #529264
Bewertung:
(4903 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

ich hatte die Zelle aktiviert, aber nicht den Cursor direkt plaziert... lesen hilft manchmal...

danke


als Antwort auf: [#529262]

Anzahl der Textzeilen aus einer Tabellenzeile auslesen

dont_panic
Beiträge gesamt: 141

8. Jul 2014, 16:55
Beitrag # 10 von 18
Beitrag ID: #529481
Bewertung:
(4783 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

mein Script zum formatieren der Tabelle funktioniert eigentlich.

ich habe jetzt noch folgendes Problem:
Habe ich z.B. 2-zeilige Elemente in einer Tabellenzeile, dann formatiert das Script im ersten Durchlauf die Zeile 3-zeilig, im zweiten Durchlauf 1-zeilig, danach wieder 3-zeilig usw.

Ich habe im ExtendScript im Debug-Modus keine Probleme gehabt. Wo könnte jetzt noch der Fehler liegen???

#target InDesign

var _dok = app.activeDocument;
var _tabelle = app.selection[0];
var _spalten = _tabelle.columnCount;
var _zeilen = _tabelle.bodyRowCount;
var _hZelle = 4.586;
var _oZelle = 1.2;
var _uZelle = 1.4;

var _zaehler = 2;


alert ("Tabelle mit "+_zeilen+" Zeilen und "+_spalten+" Spalten");

for (var z = 0; z < _zeilen; z++)
{
_hZelle = 4.586;
_oZelle = 1.2;
_uZelle = 1.4;

_tabelle.rows[z].height = _hZelle;
_tabelle.rows[z].topInset = _oZelle;
_tabelle.rows[z].bottomInset = _uZelle;

_zaehler = 2;
while (_tabelle.rows[z].overflows)
{
_zaehler++;

switch (_zaehler)
{

case 2:

_hZelle = 9.172;
_oZelle = 1.2;
_uZelle = 1.9;

break;

case 3:

_hZelle = 13.758;
_oZelle = 1.2;
_uZelle = 2.4;

break;
}
_tabelle.rows[z].height = _hZelle;
_tabelle.rows[z].topInset = _oZelle;
_tabelle.rows[z].bottomInset = _uZelle;

}
}

alert("fertig");


als Antwort auf: [#529264]

Anzahl der Textzeilen aus einer Tabellenzeile auslesen

dont_panic
Beiträge gesamt: 141

10. Jul 2014, 12:35
Beitrag # 11 von 18
Beitrag ID: #529570
Bewertung:
(4728 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich habe das Script komplett umgebaut, eigentlich sollte es dafür sorgen, das Tabellenzeilen auf eine bestimmte Höhe gesetzt werden.

Aber wenn mehr als 2 Textzeilen in einer Zelle sind, ist nach der Abarbeitung die Tabellenzeile nur 1 Zeile hoch, starte ich dann das Script wieder, dann hat die Tabellenzeile plötzlich eine Zeile mehr...

Wo könnte der Denkfehler liegen??

#target InDesign

var _dok = app.activeDocument;
var _tabelle = app.selection[0];
var _spalten = _tabelle.columnCount;
var _zeilen = _tabelle.bodyRowCount;

var _arrayHZelle = [4.586,9.172,13.758,18.344,22.931];
var _arrayOZelle = [1.2,1.2,1.2,1.2,1.2];
var _arrayUZelle = [1.4,1.9,2.4,3,3.7];

var _zaehler = 0;

alert ("Tabelle mit "+_zeilen+" Zeilen und "+_spalten+" Spalten");

for (var z = 0; z < _zeilen; z++)
{

_zaehler = 0;

_tabelle.rows[z].height = _arrayHZelle[_zaehler];
_tabelle.rows[z].topInset = _arrayOZelle[_zaehler];
_tabelle.rows[z].bottomInset = _arrayUZelle[_zaehler];

while (_tabelle.rows[z].overflows)
{
_zaehler++;

if (_zaehler > _arrayHZelle.length)
{
alert("Die Werte für "+_zaehler+" Zeilen sind nicht definiert!");
break;
}

_tabelle.rows[z].height = _arrayHZelle[_zaehler];
_tabelle.rows[z].topInset = _arrayOZelle[_zaehler];
_tabelle.rows[z].bottomInset = _arrayUZelle[_zaehler];

}

}

alert("fertig");


als Antwort auf: [#529481]

Anzahl der Textzeilen aus einer Tabellenzeile auslesen

Kai Rübsamen
Beiträge gesamt: 4684

10. Jul 2014, 14:51
Beitrag # 12 von 18
Beitrag ID: #529582
Bewertung:
(4704 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hubert,

ich hatte gestern Abend schon mal angefangen, mir deine Zeilen ins ESTK zu kopieren. Da du meinen Rat mit dem Zählen der lines nicht befolgt hast und ich nicht verstanden habe, was du da jetzt mit Übersatz und diesem Zähler machst, hab ich das ESTK wieder zugemacht.

Anderen Lesern geht es möglicherweise genauso ;-)

Stell doch bitte ein Beispieldokument vorher / nachher zur Verfügung. Falls das alleine nicht reicht, erkläre bitte genau, was du da wie haben möchtest, am besten in Aufzählungsform.


als Antwort auf: [#529570]

Anzahl der Textzeilen aus einer Tabellenzeile auslesen

dont_panic
Beiträge gesamt: 141

10. Jul 2014, 16:28
Beitrag # 13 von 18
Beitrag ID: #529589
Bewertung:
(4675 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

ich versuche, das Problem und meinen Lösungsansatz mal besser zu beschreiben. Ich hatte ja in der Zwischenzeit mein Script erheblich minimiert mit einem anderen Ansatz.



Es werden Excel-Tabelle im Indesign platziert und danach mit Tabellenstil inkl. Zellenstilen formatiert.

Abhängig von der Zeilenzahl in einer Zelle ergeben sich feste Werte für die Höhe der gesamten Tabellenzeile und den Abstand von oben und von unten.

Für die Formatierung der Tabellenzeilen habe ich ein Script geplant, was bis jetzt nicht ganz fehlerfrei funktioniert.


Mit meinen Erfahrungen im Scripten bin ich noch am Anfang.
@Kai: Ich habe versucht, die Idee Deiner Code-Zeilen zu nutzen, aber konnte es dann doch nicht fertigdenken


So habe ich es jetzt geplant.

– Auslesen der Anzahl der Zeilen
– FOR-Schleife, wo ich Zeile für Zeile durch die Tabelle gehe
– in der FOR-Schleife wird die Tabellenzeile auf 1-zeilig gesetzt mit den vorgegebenen Werten aus dem Array
– Jetzt wird durch die WHILE-Schleife ein Overflow in der Tabellenzeile abgefragt und in der WHILE-Schleife die Anzahl der Zeilen Schritt für Schritt erhöht, bis der Overflow beseitigt ist. Dafür hole ich mir die Werte aus dem Array.
– Danach bin ich wieder in der FOR-Schleife und gehe zur nächsten Tabellenzeile

– die Variable _zaehler benötige ich, um gezielt die Werte aus den Arrays zu holen



Anbei Links zum PDF bzw. INDD (CS 6)

http://fe.brandportal.de/ff7cd53da2a8f80c60e2d3ab0f7d72a1/Tabelle_script.indd

http://fe.brandportal.de/9cdba44257d2ede32916146b448fb5e7/Tabelle.pdf


Ich hoffe, ich konnte mich jetzt klarer ausdrücken.

Danke an alle, die sich durch den Text quälen ;-)


als Antwort auf: [#529582]

Anzahl der Textzeilen aus einer Tabellenzeile auslesen

Kai Rübsamen
Beiträge gesamt: 4684

10. Jul 2014, 19:29
Beitrag # 14 von 18
Beitrag ID: #529601
Bewertung:
(4640 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hubert, Kommunikation ist manchmal schwierig ;-)

1. Wo ist dein "So will ich es haben"-Beispiel? Ich / Andere? möchte(n) die finale Tabelle sehen, um viell. Abstände zu kontrollieren.

2. Warum steht in der ersten Tabelle im Übersatz 3,4, 56 und in allen anderen nicht?

3. Gibt es nur ein- und zweizeilig?

4. Warum ist dein angekündigte Formatierung im Beispiel nicht angewandt?

5. Nur nebenbei: Warum werden die Abstände zwischen den Spalten über leere schmale Spalten u. nicht einfach über eine weiße Linie gelöst?


als Antwort auf: [#529589]
(Dieser Beitrag wurde von Kai Rübsamen am 10. Jul 2014, 19:31 geändert)

Anzahl der Textzeilen aus einer Tabellenzeile auslesen

Kai Rübsamen
Beiträge gesamt: 4684

10. Jul 2014, 22:13
Beitrag # 15 von 18
Beitrag ID: #529609
Bewertung:
(4611 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich hab keine Ahnung, ob man das so macht. Aber wenn ich deine Anforderung richtig verstanden habe, funktioniert bei mir folgendes (ganze Tabelle muss markiert werden):

Code
var _dok = app.activeDocument; 
var _tabelle = app.selection[0];
var _spalten = _tabelle.columns;
var _zeilen = _tabelle.rows;

alert ( "Tabelle mit "+ _zeilen.length +" Zeilen und "+ _spalten.length +" Spalten" );

// zunächst eine pauschale Höhe und Abstände zuweisen
_zeilen.everyItem().height = 4.586;
_zeilen.everyItem().topInset = 1.2;
_zeilen.everyItem().bottomInset = 1.4;

// Die Anzahl der Textzeilen in der ersten Zelle der jeweilgen Zeile ermitteln
for ( var z = 0; z < _zeilen.length; z++ ) {
var _aktuelleZeile = _zeilen[z];
var _ersteZelle = _aktuelleZeile.cells[0];
var _zellenInhalt = _ersteZelle.texts[0];
alert( "Anzahl der Zeilen in der Zeile " + (z+1) + ": " + _zellenInhalt.lines.length );
if ( _zellenInhalt.lines.length == 2 ) {
_aktuelleZeile.height = 9.172;
_aktuelleZeile.topInset = 1.2;
_aktuelleZeile.bottomInset = 1.9;
}
else if ( _zellenInhalt.lines.length == 3 ) {
_aktuelleZeile.height = 13.758;
_aktuelleZeile.topInset = 1.2;
_aktuelleZeile.bottomInset = 2.4;
}
}



als Antwort auf: [#529601]
(Dieser Beitrag wurde von Kai Rübsamen am 10. Jul 2014, 22:21 geändert)
X