[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt In welcher Spalte befindet sich eine Zeile?

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

In welcher Spalte befindet sich eine Zeile?

J.Puff
Beiträge gesamt: 182

18. Sep 2013, 11:53
Beitrag # 1 von 15
Bewertung:
(4408 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo gemeinsam,
wie kann ich herausfinden, in welcher Spalte sich eine Zeile befindet?
Gegeben sei ein Textrahmen mit 3 Spalten. Nun möchte ich wissen, ob eine Textzeile in der ersten, zweiten oder dritten Spalte steht.
Leider finde ich in der Doku bei "lines" keinen Hinweis auf die Position.

Danke für eine Hilfe.
Johannes
X

In welcher Spalte befindet sich eine Zeile?

Kai Rübsamen
Beiträge gesamt: 4537

18. Sep 2013, 12:54
Beitrag # 2 von 15
Beitrag ID: #517460
Bewertung:
(4386 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Johannes,

viell. habe ich nicht verstanden, was für dich eine Textzeile ist: Einen bestimmten Text, den du vorher suchst?

Code
app.findTextPreferences = app.changeTextPreferences = null;    
app.findTextPreferences.findWhat = "mein Text";
var myFound = app.activeDocument.findText();
var col = myFound[0].parent.name.split(":")[0];
var colCount = parseFloat(col) +1;
alert ("Der Text befindet sich in der "+ colCount + ". Spalte!");


Gibt z.B. für die Fundstelle in der 3. Spalte, zweite Zeile als Ergebnis: 2:1 zurück. Der erste Eintrag ist die Spalte, der zweite die Zeile.

Gruß Kai Rübsamen


als Antwort auf: [#517455]
(Dieser Beitrag wurde von Kai Rübsamen am 18. Sep 2013, 13:05 geändert)

In welcher Spalte befindet sich eine Zeile?

J.Puff
Beiträge gesamt: 182

18. Sep 2013, 13:18
Beitrag # 3 von 15
Beitrag ID: #517461
Bewertung:
(4367 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,
danke für den Hinweis!
Es ist so, dass ich alle Zeilen eines Textrahmens in einer Schleife durchlaufe. Und jetzt möchte ich wissen, in welcher Spalte ich mich befinde.
Code
for(var x=0; x<AnzahlZeilen; x++) 
{ var _spalte = _tf.lines[x].????? }


Wenn ich, wie in Deinem Beispiel, schreibe
Code
_tf.lines[x].parent.name 

bekomme ich nur einen leeren String.

Gruß
Johannes


als Antwort auf: [#517460]

In welcher Spalte befindet sich eine Zeile?

Kai Rübsamen
Beiträge gesamt: 4537

18. Sep 2013, 14:08
Beitrag # 4 von 15
Beitrag ID: #517466
Bewertung:
(4344 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Johannes, das kann auch nicht funktionieren … Ich habe dir eine Variante geliefert, wie man einen Text in einer Tabellenspalte finden kann ;-)

Ich hab dein Problem jetzt verstanden, aber keine Lösung dafür. Wenn es keine direkte Eigenschaft dafür gibt, müsste man wahrscheinlich die Position der Spaltenlinien auslesen und prüfen an welcher Stelle sich der Anfang der Zeile befindet?

Was sagen die erfahrenen Skripter?

edit: Wo ist der Beitrag von Jo?
Wenn ich das in der zweiten Zeile ausprobiere, erhalte ich als Ergebnis 518! textColumn beschreibt doch eigentlich eine Auswahl, aber die Spalten werden doch in den textPreferences festgelegt?

Gruß Kai Rübsamen


als Antwort auf: [#517461]
(Dieser Beitrag wurde von Kai Rübsamen am 18. Sep 2013, 14:23 geändert)

In welcher Spalte befindet sich eine Zeile?

J.Puff
Beiträge gesamt: 182

18. Sep 2013, 14:48
Beitrag # 5 von 15
Beitrag ID: #517468
Bewertung:
(4325 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,
den Beitrag von mx kann ich auch nicht finden, es folgt eine Fehlermeldung....

Eine Möglichkeit wäre das erste Zeichen der Zeile in Pfade zu wandeln und die Koordinaten zur Lokalisierung zu verwenden. Aber das ist recht umständlich und ich hoffe, es gibt noch eine smartere Lösung ....

Beste Grüße
Johannes


als Antwort auf: [#517466]

In welcher Spalte befindet sich eine Zeile?

WernerPerplies
Beiträge gesamt: 2211

18. Sep 2013, 15:50
Beitrag # 6 von 15
Beitrag ID: #517470
Bewertung:
(4284 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Johannes,

Du könntest z. B. die Spalte über die Eigenschaft .horizontalOffset ermitteln.

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING


als Antwort auf: [#517468]

In welcher Spalte befindet sich eine Zeile?

Martin Fischer
  
Beiträge gesamt: 11871

18. Sep 2013, 16:38
Beitrag # 7 von 15
Beitrag ID: #517474
Bewertung:
(4269 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Johannes,

die Spaltenposition des Cursors kannst Du ermitteln, indem Du die Spalten vom Anfang des Textrahmens (erster Einfügepunkt) bis zum Cursor zählst:

Code
if (app.selection.length > 0 && app.selection[0].constructor.name == 'InsertionPoint') 
{
var ip = app.selection[0];
var tf_first_ip = ip.parentTextFrames[0].insertionPoints.firstItem();
var range = ip.parentStory.insertionPoints.itemByRange(ip.index, tf_first_ip.index);
var col_count = range.textColumns.count();
alert ('Cursor in Spalte ' + col_count);
}


Hast Du nicht nur den Cursor platziert, sondern Text ausgewählt, geht das etwa so:

Code
if (app.selection.length > 0 && app.selection[0].hasOwnProperty('baseline')) 
{
var last_point = app.selection[0];
var first_point = app.selection[0].parentTextFrames[0].insertionPoints.firstItem();
var range = app.selection[0].parentStory.insertionPoints.itemByRange(first_point.index, last_point.index);
var col_count = range.textColumns.count();
alert ('Beginn der Auswahl in Spalte ' + col_count);
}


Viele Grüße
Martin


als Antwort auf: [#517461]

In welcher Spalte befindet sich eine Zeile?

Gerald Singelmann
  
Beiträge gesamt: 6183

18. Sep 2013, 16:40
Beitrag # 8 von 15
Beitrag ID: #517475
Bewertung:
(4268 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Code
$.writeln( "ist in Spalte: " + get_column_index ( app.selection[0] ) ); 

function get_column_index( text_thing ) {
var tf = text_thing.parentTextFrames;
if (tf.length == 0) {
return null;
}
tf = tf[0];

var things_column = text_thing.textColumns.item(0).index;

var nclms = tf.textColumns.length;
for (var n = 0; n < nclms; n++) {
if ( things_column == tf.textColumns[n].index) {
return n;
}
}
return null;
}



als Antwort auf: [#517455]

In welcher Spalte befindet sich eine Zeile?

Gerald Singelmann
  
Beiträge gesamt: 6183

18. Sep 2013, 16:41
Beitrag # 9 von 15
Beitrag ID: #517476
Bewertung:
(4265 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Martin,

schöne Idee :)


als Antwort auf: [#517474]

In welcher Spalte befindet sich eine Zeile?

Gerald Singelmann
  
Beiträge gesamt: 6183

18. Sep 2013, 16:43
Beitrag # 10 von 15
Beitrag ID: #517477
Bewertung:
(4261 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Du könntest z. B. die Spalte über die Eigenschaft .horizontalOffset ermitteln.


Auch ne gute Idee, wird aber knifflig durch Rahmeninset und gedrehte Rahmen.


als Antwort auf: [#517470]

In welcher Spalte befindet sich eine Zeile?

J.Puff
Beiträge gesamt: 182

18. Sep 2013, 17:03
Beitrag # 11 von 15
Beitrag ID: #517480
Bewertung:
(4220 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo gemeinsam,
vielen Dank für die Vorschläge, ich werde später versuchen das auf die Zeile anzuwenden, denn derzeit ist kein Cursor gesetzt, sondern es werden die Zeilen eines Textrahmens gelesen.

Beste Grüße
Johannes


als Antwort auf: [#517477]

In welcher Spalte befindet sich eine Zeile?

Martin Fischer
  
Beiträge gesamt: 11871

18. Sep 2013, 17:21
Beitrag # 12 von 15
Beitrag ID: #517482
Bewertung:
(4197 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Johannes,

das mit der Auswahl/dem Cursor war nur ein spontanes Beispiel.
Es sollte die Idee des Zählens der Textspalten vom Anfang des Textrahmens bis zum gewünschten Punkt transportieren.

Hier ein erweitertes Beispiel, wo Du eine Zeile übergeben kannst.
Ersetze den roten Text durch Deine Zeile.
Code
var col_index = get_column_index(app.documents.firstItem().stories.firstItem().lines.item(10)); 
alert(col_index);

function get_column_index(_text)
{
if (_text.constructor.name == 'InsertionPoint')
var ip = _text;
else if (_text.hasOwnProperty('baseline'))
var ip = _text.insertionPoints.firstItem();
else
var ip = null;

if (ip != null && ip.parentTextFrames.length > 0)
{
var tf_first_ip = ip.parentTextFrames[0].insertionPoints.firstItem();
var range = ip.parentStory.insertionPoints.itemByRange(ip.index, tf_first_ip.index);
var col_count = range.textColumns.count();
return col_count;
}
else
return null;
}


Viele Grüße
Martin


als Antwort auf: [#517480]
(Dieser Beitrag wurde von Martin Fischer am 18. Sep 2013, 17:21 geändert)

In welcher Spalte befindet sich eine Zeile?

J.Puff
Beiträge gesamt: 182

18. Sep 2013, 17:56
Beitrag # 13 von 15
Beitrag ID: #517483
Bewertung:
(4163 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
herzlichen Dank für die Funktion, die ich mit einer kleinen Änderung übernommen habe:
Code
var range = ip.parentStory.insertionPoints.itemByRange(ip.index+1,   tf_first_ip.index); 


Die ersten Zeile der nächsten Spalte würde sonst die falsche Spaltennummer bekommen.

Schönen Abend,
Johannes


als Antwort auf: [#517482]

In welcher Spalte befindet sich eine Zeile?

J.Puff
Beiträge gesamt: 182

23. Sep 2013, 11:00
Beitrag # 14 von 15
Beitrag ID: #517658
Bewertung:
(3918 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
einen kleinen Wermutstropfen gibt es bei dem Ansatz doch noch. Wenn innerhalb des Textes in einem mehrspaltigen Rahmen Zeilen mit Spaltenspanne vorkommen wird falsch gezählt.
Nehmen wir beispielsweise einen 2-spaltigen Textrahmen. In der Mitte befindet sich Text über beide Spalten.
Text der 1. Spalte über der Spaltenspannen-Zeile bekommt die richtige Spalten-Nr. 1, der Text der 2. Spalte darüber die richtige Spalten-Nr. 2, der Text in der Zeile mit Spaltenspanne wird als Spalte-Nr. 3 gewertet, der Text der 1. Spalte unter der Spaltenspannen-Zeile als Spalten-Nr. 4 usw. Hier hätte ich nun wieder Spalten-Nr. 1 erwartet.

Ich habe mich nun doch für die Koordinaten-Auswertung entschieden, die dieser Problematik nicht anheim fällt.
Aber vielleicht gibt es ja auch Deinen Ansatz inkl. Spaltenspannen eine Lösung.

Beste Grüße
Johannes.


als Antwort auf: [#517482]

In welcher Spalte befindet sich eine Zeile?

Martin Fischer
  
Beiträge gesamt: 11871

23. Sep 2013, 12:14
Beitrag # 15 von 15
Beitrag ID: #517660
Bewertung:
(3902 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Johannes,

mit den Spaltenspannen/unterteilten Spalten stehe ich in mancherlei Hinsicht auf Kriegsfuß.

Auch Adobe hat m.E. das Thema noch nicht vernünftig zu Ende geführt – siehe Kombinationen von Fußnoten und Spaltenspannen/unterteilte Spalten in einem Textrahmen (Fußnoten verlieren ihre 'Schwerkraft' ...). Es ist wohl kaum zu erwarten, dass sich an dieser Stelle in absehbarer Zeit etwas ändern wird. Eher fliegt die seit ihrer Erstimplementierung ungepflegte Fußnotenfunktion in einer kommenden CC-Version wieder ganz raus, bevor die sich mit Tabellen und Spalten/Spaltenspannen/unterteilte Spalten harmonisiert ...


Gewiss könnte man in der Funktion oben noch eine Analyse auf Spaltenspannen/unterteilte Spalten einfügen und entsprechend dem Ergebnis darauf reagieren.

So was brauch' ich (bislang noch) nicht und hab grad auch keine Zeit dafür.

Viele Grüße
Martin


als Antwort auf: [#517658]
(Dieser Beitrag wurde von Martin Fischer am 23. Sep 2013, 13:22 geändert)
X

Aktuell

Veranstaltungen

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen. pdf-icon Hier eine kleine Anleitung.

Veranstaltungen
26.09.2018

Hochschuloe der Medien, Stuttgart
Mittwoch, 26. Sept. 2018, 19.00 - 21.00 Uhr

Vertrag

Nur auf den ersten Blick scheint dieses Thema exotisch. Aber eine neue EU-Richtlinie und deren Auswirkungen auf deutsche Gesetze werden dieses Thema auch für Publisher interessant machen. Die EU-Richtlinie "2102 zu Barrierefreiheit" besagt folgendes: Ab dem 23. September 2018 müssen alle öffentlichen Stellen ihre neuen (Office- oder PDF-) Dokumente grundsätzlich barrierefrei veröffentlichen. Im Juni wurde der Gesetzentwurf zur Umsetzung dieser Richtlinie im deutschen Bundestag vom "Ausschuss für Arbeit und Soziales" (19/2728) angenommen. Es wird also ernst für "öffentliche Stellen" und damit auch für deren Dienstleister, die mit der Umsetzung beauftragt werden. Die Richtlinie gilt nämlich nicht nur für Bundes- und Landesbehörden, sondern auch für Verbände, die im Allgemeininteresse liegende Aufgaben erfüllen. Das wären somit auch Gerichte, Polizeistellen, Krankenhäuser, Universitäten, Bibliotheken und einige mehr. Weitere Informationen findest Du hier, hier und hier. Wenn also oben genannte Auftraggeber zu Deinen Kunden zählen, solltest Du Dich vorbereiten. Und da es neben Websites auch um alle downloadbaren Dateien geht sind eben auch PDFs zukünftig barrierefrei zu erstellen. Arbeitet man in InDesign, können dort einige Vorbereitungen getroffen werden. Klaas Posselt ist der ausgewiesene Spezialist im deutschsprachigen Raum für alle Fragen rund um das Thema. Deshalb freuen wir uns, dass er uns in einem Vortrag die Grundlagen dazu vermitteln wird. Wir setzen voraus, dass Du den Umgang mit InDesign gewohnt bist, die Gründe und Vorteile von der Nutzung von Formaten kennst und weißt, wie man lange Dokumente „richtig“ aufbaut. Der Vortrag setzt bewusst DANACH ein. Inhalt des Vortrages ist der Hintergrund von „Barrierefreiheit“ und Möglichkeiten und Grenzen innerhalb von InDesign. Es wird erklärt, welche Bedeutung das kostenpflichtige PlugIn MadeToTag hat und warum und für was man es braucht. Ziel ist es den Rahmen aufzuzeigen, in dem sich das Thema „Barrierefreiheit“ in InDesign abspielt. Du weißt hinterher, wo die „Baustellen“ sind, wo Du weitergehende Infos bekommst und welchen Weg Du einschlagen musst. Am nächsten Tag veranstalten wir zwei Bootcamps, die das Thema praktisch vertiefen. "IDUGS Bootcamp #2" und "IDUGS Bootcamp #3" Klaas Posselt ist studierter Dipl.-Ing. für Druck- und Medientechnik und kam über verschiedene Anfragen zum Thema barrierefreie PDF Dokumente. Seit über 10 Jahren arbeitet er in den Bereichen Medientechnik und Publishing zwischen Medienherstellern, Druckermaschinen und digitalen Ausgabekanälen. Er schult, begleitet und unterstützt Kunden bei der Einführung und Optimierung von Publikationsprozessen und auf dem Weg zu neuen digitalen Ausgabekanälen — egal ob E-Books, barrierefreie PDFs oder Webplattformen. Als Chairman des PDF/UA Competence Center der PDF Association beteiligt er sich an der Weiterentwicklung und Verbreitung des Standards PDF/UA für barrierefreie PDF Dokumente. Diese Veranstaltung kommt nur zu Stande durch die freundliche Unterstützung von "Six Offene Systeme GmbH" -- Enterprise-Content-Management-System und Media-Asset-Management-System.

Nein

Organisator: IDUG Stuttgart

Kontaktinformation: Christoph Steffens, E-Mailchristoph.steffens AT gmail DOT com

https://idug47.eventbrite.de

Veranstaltungen
27.09.2018

Screen IT, Uster
Donnerstag, 27. Sept. 2018, 17.30 - 20.00 Uhr

Infoveranstaltung

Das Angebot an Publishing-Software ist gross. Deshalb empfiehlt sich eine externe Beratung durch unabhängige Software-Experten aus der jeweiligen Branche. Nicht immer muss es eine teure Mietlösung sein, die nach Beendigung der Mietdauer einem nicht einmal gehört. Es gibt sehr gute und auch in der Qualität ausreichende Alternativen, ja sogar kostenlose Freeware. Lassen Sie sich an diesem Abend einmal vor Augen führen, was diese Programme können und wie viel sie kosten.

Ja

Organisator: Screen IT und pre2media

Kontaktinformation: Peter Jäger, E-Mailinfo AT pre2media DOT ch

https://www.pre2media.ch/-1/de/infoanlass/