hilfdirselbst.ch
Facebook Twitter gamper-media
Elo83
Beiträge: 3
20. Nov 2013, 13:54
Beitrag #1 von 4
Bewertung:
(1067 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Frage: HTML-Tags und URLs automatisch einsetzen


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.
Top
 
X
Kai Rübsamen  M  p
Beiträge: 4457
20. Nov 2013, 14:27
Beitrag #2 von 4
Beitrag ID: #519925
Bewertung:
(1051 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Frage: HTML-Tags und URLs automatisch einsetzen


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;


Gruß Kai Rübsamen
_______________________
als Antwort auf: [#519924]
(Dieser Beitrag wurde von Kai Rübsamen am 20. Nov 2013, 14:39 geändert)
Top
 
Elo83
Beiträge: 3
20. Nov 2013, 14:54
Beitrag #3 von 4
Beitrag ID: #519928
Bewertung:
(1028 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Frage: HTML-Tags und URLs automatisch einsetzen


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] Top
 
Elo83
Beiträge: 3
20. Nov 2013, 15:11
Beitrag #4 von 4
Beitrag ID: #519930
Bewertung:
(1006 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Frage: HTML-Tags und URLs automatisch einsetzen


Danke, die Typografischen Anführungseichen auszuschalten ist eine gute Idee - und so funktioniert es auch ohne Fehlermeldung.
als Antwort auf: [#519925] Top
 
X