[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Frage: HTML-Tags und URLs automatisch einsetzen

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

Frage: HTML-Tags und URLs automatisch einsetzen

Elo83
Beiträge gesamt: 3

20. Nov 2013, 13:54
Beitrag # 1 von 4
Bewertung:
(1325 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo

Ich habe versucht ein Script zu erstellen, dass bei gewissen Absatz- und Zeichenformaten jeweils ein HTML-Tag hinzufügt. Das ganze soll das Online-Stellen von formatierten Indesign-Texten vereinfachen.

Funktioniert soweit eigentlich ganz gut, bis auf zwei Probleme:

- Der Part in dem die Sprache im gesamten Dokument entfernt wird (HTML Tags mit typografischen Anführungszeichen funktionieren ja nicht) funktioniert erst, nachdem ich irgendwo im Dokument manuell die Sprache verändert habe. Ansonsten gibts eine Fehlermeldung (scheint den Eintrag [No Language] nicht zu kennen).

- Ich will noch eine zusätzliche Funktion hinzufügen, die bei URLs auch gleich die HTML-Tags hinzufügt. Ich habe eine GREP-Suchabfrage gefunden die die URLs findet - jedoch funktioniert das Ganze im Script eingebaut dann nicht mehr.
GREP-Abfrage: (?<![@\-])\b(?:http://|https://|www\.)?(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\.)*[a-zA-Z0-9][a-zA-Z0-9._-]+\.( ?:[a-zA-Z0-9][a-zA-Z0-9._-]*\.)*[a-zA-Z]{2,5}[^@]*?(?=(\. |,|;|:|\)|]| |"|'|$))


InDesign-Sprache ist Deutsch, falls das Einfluss hat.



So sieht der Script zur Zeit aus:
Code
app.documents[0].stories.everyItem().paragraphs.everyItem().appliedLanguage = "[No Language]"; 

// Liste aller umzuwandelnden Zeichen- (addCharTag) oder Absatzformate (addParaTag)
// Formatierung: addXyzTag ("Formatname", "Formatgruppe", gewünschter Tag [$0 in der Mitte]
addCharTag ("Hochgestellt", "Textschnitt", "<sup>$0</sup>")
addCharTag ("Bold", "Textschnitt", "<b>$0</b>")
addCharTag ("Hochgestellt Bold", "Textschnitt", "<sup><b>$0</b></sup>")
addCharTag ("Tiefgestellt", "Textschnitt", "<sub>$0</sub>")

addCharTag ("Orange", "Textfarben", '<font color="#ff9900">$0</font color>')
addCharTag ("Orange Bold", "Textfarben", '<font color="#ff9900"><b>$0</b></font color>')

addCharTag ("Rot", "Textfarben", '<font color="#990000">$0</font color>')
addCharTag ("Rot Bold", "Textfarben", '<font color="#990000"><b>$0</b></font color>')

addCharTag ("Blau", "Textfarben", '<font color="#3366cc">$0</font color>')
addCharTag ("Blau Bold", "Textfarben", '<font color="#3366cc"><b>$0</b></font color>')

addCharTag ("Grün", "Textfarben", '<font color="#5bbc2b">$0</font color>')
addCharTag ("Grün Bold", "Textfarben", '<font color="#5bbc2b"><b>$0</b></font color>')

addParaTag ("Lead", "Standard", "<b>$0</b>\r")
addParaTag ("Zwischentitel", "Standard", "<b>$0</b>")



function addParaTag (ParaStyle, ParaGroup, whatTag)
{app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.appliedParagraphStyle = app.documents[0].paragraphStyleGroups.item(ParaGroup).paragraphStyles.item(ParaStyle);
app.findGrepPreferences.findWhat = ".+";
app.changeGrepPreferences.changeTo = whatTag;
app.activeDocument.changeGrep();
app.findGrepPreferences = app.changeGrepPreferences = null;
}

function addCharTag (CharaStyle, CharaGroup, whatTag)
{app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.appliedCharacterStyle = app.documents[0].characterStyleGroups.item(CharaGroup).characterStyles.item(CharaStyle);
app.findGrepPreferences.findWhat = ".+";
app.changeGrepPreferences.changeTo = whatTag;
app.activeDocument.changeGrep();
app.findGrepPreferences = app.changeGrepPreferences = null;
}


Der Part mit den URLs sieht in meinem Versuche so aus, aber funktioniert wie gesagt leider nicht:
Code
addLinkTag ("[Ohne]", "<a href=$0>$0</a>") 

addCharLinkTag ("Orange", "Textfarben", '<a href=$0 style="color: #ffdd99">$0</a>')
addCharLinkTag ("Rot", "Textfarben", '<a href=$0 style="color: #cc6666">$0</a>')
addCharLinkTag ("Blau", "Textfarben", '<a href=$0 style="color: #99bbee">$0</a>')
addCharLinkTag ("Grün", "Textfarben", '<a href=$0 style="color: #abe58b">$0</a>')

function addLinkTag (CharaStyle, whatTag)
{app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.appliedCharacterStyle = app.documents[0].characterStyles.item(CharaStyle);
app.findGrepPreferences.findWhat = "(?<![@\-])\b(?:http://|https://|www\.)?(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\.)*[a-zA-Z0-9][a-zA-Z0-9._-]+\.( ?:[a-zA-Z0-9][a-zA-Z0-9._-]*\.)*[a-zA-Z]{2,5}[^@]*?(?=(\. |,|;|:|\)|]| |$))";
app.changeGrepPreferences.changeTo = whatTag;
app.activeDocument.changeGrep();
app.findGrepPreferences = app.changeGrepPreferences = null;
}

function addCharLinkTag (CharaStyle, CharaGroup, whatTag)
{app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.appliedCharacterStyle = app.documents[0].characterStyleGroups.item(CharaGroup).characterStyles.item(CharaStyle);
app.findGrepPreferences.findWhat = "(?<![@\-])\b(?:http://|https://|www\.)?(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\.)*[a-zA-Z0-9][a-zA-Z0-9._-]+\.( ?:[a-zA-Z0-9][a-zA-Z0-9._-]*\.)*[a-zA-Z]{2,5}[^@]*?(?=(\. |,|;|:|\)|]| |$))";
app.changeGrepPreferences.changeTo = whatTag;
app.activeDocument.changeGrep();
app.findGrepPreferences = app.changeGrepPreferences = null;
}



Hat jemand eine Ahnung wo der Fehler liegt?


PS: Anfangs hatte ich noch geplant mit if/else rausfinden zu lassen ob eine URL in einem bestimmten Zeichenformat formatiert ist und entsprechend den Tag dazuzufügen. So wäre das ganze eleganter. Habs dann aber aufgegeben da ich den Befehl zur Formatierungsabfrage nicht kenn (Scriptanfänger :P) und die Funktion die ja über eine GREP-Suche funktioniert vermutlich nicht damit kompatibel wäre.
X

Frage: HTML-Tags und URLs automatisch einsetzen

Kai Rübsamen
Beiträge gesamt: 4684

20. Nov 2013, 14:27
Beitrag # 2 von 4
Beitrag ID: #519925
Bewertung:
(1310 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Auch Hallo und Willkommen auf hds,

ich habe leider gerade keine Zeit mir dein Skript anzusehen, aber:
Du weist schon, dass du semantisch korrektes HTML inkl. funktionierender Hyperlinks direkt aus InDesign exportieren kannst?!

Ansonsten: Das mit der Sprache ist sicherlich so nicht notwendig. Es dürfte reichen, wenn du die Voreinstellungen > Eingabe > Typograf. Anführungszeichen verwenden aus- und dann wieder einschaltest.
Code
var curDoc = app.activeDocument; 
// in den Voreinstelllungen Typografische Anführungszeichen aus
var q = curDoc.textPreferences.typographersQuotes;
curDoc.textPreferences.typographersQuotes = false;

// deine Tags bzw. Attribute mit Anführungen einfügen

// in den Voreinstelllungen Typografische Anführungszeichen wieder an
curDoc.textPreferences.typographersQuotes = q;



als Antwort auf: [#519924]
(Dieser Beitrag wurde von Kai Rübsamen am 20. Nov 2013, 14:39 geändert)

Frage: HTML-Tags und URLs automatisch einsetzen

Elo83
Beiträge gesamt: 3

20. Nov 2013, 14:54
Beitrag # 3 von 4
Beitrag ID: #519928
Bewertung:
(1288 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ja und habe es zu Beginn auch damit versucht.

Allerdings wird der Text am Ende nur über eine Eingabemaske online gestellt und nicht als komplette HMTL-Datei. Über die Tags werden nur Titel, Links und Hervorhebungen formatiert. Mehr als <b>, <a href> und <font color> ist es nicht.

Beim HTML-Export kommt das ganze CSS-Zeugs dazu (glaube es ist css ^^) mit den Schriftstilen und die Farben stimmen auch nicht überein (das Original ist CMYK, online dann logischerweise RGB).
usw...


Da war das manuelle Einfügen der Tags am Ende schneller als die automatisch exportierte Datei nachträglich zu korrigieren.


als Antwort auf: [#519925]

Frage: HTML-Tags und URLs automatisch einsetzen

Elo83
Beiträge gesamt: 3

20. Nov 2013, 15:11
Beitrag # 4 von 4
Beitrag ID: #519930
Bewertung:
(1266 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke, die Typografischen Anführungseichen auszuschalten ist eine gute Idee - und so funktioniert es auch ohne Fehlermeldung.


als Antwort auf: [#519925]
X