[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Tabellenzeilen teilen

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

Tabellenzeilen teilen

dschmutzi
Beiträge gesamt: 30

8. Nov 2010, 13:29
Beitrag # 1 von 31
Bewertung:
(7180 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, ich habe das Problem eine Tabelle, die über etliche Seiten geht trennen zu müssen.

Ich muss das tun, weil die Tabellenzeilen unterschiedlich hoch sind, aber den Satzspiegel komplett ausfüllen müssen.

Ich erstelle dafür eine formatierte Tabelle, deren Zeilen ich dann gerne über ein Skript in einzelne Tabellen tauschen würde, um die Tabellen dann vertikal im Textrahmen austreiben zu können.

Zum Beispiel:
Am Anfang habe ich eine Tabelle mit drei Zeilen.
Das Skript macht drei Tabellen mit je einer Zeile draus.

Kann mir jemand helfen?
MfG
dschmutzi
spitzer@inpuncto-bonn.de
X

Tabellenzeilen teilen

SamiSalami
Beiträge gesamt: 66

8. Nov 2010, 15:34
Beitrag # 2 von 31
Beitrag ID: #456270
Bewertung:
(7149 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo :-)

Also leider sind deine Anforderungen so zu unspezifisch.
Mach dir nochmal über folgende Fragen Gedanken:

- Soll immer eine Zeile zu einer Tabelle werden oder variiert diese Anzahl?
- Wie verhält es sich mit der Satzhöhe? Sollen die Tabellen auf diese gebracht werden und wenn an welcher Stelle (welche Zeile)?
- Welche Einschränkungen gibt es? (wann darf nicht gesplittet werde)

Liebe Grüße,
Sami


als Antwort auf: [#456251]

Tabellenzeilen teilen

dschmutzi
Beiträge gesamt: 30

9. Nov 2010, 08:58
Beitrag # 3 von 31
Beitrag ID: #456334
Bewertung:
(7123 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Sami,
danke schonmal für die Mühe.

- Ja, immer eine Zeile der Ursprungstabelle soll eine neue Tabelle werden (Sinn der ganzen Aktion ist ja den vertikalen Keil zwischen den Absätzen mit den einzelnen neuen Tabellen ausnutzen zu können.)

- Die Satzhöhe sollte sich aus den verwendeten Formaten ergeben. (Absatzformate, Zeichneformate, Zellenformate, Tabellenformate).

- Es wird immer gesplittet.

Vielen Dank,
D.


als Antwort auf: [#456270]

Tabellenzeilen teilen

SamiSalami
Beiträge gesamt: 66

12. Nov 2010, 14:34
Beitrag # 4 von 31
Beitrag ID: #456764
Bewertung:
(7085 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

das klingt doch schonmal gut,
nun weiß ich nicht inwiefern du schon Erfahrungen mit dem Skripting hast, aber hier ist erstmal der pseudocode-gedanke:
for alle tables {
for alle rows{
speicher zeilencontent in array;
}
}
lösche tabellen;
für array {
tabelle erstellen;
contents = array[for-counter];
}

Ich habe in diesem Moment gerade keine Zeit das zu skripten, aber vllt komme ich heute abend dazu.
Aber vllt reicht dir der Ansatz ja auch, je nach deinem Kenntnisstand.
Bzw. ist der Gedanke jetzt gutes Kanonenfutter für die anderen fleißigen Skripter hier ;-P


LG,
Sami


als Antwort auf: [#456334]

Tabellenzeilen teilen

dschmutzi
Beiträge gesamt: 30

12. Nov 2010, 14:58
Beitrag # 5 von 31
Beitrag ID: #456772
Bewertung:
(7079 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank für die Antwort, aber leider reicht mein Kenntnisstand nicht aus, um daraus ein lauffähiges Skript zu machen.
Vielen Dank im voraus,
MfG
Spitzer


als Antwort auf: [#456764]

Tabellenzeilen teilen

SamiSalami
Beiträge gesamt: 66

14. Nov 2010, 22:54
Beitrag # 6 von 31
Beitrag ID: #456913
Bewertung:
(7018 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo :-)

So ich hab das Skript soweit mir fehlt nur eine letzte Info als inDesign-Noob.
Was ist eine Story wirklich?
In meiner letzten Schleife, in der ich den Content füllen will, bin ich nun nicht sicher, ob ich für jeden Table eine neue Story habe?

Ich habs jetzt ersmtal so gebaut, aber ich habe keine Ahnung was ein Story ist und ob es wirklich sinnig ist, das jeder Table auch in einer neuen Story ist (ich weiß halt nur das Story hier der Parent ist).
Wär also toll, wenn jemand mir das nochmal erklären könnte.

Und Benutzung des jetzigen Skripts auf eigene Gefahr! (Am besten erstmal mit kleiner Datei testen, bevor dus auf was großes loslässt.)
Es ist nicht ausfürhlich getestet!
Uuund es ist etwas aufgeblasener, da beim adden eines Tables Indesign
klein vier zeilen mit je vier zellen kreiert (die müssen dann im nachhinein wieder reduziert werden).

Und ich habe wiede rmal eine nette While-Schleife,
da Indesign ja mit keinem ordentlich Key für die Objekte aufwartet
und somit jeder Versuch mit einer For-Schleife per Index zu löschen scheitert (Index ist auch n Count und geht runter).

Naja probiers mal aus!
Falls n Fehler kommt, komplette Meldung posten.
Schließe zur Sicherheit alle Dokumente außer dem Testdokument,
falls Indesign abstürzt!

Code
var myDoc = app.activeDocument; 
var myStories = myDoc.stories;
var myDeleteIndex = new Array();
var myCellContents = new Array();

for ( var storyCount = 0; storyCount < myStories.length; storyCount++ ){

var myTables = myStories[storyCount].tables;
for ( var tableCount = 0; tableCount < myTables.length; tableCount++ ){

myDeleteIndex[tableCount] = myTables[tableCount].index;
var myRows = myTables[tableCount].rows;

for ( var rowCount = 0; rowCount < myRows.length; rowCount++ ){

var myCells = myRows[rowCount].cells;
var myCellContent = "";
for ( var cellCount = 0; cellCount < myCells.length; cellCount++ ){

myCellContent = myCellContent+ myCells[cellCount].contents;

}
myCellContents[rowCount] = myCellContent;

}

}

}



while ( myDeleteIndex.length > 0 ){

if (myTables[myDeleteIndex] != null) {

myTables[myDeleteIndex].remove();

}
else {

break;

}
if ( myDeleteIndex.length == 0 ){

break;

}

}



for ( var createCount = 0; createCount < myCellContents.length; createCount++ ){

var myTable = myStories[0].tables.add();
myTable.bodyRowCount = 1;
var myRow = myTable.rows[0];
myRow.merge();

if ( myCellContents[createCount] != null && myCellContents[createCount] != "" ){

myRow.contents = myCellContents[createCount];

}
else {

break;

}

}



als Antwort auf: [#456772]

Tabellenzeilen teilen

WernerPerplies
Beiträge gesamt: 2709

15. Nov 2010, 06:34
Beitrag # 7 von 31
Beitrag ID: #456920
Bewertung:
(6995 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Sami,

schau Dir mal IDML-Dateien verschiedener InDesign-Dateien an, da kannst Du Dir Stories ansehen.

Das ersetzt natürlich keine theoretische Abhandlung, aber mir hat es geholfen.


als Antwort auf: [#456913]

Tabellenzeilen teilen

dschmutzi
Beiträge gesamt: 30

15. Nov 2010, 11:42
Beitrag # 8 von 31
Beitrag ID: #456942
Bewertung:
(6960 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo SamiSalami,
vielen Dank schonmal für deine Mühe.

Das Skript läuft ohne Fehlermeldung durch, aber leider tut es nicht das, was es tun sollte.
Die Tabelle ist äußerlich unverändert.

In der Skript-Konsole, kann man aber sehen, dass das Array mit den Daten der Tabelle gefüllt wird. Zumindest mit der letzten Zeile.

Apropos Story kann ich dir vielleicht weiterhelfen, dass die Story sozusagen der gesamte Textabschnitt ist, in der die aktuelle Tabelle steht. Man benötigt also nicht für jede Zeile eine neue Story, sondern eine Story, in der dann jede Zeile eine neue Tabelle, durch ein Absatzende von der nächsten Zeile getrennt, enthält.
Ich hoffe das ist so verständlich.

Vielen Dank nochmal für die Hilfe.
MfG
Spitzer


als Antwort auf: [#456913]

Tabellenzeilen teilen

SamiSalami
Beiträge gesamt: 66

15. Nov 2010, 17:53
Beitrag # 9 von 31
Beitrag ID: #456997
Bewertung:
(6935 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hmm, das kann ich mir so nicht erklären,
Bei mir funktioniert es!
Magst du mir eine Testdatei anhängen,
Die den Bedingungen deiner inDesign-Dateien entspricht?

Liebe Grüße,
Sami


als Antwort auf: [#456942]

Tabellenzeilen teilen

dschmutzi
Beiträge gesamt: 30

16. Nov 2010, 09:18
Beitrag # 10 von 31
Beitrag ID: #457026
Bewertung:
(6893 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
gerne würde ich Ihnen die Datei zusenden, ich habe aber Ihre Mail-Adresse nicht und der Upload funktioniert bei mir nicht.

Bei der Indesign Datei handelt es sich um eine CS3 Datei, die im oberen Bereich ein kleines Beispiel einer zu ändernden Tabelle hat und im unteren Bereich den Textabschnitt mit den Tabellen, so wie sie nachher aussehen sollten.

MfG
Spitzer


als Antwort auf: [#456997]

Tabellenzeilen teilen

Ralf Hobirk
Beiträge gesamt: 5957

16. Nov 2010, 10:20
Beitrag # 11 von 31
Beitrag ID: #457044
Bewertung:
(6878 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

Antwort auf: der Upload funktioniert bei mir nicht

http://www.hilfdirselbst.ch/...m.cgi?do=membership;


als Antwort auf: [#457026]

Tabellenzeilen teilen

SamiSalami
Beiträge gesamt: 66

16. Nov 2010, 11:18
Beitrag # 12 von 31
Beitrag ID: #457063
Bewertung:
(6861 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo :-)
Du kannst mir die Datei an folgende Email-Adresse schicken:
samjessa.lewy@yahoo.de

Liebe Grüße,
Sami


als Antwort auf: [#457026]

Tabellenzeilen teilen

SamiSalami
Beiträge gesamt: 66

17. Nov 2010, 15:38
Beitrag # 13 von 31
Beitrag ID: #457261
Bewertung:
(6806 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich werde wohl erst am Freitag wieder dazukommen, mich weiter mit dem Skript zu beschäftigen.

Falls jemand Anmerkungen hat oder sich mit dem Skript auseinandersetzt hier mal Grund und ToDos:

Stories sind markierte Textabschnitte - meines Wissens nach (wenns jemand besser weiß, bitte schreien) - und daher hier der komplett falsche Ansatz.

- Tables müssen über Textframes gesammelt werden
- Größe und Position der Texframes muss im Array gespeichert werden
- Dann neuer Table in neuem Textframe in gespeicherter Größe an gespeichertem Ort
- und was sonst noch so buggy sein könnte

Liebe Grüße,
Sami


als Antwort auf: [#457063]

Tabellenzeilen teilen

SamiSalami
Beiträge gesamt: 66

21. Nov 2010, 13:34
Beitrag # 14 von 31
Beitrag ID: #457643
Bewertung:
(6732 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo :-)

Ich bin leider das ganze Wochenende am Arbeiten,
werd mich aber definitiv noch dransetzen (heut abend hoffentlich).


als Antwort auf: [#457261]

Tabellenzeilen teilen

SamiSalami
Beiträge gesamt: 66

29. Nov 2010, 14:24
Beitrag # 15 von 31
Beitrag ID: #458229
Bewertung:
(6595 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
So tut mir leid, wegen der lange Wartezeit, aber es ging leider nicht eher :-)

Probier das mal aus:
Ich hatte jetzt gerad mal Zeit, das mit den TextFrames fertig zu machen.
Am Besten du fasst gleich zusammen,
was du anders brauchst (wenns denn bei dir auch geht).

Code
var myDoc = app.activeDocument;  
var myTextFrames = myDoc.textFrames;
var myDeleteIndex = new Array();
var myCellContents = new Array();
var myBounds = new Array();


// Get Tables
for ( var textframeCount = 0; textframeCount < myTextFrames.length; textframeCount++ ){

var myTables = myTextFrames[textframeCount].tables;
if (myTables != null){

for ( var tableCount = 0; tableCount < myTables.length; tableCount++ ){

myDeleteIndex[tableCount] = myTables[tableCount].index;
var myRows = myTables[tableCount].rows;

for ( var rowCount = 0; rowCount < myRows.length; rowCount++ ){

var myCells = myRows[rowCount].cells;
var myCellContent = "";
for ( var cellCount = 0; cellCount < myCells.length; cellCount++ ){

myCellContent = myCellContent+ myCells[cellCount].contents;

}
myCellContents[rowCount] = myCellContent;
myBounds[rowCount] = myTextFrames[textframeCount].geometricBounds;
}

}

}
else {
break;
}
}

// Delete Tables
while ( myDeleteIndex.length > 0 ){
if (myTables.anyItem(myDeleteIndex[myDeleteIndex.length]) != null) {

myTables.anyItem(myDeleteIndex[myDeleteIndex.length]).remove();

}
else {

break;

}
if ( myDeleteIndex.length == 0 ){

break;

}

}


// Create tables
var myTextFrame = myDoc.textFrames.add();
for ( var createCount = 0; createCount < myCellContents.length; createCount++ ){
var myTable = myTextFrame.tables.add();
myTable.bodyRowCount = 1;
var myRow = myTable.rows[0];
myRow.merge();

if ( myCellContents[createCount] != null && myCellContents[createCount] != "" ){

myRow.contents = myCellContents[createCount];
myTextFrame.geometricBounds = myBounds[createCount];

}
else {

break;

}


}


Liebe Grüße,
Sami


als Antwort auf: [#456251]
X