[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Jeweils letzte Zeile einer über mehrere Textrahmen reichenden Tabelle

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

Jeweils letzte Zeile einer über mehrere Textrahmen reichenden Tabelle

pixelstaub
Beiträge gesamt: 125

22. Jun 2014, 22:19
Beitrag # 1 von 8
Bewertung:
(2414 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Liebes Forum,

in einem Dokument habe ich eine Tabelle, die über zwei Textrahmen auf zwei Seiten fließt. Nun möchte ich per Script auf die jeweils letzte Tabellenzeile in den einzelnen Textrahmen zugreifen.

Code
var myDoc = app.activeDocument; 
app.selection = myDoc.pages[0].textFrames[0].tables[0].rows[-1]


– wählt die letzte Zeile der Tabelle aus (die aber auf Seite 2 statt auf Seite 1 ist).

Die einzige Möglichkeit, die mir aktuell einfällt, wäre folgende: Schauen, wie hoch der Textrahmen auf Seite 1 ist, dann die Höhe der Zellen im Textrahmen addieren und ausrechnen, wann die Tabelle umbricht. Dann hätte ich ja die letzte Zeile ermittelt.

Hat jemand eine elegantere Lösung zur Hand?

Danke im Voraus und beste Grüße aus Köln
Stephan
X

Jeweils letzte Zeile einer über mehrere Textrahmen reichenden Tabelle

Uwe Laubender
Beiträge gesamt: 4853

23. Jun 2014, 09:45
Beitrag # 2 von 8
Beitrag ID: #528703
Bewertung:
(2359 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Stephan!

Vorausgesetzt, die 1. Zelle einer jeden Tabellenzeile, die am Ende eines Textrahmens sitz, hat keinen Übersatz oder zeigt keine Tendenz zu Übersatz, wenn sie keinen Inhalt hat, dann markiert folgendes Snippet die gewünschte Tabellenzeile.

Tendenz zum Übersatz einer Zelle: Die Zelle ist mit einer festen Höhe definiert. Inhalt leer. Die definierte Punktgröße des ersten InsertionPoint aber so groß, dass die Zelle in Übersatz gehen würde, wenn Text enthalten wäre.

Die letzte Tabellenzeile in der Tabelle wird nicht markiert. Nur der Wechsel von einem zum anderen Textrahmen angezeigt.

Code
//LetzteTabellenzeileVorTextrahmenwechselMarkieren.jsx 
//Uwe Laubender

//DESCRIPTION:Markiert letzte Tabellenzelle vor Textrahmenwechsel einer ausgewählten Tabelle
/**
* @@@BUILDINFO@@@ LetzteTabellenzeileVorTextrahmenwechselMarkieren.jsx !Version! Mon Jun 23 2014 09:23:39 GMT+0200
*/

//Hier Prüfung und Definition anpassen:
if(app.selection.length == 0 || app.selection.length>1){exit()};
if(app.selection[0].constructor.name != "Table"){exit()};

var myTable = app.selection[0];

var firstCellOfEveryRow = myTable.rows.everyItem().cells[0].getElements();

var lastRowIndex = new Array();
var currentID = 0;
var nextID = 0;

for(var n=0;n<firstCellOfEveryRow.length;n++){

try{

currentID = firstCellOfEveryRow[n].insertionPoints[0].parentTextFrames[0].id;
nextID = firstCellOfEveryRow[n+1].insertionPoints[0].parentTextFrames[0].id;

//Vergleich, ob Textrahmen DIESER Zelle gleich dem Textrahmen der NÄCHSTEN Zelle.
//Falls NICHT, den lastRowIndex füttern:
if(currentID !== nextID){
lastRowIndex[lastRowIndex.length++] = n;
};

}catch(e){

//Bei Übersatz und möglichem Übersatz reagieren:
//Zellenübersatz Zelle 1, Tabellenübersatz

};

};

//Formatierung der Tabellenzeile mit FillColor "Yellow":

for(var n=0;n<lastRowIndex.length;n++){
var myLastRow = myTable.rows[lastRowIndex[n]];
myLastRow.fillColor = "Yellow";
};


Das Script prüft die ID des Textrahmens des parentTextFrames[0] des insertionPoints[0] jeder ersten Zelle in einer Zeile und der nächsten Zeile. Stellt der Vergleich einen Unterschied fest, findet ein Textrahmenwechsel statt. Dann wird der lastRowIndex gefüttert.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#528699]

Jeweils letzte Zeile einer über mehrere Textrahmen reichenden Tabelle

pixelstaub
Beiträge gesamt: 125

23. Jun 2014, 11:37
Beitrag # 3 von 8
Beitrag ID: #528709
Bewertung:
(2333 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

gute Idee ;) Danke Dir! Hatte mich anfangs gewundert, warum teilweise nicht gelb markiert wird, sah dann aber Du hast die Antwort ja bereits gegeben: "Tendenz zum Übersatz" …

Nochmals danke und beste Grüße
Stephan
---------------
http://www.pixelstaub.de/blog/
http://www.pixelstaub.de/


als Antwort auf: [#528703]

Jeweils letzte Zeile einer über mehrere Textrahmen reichenden Tabelle

Uwe Laubender
Beiträge gesamt: 4853

23. Jun 2014, 11:49
Beitrag # 4 von 8
Beitrag ID: #528711
Bewertung:
(2328 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Stephan!
Ja. Man könnte natürlich jetzt ausweichen auf die zweite Zelle dieser Tabellenzeile und durchprobieren, ob sich da ein vernünftig auslesbarer insertionPoint befindet…

Oder: die Punktgröße des insertionPoints[0] der untersuchten Zelle runtersetzen, bis die Info auslesbar ist. Oder, oder…
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#528709]
(Dieser Beitrag wurde von Uwe Laubender am 23. Jun 2014, 11:53 geändert)

Jeweils letzte Zeile einer über mehrere Textrahmen reichenden Tabelle

pixelstaub
Beiträge gesamt: 125

23. Jun 2014, 11:58
Beitrag # 5 von 8
Beitrag ID: #528713
Bewertung:
(2317 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
… alles gut!
In dem speziellen Fall haben diese letzten Zeilen (teilweise) ein spezielles Zellenformat (das Übersatz erzeugen würde, wenn in den Zellen Text stünde). Also einfach das Format geändert, schon geht’s :)

Danke und Grüße
Stephan
---------------
http://www.pixelstaub.de/blog/
http://www.pixelstaub.de/


als Antwort auf: [#528711]

Jeweils letzte Zeile einer über mehrere Textrahmen reichenden Tabelle

Headway
Beiträge gesamt: 28

24. Jun 2014, 08:20
Beitrag # 6 von 8
Beitrag ID: #528751
Bewertung:
(2209 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

welche Zeilen müssten abgeändert werden, wenn anstatt der Füllung die Zelle eine "Dashed Line ("Dashed (4 and 4), Black, Weight 0.5 pt) nur am unteren Zellenrand erzeugen soll.

Vielen Dank im voraus für eine Hinweis.

Gruß
Headway


als Antwort auf: [#528703]

Jeweils letzte Zeile einer über mehrere Textrahmen reichenden Tabelle

Uwe Laubender
Beiträge gesamt: 4853

24. Jun 2014, 12:09
Beitrag # 7 von 8
Beitrag ID: #528759
Bewertung:
(2172 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Headway!

Die einfachste Methode wäre ein Zellenformat dafür bereitzuhalten und dieses in der for-Schleife allen Zellen der Tabellenzeile zuzuweisen.

Code
for(var n=0;n<lastRowIndex.length;n++){  
var myLastRow = myTable.rows[lastRowIndex[n]];
myLastRow.cells.everyItem().appliedCellStyle = "DerNameDesZellenformatsKommtHierRein"
};


Das aber nur, wenn wechselnde Inhalte in den Zellen drin sein sollen. Falls der Inhalt immer gleich ist, ist es besser, einen Tabellenfuß der Tabelle mitzugeben.
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#528751]

Jeweils letzte Zeile einer über mehrere Textrahmen reichenden Tabelle

Headway
Beiträge gesamt: 28

24. Jun 2014, 13:36
Beitrag # 8 von 8
Beitrag ID: #528766
Bewertung:
(2144 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe!
Ja, so geht's. Vielen Dank.

Hab's im amateurhaften Selbstversuch jetzt auch ohne "Cell Style" hinbekommen.
Allerdings muss in beiden Varianten eine "Header Row" vorhanden sein, sonst wird die "Dashed Line" am Beginn der nächsten Seite oben wiederholt.

for(var n=0;n<lastRowIndex.length;n++){
var myLastRow = myTable.rows[lastRowIndex[n]];
myLastRow.bottomEdgeStrokeColor = "Black";
myLastRow.bottomEdgeStrokeWeight = 0.5;
myLastRow.bottomEdgeStrokeType = "Dashed (4 and 4)";
};

Gruß
Headway


als Antwort auf: [#528759]
X

Aktuell

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
21.01.2021 - 22.01.2021

Digicomp Academy AG, Bern oder Basel
Donnerstag, 21. Jan. 2021, 08.30 Uhr - Freitag, 22. Jan. 2021, 17.00 Uhr

Kurs

Dieser Basic-Kurs ist der perfekte Einstieg in die Welt von InDesign, dem vielseitigen Layout-Programm. Sie lernen, wie InDesign aufgebaut ist, wie saubere Dokumente erstellt werden und wie man korrekt mit gelieferten InDesign-Projekten umgeht.

Dauer: 2 Tage
Preis: CHF 1'400.–

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/INDEM1

Veranstaltungen
21.01.2021

Illustrator - das unbekannte Wesen

Online
Donnerstag, 21. Jan. 2021, 19.00 Uhr

Vortrag

Millionen Funktionen, und immer kommen neue dazu! Monika Gause ist jeden Januar aufs Neue ein gern gesehener Gast bei der IDUG Stuttgart. - Sie bringt alle Neuerungen mit, die 2020 dazukamen und jede Menge Tipps und Tricks. - Zudem wird sie uns informieren, was wir in Illustrator beachten müssen, wenn wir Daten fürs Web erstellen bzw. aufbereiten. - Wichtig zu wissen: "Dos and Don'ts" in Illustrator. Welche Fehler sollte man dringend vermeiden und was muss man unbedingt tun, damit es Spaß macht mit Illustrator zu arbeiten. - Dieses Jahr hast Du zusätzlich die Möglichkeit Monika im Voraus Fragen zu stellen. Fülle dieses Formular mit deinen Fragen; auch Beispieldateien sind anfügbar: https://forms.gle/fJmF8C6MjbDoEhED8

Nein

Organisator: InDesign Usergroup Stuttgart

Kontaktinformation: Christoph Steffens, E-Mailidug AT satzkiste DOT de

https://idugs67.eventbrite.de/

IDUGS #67 Illustrator mit Monika Gause

Neuste Foreneinträge


Affinity Photo od. Designer -Bildecke einrollen

CC 2020: Problem mit Textumfluss mit verankerten Objekten

Abrisse im Druck

Farbmanagement bei Fotoabzügen

Dokument einrichten per Javascript [AI24.3, WIN10]

Problem mit arabischer Schrift: Wie von rechts nach links setzen?

Suchen u. Ersetzen von Strings mit bestimmter horizontaler Skalierung [INDD15.1.1 WIN10]

Netzwerklaufwerke verbinden -> Bei nicht verfügbar Fehlermeldung unterdrücken

Fortlaufende Nummerierung der Druckbogen

Verschiedene Netzwerke Handeln
medienjobs