[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: 128

22. Jun 2014, 22:19
Beitrag # 1 von 8
Bewertung:
(3084 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: 5319

23. Jun 2014, 09:45
Beitrag # 2 von 8
Beitrag ID: #528703
Bewertung:
(3029 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.


als Antwort auf: [#528699]

Jeweils letzte Zeile einer über mehrere Textrahmen reichenden Tabelle

pixelstaub
Beiträge gesamt: 128

23. Jun 2014, 11:37
Beitrag # 3 von 8
Beitrag ID: #528709
Bewertung:
(3003 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


als Antwort auf: [#528703]

Jeweils letzte Zeile einer über mehrere Textrahmen reichenden Tabelle

Uwe Laubender
Beiträge gesamt: 5319

23. Jun 2014, 11:49
Beitrag # 4 von 8
Beitrag ID: #528711
Bewertung:
(2998 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…


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: 128

23. Jun 2014, 11:58
Beitrag # 5 von 8
Beitrag ID: #528713
Bewertung:
(2987 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


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:
(2879 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: 5319

24. Jun 2014, 12:09
Beitrag # 7 von 8
Beitrag ID: #528759
Bewertung:
(2842 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.


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:
(2814 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

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
14.05.2024

Online
Dienstag, 14. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Prozessoptimierung ist ein Teamsport! Keine Software und keine Maschine allein kann Ihnen helfen, die Effizienzpotenziale Ihres Betriebes maximal auszuschöpfen. Von der Auftragsannahme über die Vorstufe und den Druck bis hin zur Weiterverarbeitung – alles muss optimal ineinandergreifen. Apropos Weiterverarbeitung – in vielen Druckbetrieben fristet sie in Sachen Prozessoptimierung immer noch ein Schattendasein. Dabei liegen hier mittlerweile die größten Einsparpotenziale! In einem Webinar von Horizon und Impressed erfahren Sie, wie Sie diese Einsparungen realisieren können. Horizon, bekannt für innovative Lösungen in der Druckweiterverarbeitung, bietet mit iCE LiNK eine Workflowlösung für die Weiterverarbeitung. iCE LiNK überwacht, visualisiert und analysiert Produktionsabläufe und unterstützt bei der Wartung – damit immer alles reibungslos läuft. Den gleichen Anspruch hat der von Impressed entwickelte Impressed Workflow Server – er ist die smarte PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt. Im Webinar zeigen Ihnen die Experten von Horizon und Impressed, wie beide Lösungen im Team die Effizienz und Produktivität Ihres Betriebes steigern können. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Horizon

https://www.impressed.de/schulung.php?c=sDetail&sid=327

Einsparpotenziale in der Weiterverarbeitung
Veranstaltungen
16.05.2024

Online
Donnerstag, 16. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Nein

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!