[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Formatierten Text in contents übernehmen...

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

Formatierten Text in contents übernehmen...

Marc Sidon
Beiträge gesamt: 262

3. Dez 2010, 10:14
Beitrag # 1 von 22
Bewertung:
(5849 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

jetzt habe ich auch mal wieder eine Frage:
Gibt es (mittlerweile) eine Möglichkeit, formatierten Text in einen Textrahmen bzw. eine Zelle zu übernehmen? Angenommen, ich habe als Quelle einen html-Text "Hallo <b>Welt</b> <i>!!!</i>". Wie bekommt Ihr den am einfachsten korrekt formatiert in das gewünschte Zielelement?

Gibt es eine Möglichkeit, den Text so umzuwandeln, dass InDesign den "versteht"? (Sprichtwort IDML, InDesign tags, o.ä.)

Gruß,
Marc
X

Formatierten Text in contents übernehmen...

Martin Fischer
  
Beiträge gesamt: 12691

3. Dez 2010, 11:02
Beitrag # 2 von 22
Beitrag ID: #458763
Bewertung:
(5828 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marc,

Antwort auf: Gibt es (mittlerweile) eine Möglichkeit, formatierten Text in einen Textrahmen bzw. eine Zelle zu übernehmen?


Wenn ich Dich richtig verstehe, dann möchtest Du nicht in einem InDesign Dokument vorhandenen Text an eine andere Stelle duplizieren, sondern Text mit Tag-Marken formatieren?

Bei HTML wäre es (manuell) das Einfachste, diesen in einem Browser zu öffnen, alles auszuwählen und über die Zwischenablage nach InDesign zu transportieren (darauf achten, dass in den Voreinstellungen bei den Zwischenablagenoptionen 'alle Informationen' aktiviert ist).

Alternative 1 (teilweise scriptbar): den HTML-Text in Word öffnen, als Word-Datei sichern und diesen in InDesign platzieren.

Alternative 2 (gänzlich per Skript): für FindChangeByList.jsx ein Set mit diversen GREP-Ersetzevorgängen anlegen.


als Antwort auf: [#458758]
(Dieser Beitrag wurde von Martin Fischer am 3. Dez 2010, 11:04 geändert)

Formatierten Text in contents übernehmen...

Marc Sidon
Beiträge gesamt: 262

3. Dez 2010, 12:04
Beitrag # 3 von 22
Beitrag ID: #458781
Bewertung:
(5811 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

genau, ich möchte Text mit Tag-Marken formatiert in InDesign bringen. Deine Vorschläge sind in meinem Falle leider alle nicht anwendbar.

Idee dahinter:
Wenn ich Text in einen Textrahmen schreibe, diesen Rahmen dann als Snippet (.idms) exportierte, dann erhalte ich sowas hier:

Code
		<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/$ID/NormalParagraphStyle"> 
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/$ID/[No character style]">
<Content>Hallo </Content>
</CharacterStyleRange>
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/$ID/[No character style]" FontStyle="Bold">
<Content>Welt</Content>
</CharacterStyleRange>
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/$ID/[No character style]">
<Content> </Content>
</CharacterStyleRange>
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/$ID/[No character style]" FontStyle="Italic">
<Content>!!!</Content>
</CharacterStyleRange>
</ParagraphStyleRange>


Jetzt wäre mein Gedanke gewesen, den "Hallo <b>Welt</b> <i>!!!</i>" - String "einfach" dahingehend zu verändern und der Wunsch wäre, diesen dann eben in contents (oder ähnliches) zu übergeben und InDesign macht "den Rest".

Code
txtFrame1.contents = "<ParagraphStyleRange .... </ParagraphStyleRange>"; 


Gruß,
Marc


als Antwort auf: [#458763]

Formatierten Text in contents übernehmen...

Martin Fischer
  
Beiträge gesamt: 12691

3. Dez 2010, 12:17
Beitrag # 4 von 22
Beitrag ID: #458785
Bewertung:
(5808 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marc,

content kennt keine Formatierung, sondern nur Zeichen.
Wird der content eines Textobjekts mit Zeichen gefüllt, dann übernehmen diese die ursprüngliche Formatierung des Textobjekts (und sei es zuvor ein Einfügepunkt mit nix als content gewesen).

Ich verstehe immer noch nicht so ganz, auf was Du hinauswillst.
Warum platzierst Du nicht das Snippet und verschiebst die Teile, die Du zu irgendwas brauchst, per move() an den Ort, wo sie hinsollen und löscht das, was überflüssig ist vom Snippet, nicht weg?


als Antwort auf: [#458781]
(Dieser Beitrag wurde von Martin Fischer am 3. Dez 2010, 12:18 geändert)

Formatierten Text in contents übernehmen...

Marc Sidon
Beiträge gesamt: 262

3. Dez 2010, 12:35
Beitrag # 5 von 22
Beitrag ID: #458786
Bewertung:
(5796 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi,

ich bekomme Texte ja html-formatiert aus einer Datenbank. Wenn ich das so machen wollen würde, müsste ich tausende von Snippets erzeugen, abspeichern, importieren, löschen, usw., was ich nicht unbedingt für performant halte.
Ich hatte eben gehofft, es gäbe eine Möglichkeit per formatiertem String, ohne den Umweg über Snippets.

Gruß,
Marc


als Antwort auf: [#458785]

Formatierten Text in contents übernehmen...

Martin Fischer
  
Beiträge gesamt: 12691

3. Dez 2010, 12:55
Beitrag # 6 von 22
Beitrag ID: #458790
Bewertung:
(5789 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: ich bekomme Texte ja html-formatiert aus einer Datenbank.


Das wußte ich vorher nicht.
Du zeigtest ein Snippet und ich hatte es so verstanden, dass dieses bereits fertig wo rumliegt und nur auf die gezielte Platzierung z.B. in einer Zelle wartet.

Was ist mit den oben genannten Alternativen?


als Antwort auf: [#458786]

Formatierten Text in contents übernehmen...

Martin Fischer
  
Beiträge gesamt: 12691

3. Dez 2010, 12:59
Beitrag # 7 von 22
Beitrag ID: #458791
Bewertung:
(5781 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hast Du Einfluss auf die Struktur der Ausgabe des Textes aus der Datenbank?

Dann könntest Du den Text eventuell als Tagged Text strukturieren und so in InDesign platzieren.

Oder nimm das Snippet-Format als Strukturvorgabe.


als Antwort auf: [#458786]

Formatierten Text in contents übernehmen...

Marc Sidon
Beiträge gesamt: 262

3. Dez 2010, 15:19
Beitrag # 8 von 22
Beitrag ID: #458814
Bewertung:
(5729 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Sorry, dann hatte ich das schlecht erklärt.

1. ich bekomme unzählige Texte als HTML-Text aus der DB (als String)
2. ich kann mit diesen Strings alles machen, d.h. sie natürlich beliebig verändern.

Und das, was Du im letzten Post geschrieben hast ist genau das, was ich will....

Ich bekomme einen String:
Code
Hallo <b>Welt</b> <i>!!!</i> 


Wenn ich diesen als contents setze, stehen da die Tags. Ergo unbrauchbar!
Also dachte ich mir, verändere ich den String (durch Replace-Operationen) von HTML in ein InDesign verständliches "Format" (Snippet oder Tagged Text oder was anderes, was ich noch nicht kenne)....

Dann habe ich zum Beispiel diesen Text:

Code
myNewTextSnippet1 = '<ParagraphStyleRange AppliedParagraphStyle="ParagraphStyle/$ID/NormalParagraphStyle">  
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/$ID/[No character style]">
<Content>Hallo </Content>
</CharacterStyleRange>
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/$ID/[No character style]" FontStyle="Bold">
<Content>Welt</Content>
</CharacterStyleRange>
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/$ID/[No character style]">
<Content> </Content>
</CharacterStyleRange>
<CharacterStyleRange AppliedCharacterStyle="CharacterStyle/$ID/[No character style]" FontStyle="Italic">
<Content>!!!</Content>
</CharacterStyleRange>
</ParagraphStyleRange>';


... oder ...

Code
myNewTextTagged1 = 'Hallo <cTypeface:Bold>Welt<cTypeface:> <cTypeface:Italic>!!!<cTypeface:>'; 


... soweit noch kein Problem!
So, aber nun habe ich keine Ahnung, wie ich "myNewTextSnippet1" oder "myNewTextTagged1" in den InsertionPoint setze, damit es eben als formatierter Text (und nicht als String mit Tags) im Dokument erscheint.

So viel ich weiß, geht doch weder:
Code
myInsertionPoint1.contents = myNewTextSnippet1; 

... noch ...

Code
myInsertionPoint1.contents = myNewTextTagged1; 


Oder ????
(Das probiere ich jetzt vorsichtshalber nochmal aus... :) )


als Antwort auf: [#458791]

Formatierten Text in contents übernehmen...

Marc Sidon
Beiträge gesamt: 262

3. Dez 2010, 15:30
Beitrag # 9 von 22
Beitrag ID: #458816
Bewertung:
(5724 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Marc Sidon ] Oder ????
(Das probiere ich jetzt vorsichtshalber nochmal aus... :) )


Nein, es geht wie vermutet beides nicht!
Also, wenn ich bspw. den Text dann als TaggedText vorliegen habe, wie bekomme ich den dann platziert?

Mit place() kann ich nur Dateien platzieren. Muss ich also den String in einer Textdatei speichern, diese dann plazieren? Oder gibt es eine andere Möglichkeit? Ich hoffe ja immernoch auf eine Funktion placeTaggedText(textToPlace), die ich übersehe...

Gruß,
Marc


als Antwort auf: [#458814]
(Dieser Beitrag wurde von Marc Sidon am 3. Dez 2010, 15:32 geändert)

Formatierten Text in contents übernehmen...

Martin Fischer
  
Beiträge gesamt: 12691

3. Dez 2010, 15:37
Beitrag # 10 von 22
Beitrag ID: #458817
Bewertung:
(5718 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Marc,

so wird das nichts.

Siehe oben: »content kennt keine Formatierung, sondern nur Zeichen.«

Du willst, dass die Tags nicht angezeigt, sondern ausgewertet werden.


Dafür habe ich folgende Wege genannt:

1. Umwandlung während dem Import
a. HTML formatiert aus Browser über die Zwischenablage (taugt für Deinen workflow nichts; nur der Vollständigkeit halber notiert)
b. Word-Dokument platzieren
c. Tagged-Text platzieren
d. Snippet platzieren
(für c. und d. muss der Text beim Export aus der Datenbank entsprechend strukturiert werden)

2. Formatieren von Text innerhalb eines Tags (zwischen Anfang und Ende) durch GREP-Ersetzungen; bei wiederkehrenden Aufgaben vereinfacht über ein Set mit GREP-Ersetze-Kommandos für FeindChangeBy-List.

Was Drittes sehe ich im Moment nicht.


als Antwort auf: [#458814]

Formatierten Text in contents übernehmen...

Marc Sidon
Beiträge gesamt: 262

3. Dez 2010, 15:49
Beitrag # 11 von 22
Beitrag ID: #458821
Bewertung:
(5710 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Martin Fischer ] Siehe oben: »content kennt keine Formatierung, sondern nur Zeichen.«

Ja, das habe ich mittlerweile verstanden...

Antwort auf [ Martin Fischer ] Du willst, dass die Tags nicht angezeigt, sondern ausgewertet werden.


Genau !

Antwort auf [ Martin Fischer ] Dafür habe ich folgende Wege genannt:

1. Umwandlung während dem Import
a. HTML formatiert aus Browser über die Zwischenablage (taugt für Deinen workflow nichts; nur der Vollständigkeit halber notiert)
b. Word-Dokument platzieren
c. Tagged-Text platzieren
d. Snippet platzieren
(für c. und d. muss der Text beim Export aus der Datenbank entsprechend strukturiert werden)

2. Formatieren von Text innerhalb eines Tags (zwischen Anfang und Ende) durch GREP-Ersetzungen; bei wiederkehrenden Aufgaben vereinfacht über ein Set mit GREP-Ersetze-Kommandos für FeindChangeBy-List.


Exakt!
1a und 1b fällt flach.
1c oder 1d ist das was ich will!
2 fällt auch flach, weil ich aus mehreren Gründen zum Zeitpunkt des "Setzens" des Textes keinen Millimeter Platz mehr brauchen darf und will, als ich muß! Also das erstmalige Setzen inkl. Tags, um diese dann via GREP zu ersetzen/formatieren ist in meinem Fall nicht praktikabel.

Bliebe noch 1c und 1d!
Habe ich ein Snippet als Datei, ist es kein Problem. Mit place() platziere ich die Datei im InsertionPoint und fertig. Ähnlich denke ich, funktioniert das, wenn ich eine Datei mit TaggedText habe. (Habe ich aber bislang noch nie genutzt).

So, jetzt habe ich aber keine Datei, sondern nur einen String, also den Inhalt der jeweiligen Datei! Gibt es nun eine Funktion, die diesen String bekommt und daraus fertig formatierten Text setzt, oder (wie ich leider vermute) müsste ich diesen String als Datei speichern um dann die Datei importieren zu können?

Gruß,
Marc


als Antwort auf: [#458817]
(Dieser Beitrag wurde von Marc Sidon am 3. Dez 2010, 15:50 geändert)

Formatierten Text in contents übernehmen...

Martin Fischer
  
Beiträge gesamt: 12691

3. Dez 2010, 15:49
Beitrag # 12 von 22
Beitrag ID: #458822
Bewertung:
(5709 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Mit place() kann ich nur Dateien platzieren. Muss ich also den String in einer Textdatei speichern, diese dann plazieren? Oder gibt es eine andere Möglichkeit? Ich hoffe ja immernoch auf eine Funktion placeTaggedText(textToPlace), die ich übersehe...


Wie willst Du sonst an den String rankommen?
Wo ist der String, nachdem er aus der Datenbank exportiert wurde?
Doch in einer Textdatei, oder?

Angenommen Du hast einen Einfügepunkt ins_point, an dem Du die Tagged-Text Datei platzieren willst. Dann mach das etwa so:

Code
var placed_item = ins_point.place( File(''~/Desktop/tagged_text-1.txt') ); 


Wenn ich Dich richtig verstehe, dann liegen Dir keine exportierten Daten aus der Datenbank vor oder Du möchtest diesen Weg vermeiden. Aber wie greifst Du dann die Daten? Über einen Direktimport der Daten aus der Datenbank in InDesign?


als Antwort auf: [#458816]

Formatierten Text in contents übernehmen...

fabiantheblind
Beiträge gesamt:

3. Dez 2010, 15:52
Beitrag # 13 von 22
Beitrag ID: #458824
Bewertung:
(5707 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marc,

ich habe vielleicht etwas Code den du dir anpassen könntest.
Ich mache für ein privates Projekt folgendes. Text aus Open Office oder Word in ein Wordpress Blog Post einfügen. In Wordpress gibt es die Möglichkeit direkt aus Word Text einzufügen (dann kommt die Wordformatierung mit). Diese Posts exportiere ich dann als wordpress XML.

Der Text der die Word / openOffice Formatierung hatte kommt jetzt mit html tags an ( also zB <strong>Fettgedruckt</strong>).
Das xml importiere ich in InDesign und formatiere den Text mit der "Suchen und Ersetzen" Funktion.

Du kannst den aktuellen Stand meines Projekts hier finden:
https://github.com/fabiantheblind/vFFF
Ich möchte das hier jetzt nicht posten. Da es noch nicht sauber ohne Probleme funktioniert.
speziell sollte für dich dieses Teilskript interessant sein (Das funktioniert):
https://github.com/..._findChange_v0_01.js
Da findet das Suchen und Ersetzen statt.
Vielleicht hilft dir das ja.
Wenn du Fragen hast… Schreib mir.

Grüsse
:F


als Antwort auf: [#458758]

Formatierten Text in contents übernehmen...

Martin Fischer
  
Beiträge gesamt: 12691

3. Dez 2010, 15:54
Beitrag # 14 von 22
Beitrag ID: #458825
Bewertung:
(5698 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: So, jetzt habe ich aber keine Datei, sondern nur einen String, also den Inhalt der jeweiligen Datei! Gibt es nun eine Funktion, die diesen String bekommt und daraus fertig formatierten Text setzt, oder (wie ich leider vermute) müsste ich diesen String als Datei speichern um dann die Datei importieren zu können?


Du willst nicht verraten, wo Du den String her hast und in welcher Materialisierung er vorliegt. Ok.

Nun, dann füge den für Tagged-Text strukturierten(!) String in InDesign in einen temporären Textrahmen, exportiere den Inhalt des Textabschnitts in diesem Textrahmen in eine temporäre Text-Datei (Text-Export, nicht Tagged-Text-Export) und platziere diese temporäre Datei (deren Inhalt Tagged-Text strukturiert ist) an Deinem Einfügepunkt.


als Antwort auf: [#458821]

Formatierten Text in contents übernehmen...

Marc Sidon
Beiträge gesamt: 262

3. Dez 2010, 15:56
Beitrag # 15 von 22
Beitrag ID: #458826
Bewertung:
(5691 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Martin Fischer ] Wenn ich Dich richtig verstehe, dann liegen Dir keine exportierten Daten aus der Datenbank vor oder Du möchtest diesen Weg vermeiden. Aber wie greifst Du dann die Daten? Über einen Direktimport der Daten aus der Datenbank in InDesign?


Das ist es ja eben! Ich habe keine Dateien, in denen das steht! Ich habe lediglich einen String!

Also stell Dir vor, Du willst eine Funktion schreiben "PlaceHtmlTextInInDesign(aText)", wobei aText dann genau dieser "Hallo <b>Welt</b> <i>!!!</i>" - String ist. Und den will ich jetzt innerhalb der Javascript-Funktion transformieren und in einem so platzieren, dass er korrekt formatiert im Dokument erscheint!

(Zur Erklärung: ich arbeite via COM / OLE mit der Scripting API von InDesign. D.h. ich habe ein Windows-Programm, welches Datenbankzugriff hat und aus dem ich heraus, ähnlich wie über ein InDesign-Skript die Befehle der API ausführe und somit die Dokumente befülle.)


als Antwort auf: [#458822]
X