[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Textile Markup via ConvertToTable zu Tabelle umwandeln

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

Textile Markup via ConvertToTable zu Tabelle umwandeln

The Gothamite
Beiträge gesamt:

11. Feb 2014, 16:23
Beitrag # 1 von 10
Bewertung:
(2880 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag

Ich arbeite derzeit an einer Art Magazin und muss für dieses Texte, die ursprünglich in Textile Markup geschrieben wurden in formatierten Text und Tabelle umwandeln. Die Texte sind kein Problem (abgesehen von einer kleinen Race Condition bei der Konvertierung von Hyperlinks, die ich aber einfach umgehen konnte), aber die Tabelle bereitet mir extremes Kopfzerbrechen, vor allem da ich mit JavaScript noch kaum Erfahrung habe. Daher bitte ich hiermit um Hilfe.

Das Problem
In Textile Markup wird eine Tabelle so geschrieben.

Code
|_. name |_. age |_. sex | 
| joan | 24 | f |
| archie | 29 | m |
| bella | 45 | f |


In einem Text könnte eine Tabelle so aussehen:

Code
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
|_. name |_. age |_. sex |
| joan | 24 | f |
| archie | 29 | m |
| bella | 45 | f |
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.


Die erste Zeile ist in InDesign-Jargon eine Header Row. Der Rest sind Body Rows.

Ich muss daher das automatisch konvertieren und auf die konvertierte Tabelle den TableStyle "Testtable" anwenden.

Besonderheiten des Projekts
Die Publikation hat verschiedene Kapitel, auf die verschiedene Regeln angewendet werden. Daher müsste der Anwendungsbereich auf app.selection[0] liegen.

Die Frage: Ganz kurz... Wie um alles in der Welt stelle ich das an?

(Dieser Beitrag wurde von The Gothamite am 11. Feb 2014, 16:27 geändert)
X

Textile Markup via ConvertToTable zu Tabelle umwandeln

Kai Rübsamen
Beiträge gesamt: 4684

11. Feb 2014, 17:35
Beitrag # 2 von 10
Beitrag ID: #523442
Bewertung:
(2845 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo und Willkommen auf hds,

Zitat Die Frage: Ganz kurz... Wie um alles in der Welt stelle ich das an?

Die Antwort: Indem du als erstes eine .idml-Datei in der Ausgangslage u. dann in der finalen Version zur Verfügung stellst.

Sehe ich es richtig, dass du die entsprechenden Stellen nicht automatisch finden, sondern vorher alles mit dem Cursor markieren willst?

Wenn ja, wirst du hier über die Suche einige Skripte finden, die markierten Text in Tabelle umwandeln.

Wenn ich mir deinen Text nach InDesign kopiere, fallen mir folgende Schritte ein:

1. Text markieren
2. Tabelle > Text in Tabelle umwandeln (Spaltentrennzeichen "|")
3. Format zuweisen
4. Erste Zeile in Kopfzeile wandeln
5. Irgendwann ein paar Probleme lösen:
a) Durch die Pipe am Anfang und am Schluss entstehen zwei Spalten zu viel
b) je nach Markierung entsteht eine Zeile zu viel
c) evtl. müssen ein paar Leerzeichen gelöscht werden


als Antwort auf: [#523435]

Textile Markup via ConvertToTable zu Tabelle umwandeln

The Gothamite
Beiträge gesamt:

11. Feb 2014, 17:42
Beitrag # 3 von 10
Beitrag ID: #523443
Bewertung:
(2836 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

Danke für die fixe Antwort. Die Idee ist Folgende.

Ich makiere den gesamten Text, also alles von Lorem Ipsum bis ganz zum Ende. Denn dei Tabelle ist nicht die einzige Formatierung, die das Skript erledigen soll. Darunter sind auch Dinge wie *Fettdruck* und _Kursiv_ und was Textile Markup sonst noch zu offerieren hat. Also markiere ich nicht nur die Tabelle, sondern den ganzen Text rundherum auch.

Das mit den Extraspalten habe ich bereits gelöst. Das geht prima so:

Code
    var myDocument = app.selection[0]; 
app.findGrepPreferences.findWhat = "^\\|(.+)\\|$";
app.changeGrepPreferences.changeTo = "$1";


Der Rest ist mir allerdings mehr als unklar.


als Antwort auf: [#523442]

Textile Markup via ConvertToTable zu Tabelle umwandeln

Kai Rübsamen
Beiträge gesamt: 4684

11. Feb 2014, 19:08
Beitrag # 4 von 10
Beitrag ID: #523456
Bewertung:
(2809 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Dein GREP dürfte gar nichts machen, wenn du wirklich von Lorem Ipsum bis zum Schluss markierst. Denn dein GREP sucht absatzweise. Ich habe gerade gemerkt, dass die Tabelle durcheinander kommt, wenn man nur das erste u. letzte Pipe-Symbol löscht ;-) Ich würde daher zunächst alle drin lassen.

Der Trick ist, dass man einen richtig gierigen GREP braucht! Teste bitte mal folgendes:

Code
// das aktuelle Dokument 
var curDoc = app.activeDocument;
// die aktuelle Auswahl
var curSel = curDoc.selection[0];

// die Sucheinstellungen zurücksetzen
app.findGrepPreferences = app.changeGrepPreferences = null;

// die Sucheinstellungen setzen
app.findGrepPreferences.findWhat = "\\|\\X+\\|";
var result = curSel.findGrep();

// Fundstelle in Tabelle konvertieren
var table = result[0].convertToTable("|");

// Erste und letzte Spalte löschen
table.columns[0].remove();
table.columns[-1].remove();
// Tabelle an Textrahmen anpassen
var tFrame = table.parent;
var fWidth = tFrame.geometricBounds[3] - tFrame.geometricBounds[1];
table.width = fWidth;

// Erste Zeile in Kopfzeile wandeln
table.rows[0].rowType = RowTypes.headerRow;

// Tabellenformat zuweisen
table.appliedTableStyle = "Testtable";
// vorsichtshalber Abweichungen vom Tabellenformat löschen
table.clearTableStyleOverrides( true );

// den Whitespace säubern
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.findWhat = "\\s+$|^\\s+";
app.changeGrepPreferences.changeTo = "";
table.changeGrep();

app.findGrepPreferences = app.changeGrepPreferences = null;


Edit: Ich bin mir sicher, dass das mit den Pipe-Symbolen auch anders zu lösen wäre. Aber darum mögen sich die kümmern, die nicht so lange brauchen wie ich :)


als Antwort auf: [#523443]
(Dieser Beitrag wurde von Kai Rübsamen am 11. Feb 2014, 19:18 geändert)

Textile Markup via ConvertToTable zu Tabelle umwandeln

The Gothamite
Beiträge gesamt:

12. Feb 2014, 12:49
Beitrag # 5 von 10
Beitrag ID: #523496
Bewertung:
(2758 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wow! Das funktioniert ja problemlos. Ich werde mal mit dem Script noch etwas rumspielen, damit ich den Präfix der Header-Reihe (Das |_., wovon nur _. übrig bleibt) wegkriege und dann die Funktion doppeln, damit auch Tabellen, die keine Header-Reihe haben, richtig konvertiert werden. Ich werde das Script dann natürlich hier posten.

Danke sehr!


als Antwort auf: [#523456]

Textile Markup via ConvertToTable zu Tabelle umwandeln

The Gothamite
Beiträge gesamt:

12. Feb 2014, 14:15
Beitrag # 6 von 10
Beitrag ID: #523506
Bewertung:
(2736 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Eine Frage doch noch: Wenn ich in einem Text zwei Tabellen habe, dann geht mir der Text zwischen den zwei Tabellen verloren und ich bekomme eine riesige Tabelle.

Warum? Und was muss ich ändern, damit das nicht passiert?


als Antwort auf: [#523456]

Textile Markup via ConvertToTable zu Tabelle umwandeln

Kai Rübsamen
Beiträge gesamt: 4684

12. Feb 2014, 15:29
Beitrag # 7 von 10
Beitrag ID: #523517
Bewertung:
(2711 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Bitte Beispiel. Ich kann es mir aber erst heute Abend ansehen.

Ich rate, dass der GREP jetzt zuuu gierig ist u. da du jetzt zwei Fundstellen hast, müssen die wohl mit einer Schleife nacheinander abgearbeitet werden.


als Antwort auf: [#523506]

Textile Markup via ConvertToTable zu Tabelle umwandeln

The Gothamite
Beiträge gesamt:

12. Feb 2014, 16:36
Beitrag # 8 von 10
Beitrag ID: #523527
Bewertung:
(2686 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ein Beispiel:

Code
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.  
|_. name |_. age |_. sex |
| joan | 24 | f |
| archie | 29 | m |
| bella | 45 | f |
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
|_. name |_. age |_. sex |
| joan | 24 | f |
| archie | 29 | m |
| bella | 45 | f |
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.


Das ergibt eine Tabelle, die - wenn ich sie wieder zurück in Textile schreibe - folgendermassen aussieht:

Code
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.  
|_. name |_. age |_. sex |
| joan | 24 | f |
| archie | 29 | m |
| bella | 45 | f |
|_. name |_. age |_. sex |
| joan | 24 | f |
| archie | 29 | m |
| bella | 45 | f |
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.


Das liegt daran dass der GREP die Tabelle bis zum Ende der zweiten Tabelle als Match ansieht, dann den Text zwischen den zwei Tabellen in eine Zelle in der ersten Spalte packt, die ja dann gelöscht wird. So geht der Text verloren.


als Antwort auf: [#523517]

Textile Markup via ConvertToTable zu Tabelle umwandeln

Kai Rübsamen
Beiträge gesamt: 4684

12. Feb 2014, 17:12
Beitrag # 9 von 10
Beitrag ID: #523534
Bewertung:
(2663 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Haben deine Tabellen immer 4 Zeilen?

Falls nein: Wenn hier jemand um ein Beispiel bittet, meint das in der Regel eine InDesign-Datei, in der wirklich alle Ausnahmen drin sind. Also keinen kopierten Text hier im Forum. Danke.


als Antwort auf: [#523527]

Textile Markup via ConvertToTable zu Tabelle umwandeln

Kai Rübsamen
Beiträge gesamt: 4684

12. Feb 2014, 20:18
Beitrag # 10 von 10
Beitrag ID: #523548
Bewertung:
(2608 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Anbei die nächste Version. Die Anzahl der Zeilen dürfte dabei egal sein.

Code
// die aktuelle Auswahl 
var curSel = app.selection[0];

// die Sucheinstellungen zurücksetzen
app.findGrepPreferences = app.changeGrepPreferences = null;

// die Sucheinstellungen setzen
app.findGrepPreferences.findWhat = "(\\|.+\\r)+\\|.+";
var result = curSel.findGrep( true );
app.findGrepPreferences = null;

alert ( "Es wurden " + result.length + " Treffer gefunden!" );

// eine Schleife durch die Fundstellen
for ( var f = 0; f < result.length; f++ ) {
// die letzte Fundstelle
var curRes = result[f];

// Fundstelle in Tabelle konvertieren
var curTable = curRes.convertToTable("|");

// Erste und letzte Spalte löschen
curTable.columns[0].remove();
curTable.columns[-1].remove();

// Tabelle wieder an Textrahmen anpassen
var tFrame = curTable.parent;
var fWidth = tFrame.geometricBounds[3] - tFrame.geometricBounds[1];
curTable.width = fWidth;

// Erste Zeile in Kopfzeile wandeln
curTable.rows[0].rowType = RowTypes.headerRow;

// Tabellenformat zuweisen
curTable.appliedTableStyle = "Testtable";
// vorsichtshalber Abweichungen vom Tabellenformat löschen
curTable.clearTableStyleOverrides( true );

// den Whitespace säubern
app.findGrepPreferences.findWhat = "\\s+$|^\\s+";
app.changeGrepPreferences.changeTo = "";
curTable.changeGrep();
}

app.findGrepPreferences = null;



als Antwort auf: [#523534]
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
18.06.2024

Online
Dienstag, 18. Juni 2024, 10.00 - 10.30 Uhr

Webinar

In diesen beiden kostenlose Webinaren erfahren Sie, wie Sie mit Hilfe von Enfocus Griffin und dem Impressed Workflow Server Ihren LFP-Workflows optimieren können. 18.06.2024: So optimieren Sie Ihre Prozesse mit Enfocus Griffin 02.07.2024: So sparen Sie Zeit und Geld mit Impressed Workflow Server in der LFP-Edition Griffin: Griffin ist das leistungsstarke Kraftpaket für das automatische Nesting im Großformatdruck. Dank eines ausgeklügelten, KI-basierten Nesting-Algorithmus können Sie mit Griffin Vorlagen schnell und effizient vernutzen – und das klappt auch mit unregelmäßigen Formen perfekt. Das spart Ihnen unzählige Stunden, die Sie bisher mit dem manuellen Nesting und Ausschießen verbracht haben. Einige wichtige Funktionen ≡ Anlage von Beschnittzugaben ≡ Automatische Erzeugung der Schnittkontur ≡ Erstellung von Strichcodes, Textmarkierungen und Registrierungen IWS LFP Edition: 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? Mit dem IWS LFP Edition automatisieren Sie Ihre Produktion von der Übernahme der Daten aus dem ERP-System bis zur Erzeugung der verschachtelten Druckform und der Übergabe an den RIP. Phoenix Core ist eine hochentwickelte KI-Technologie für die Planung und das Nesting von Druckerzeugnissen. Anders als herkömmliche Ausschießlösungen arbeitet Phoenix nicht auf Basis von Vorlagen, sondern erzeugt entsprechend der Maschinen- und Produktionsanforderungen druckfertige Layouts „on-the-fly“.

kostenlos

Ja

Organisator: Impressed GmbH

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

So optimieren Sie Ihren LFP-Workflow
Veranstaltungen
02.07.2024

Online
Dienstag, 02. Juli 2024, 10.00 - 10.30 Uhr

Webinar

In diesen beiden kostenlose Webinaren erfahren Sie, wie Sie mit Hilfe von Enfocus Griffin und dem Impressed Workflow Server Ihren LFP-Workflows optimieren können. 18.06.2024: So optimieren Sie Ihre Prozesse mit Enfocus Griffin 02.07.2024: So sparen Sie Zeit und Geld mit Impressed Workflow Server in der LFP-Edition Griffin: Griffin ist das leistungsstarke Kraftpaket für das automatische Nesting im Großformatdruck. Dank eines ausgeklügelten, KI-basierten Nesting-Algorithmus können Sie mit Griffin Vorlagen schnell und effizient vernutzen – und das klappt auch mit unregelmäßigen Formen perfekt. Das spart Ihnen unzählige Stunden, die Sie bisher mit dem manuellen Nesting und Ausschießen verbracht haben. Einige wichtige Funktionen ≡ Anlage von Beschnittzugaben ≡ Automatische Erzeugung der Schnittkontur ≡ Erstellung von Strichcodes, Textmarkierungen und Registrierungen IWS LFP Edition: 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? Mit dem IWS LFP Edition automatisieren Sie Ihre Produktion von der Übernahme der Daten aus dem ERP-System bis zur Erzeugung der verschachtelten Druckform und der Übergabe an den RIP. Phoenix Core ist eine hochentwickelte KI-Technologie für die Planung und das Nesting von Druckerzeugnissen. Anders als herkömmliche Ausschießlösungen arbeitet Phoenix nicht auf Basis von Vorlagen, sondern erzeugt entsprechend der Maschinen- und Produktionsanforderungen druckfertige Layouts „on-the-fly“.

kostenlos

Ja

Organisator: Impressed GmbH

Kontaktinformation: E-Mailschulungen AT impressed DOT de

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

So optimieren Sie Ihren LFP-Workflow