Comet 4 bietet ab der Version 4.0.5 die Möglichkeit, Textrahmen als HTML Dokument zu exportieren. Stilinformationen werden dabei als CSS Datei ausgegeben. Ziel ist eine möglist genaue Abbildung der InDesign®-Inhalte im HTML Dokument.
Ab Comet 4.1 R20505 gibt es die Möglichkeit, HTML-formatierten Text in InDesign®-Dokumente zu importieren
Die Comet Plugins exportieren den formatierten Text eines Rahmens. Stilinformationen des Dokumentes werden gesammelt und in eine seperate CSS Datei im "resources"-Unterordner des Zielordners abgelegt. Die CSS Stilinformationen ergeben sich aus Absatzformaten, Zeichenformaten, Tabellenformaten und Zellenformaten. Grundsätzlich werden alle unterstützten Stile des Dokumentes exportiert.
Beachten Sie bitte: Der HTML-Export erzeugt keine HTML-Seiten der InDesign®-Dokumentseiten.
Da HTML eine Textstruktur hat, die der von InDesign® ähnelt, wird die Textstruktur folgendermaßen übersetzt:
Lokale Stiländerungen werden dabei direkt in das Stilattribut des jeweiligen Elementes geschrieben.
Attribut | CSS | Info | ||||||||||||||||||||||||||||||||||||
Schriftfamilie | font-family | |||||||||||||||||||||||||||||||||||||
Schriftschnitt | font-weight |
In HTML/CSS ist es kaum möglich, einen Schriftschnitt direkt anzugeben - der Schriftschnitt wird mit Hilfe von Stärke, Stil und Streckung festgelegt. Die Werte für diese Attribute werden mit Hilfe der fontDB berechnet. Nicht in fontDB definierte SchriftenIst der Font nicht in der fontDB beschrieben, werden die Attribute aus dem Namen der Schrift bestimmt. Fontnamen unterliegen keinerlei Regeln. Die Ermittlung der Schriftattribute aus dem Fontnamen ist deshalb nur ein sehr ungenaues Hilfsmittel. Sie sollten in jedem Fall dafür sorgen, dass alle verwendetn Schriften auch in der fontDB beschrieben sind. Folgende Namensteile im Fontnamen werden unterstützt:
|
||||||||||||||||||||||||||||||||||||
font-style | ||||||||||||||||||||||||||||||||||||||
font-stretch | ||||||||||||||||||||||||||||||||||||||
Zeilenabstand | line-height | |||||||||||||||||||||||||||||||||||||
Buchstabenart | text-transform | Nur "Großbuchstaben" - text-transform:uppercase | ||||||||||||||||||||||||||||||||||||
Position | vertical-align |
|
||||||||||||||||||||||||||||||||||||
Unterstrichen | text-decoration | text-decoration: underline | ||||||||||||||||||||||||||||||||||||
Durchgestrichen | text-decoration | text-decoration: line-through | ||||||||||||||||||||||||||||||||||||
Grundlinienversatz | vertical-align | Nicht kompatibel mit "Position" | ||||||||||||||||||||||||||||||||||||
Ausrichtung | text-align |
|
||||||||||||||||||||||||||||||||||||
Listentyp: Aufzählungszeichen | Unterstützt werden nur die normalen CSS/HTML Aufzählungszeichen, die in <ul> verwendet werden. | |||||||||||||||||||||||||||||||||||||
Listentyp: Nummerierung, Format | list-style-type |
|
||||||||||||||||||||||||||||||||||||
Listentyp: Nummerierung, Modus | start | "Nummerierung fortführen" und "Beginnen mit" werden beide unterstützt | ||||||||||||||||||||||||||||||||||||
Zeichenfarbe | color: rgb(r, g, b) color: #FF0000 |
Farbnamen (Swatches) werden nicht unterstützt |
Zeichenformate werden als <span>-Element in HTML dargestellt. Die unterstützten Parameter entsprechen den Absatzformaten.
Tabellen werden als <table>-Element in HTML dargestellt. Sie unterstützen Kopfzeilen, Fußzeilen, verbundene Zellen und folgende Tabellenformatattribute:
Attribut | CSS | Info | ||||||||||||||||
Zellenformate | Unterstützt werden alle Einstellungen | |||||||||||||||||
Tabellenrahmen, Stärke | border-left-width border-right-width border-top-width border-bottom-width |
|||||||||||||||||
Tabellenrahmen, Farbe | border-left-color border-right-color border-top-color border-bottom-color |
|||||||||||||||||
Tabellenrahmen, Art | border-left-style, border-right-style, border-top-style, border-bottom-style |
|
||||||||||||||||
Flächen, Abwechselndes Muster |
table.Tabellenname tr oder td:nth-child (Blockgröße + Erste Zeilen/Spalten überspringen) :nth-last-child (n + Letzte Zeilen/Spalten überspringen), background-color |
Um dieses Attribut in einen CSS Stil zu übersetzen müssen zwei Stildefinitionen notiert werden, um beide Füllfarben zu definieren. Leider ist es nicht möglich, eine Blockgröße zu definieren, weshalb für jeden Index des Blockes ein eigener Selektor benötigt wird. z.B. Erste Zwei Zeilen Cyanfarben, Nächste 3 Zeilen Magentafarben (Blockgröße = 5), Erste Drei Zeilen überspringen, Letzte Vier Zeilen überspringen: table.priint_KTabelle tr:nth-child(5n + 4):nth-last-child(n + 5), tr:nth-child(5n + 5):nth-last-child(n + 5) { background-color: rgba(0, 158, 227, 1.00); } table.priint_KTabelle tr:nth-child(5n + 6):nth-last-child(n + 5), tr:nth-child(5n + 7):nth-last-child(n + 5), tr:nth-child(5n + 8):nth-last-child(n + 5) { background-color: rgba(229, 0, 125, 1.00); } |
Tabellenzellen werden als <td> Elemente dargestellt. Folgende InDesign® Formatierungsoptionen für Zellenformate werden unterstützt:
Attribut | CSS | Info | ||||||||||||||||
Absatzformate | Setzt das Absatzformat des Inhaltes | |||||||||||||||||
Textdrehung | transform: rotate(%ddeg) | Wird auf das <p>-Element innerhalb der Zelle angewendet, da sonst die Zelle gedreht wird. | ||||||||||||||||
Zellenkontur, Stärke | border-left-width border-right-width border-top-width border-bottom-width |
|||||||||||||||||
Zellenkontur, Art | border-left-style, border-right-style, border-top-style, border-bottom-style |
|
||||||||||||||||
Zellenkontur, Farbe | border-left-color border-right-color border-top-color border-bottom-color |
|||||||||||||||||
Zellfläche, Farbe | background-color: rgb(r, g, b) background-color: #00FF00 |
|||||||||||||||||
Zellversatz | padding-left padding-top padding-right padding-bottom |
Für die Aufzählungspunkte (<li>) von Listen (<ul> und <ol>) wird im TaggedText jeweils ein neuer Absatz erzeugt.
Für die Aufzählungspunkte wird nur die Schreibweise <li>....</li> unterstützt; die Schreibweise <li/> wird nicht unterstützt.
Text zwischen den einzelnen Aufzählungspunkten, sogenannter Raw-Text, wird ignoriert.
Beginnt der HTML-Text mit einer Aufzählungsliste, wird für den Absatztrenner ein zuätzliches <ParaStyle:> an den Beginn der TaggedText-Ausgabe geschrieben. Um den zusätzlichen Absatztrenner beim Einfügen am Textanfang zu unterdrücken, rufen Sie die Funktion html::to_tagged mit folgender Zusatzangabe:
html::to_tagged (html_text, ttResult, "kListAware", 1 ...)
html::to_tagged wird dann (und nur dann) statt des üblichen <ParaStyle:> am Anfang des Ergebnis-TaggedTexts das Pseudo-Tag <OptionalParaStyle:> einfügen. Die priint:comet-Funkionen zum Ein- und Anfügen von Text kennen dieses Tag und
Beachten Sie bitte Folgendes:
Diverse InDesign® Steuerzeichen sind entweder in HTML nicht verfügbar oder haben eigentlich eine andere Bedeutung. Diese Zeichen werden folgendermaßen exportiert:
<?ACE HEXCODE ?>, also z.B. <?ACE 8 ?> für das rechtsbündige Tab.
Folgende Zeichen werden so behandelt:
Hexcode | Normale Bedeutung | InDesign® Bedeutung |
0003 | End of text | Verschachteltes Format hier beenden |
0004 | End of transmisson | Fußnote |
0007 | Bell | Einzug bis hierhin |
0008 | Backspace | Tabulator für rechte Ausrichtung |
0016 | Synchronous idle | Tabellenanker |
0017 | End of transmission block | Tabellenfortsetzung |
0018 | Cancel | Seitennummer |
0019 | End of medium | Absatzname |
001A | Substitute | "non roman special glyph" |
Beim Import werden diese Zeichen dann natürlich zurückgewandelt.
Um TaggedText direkt im HTML zu definieren, verwenden Sie das Pseudo-Tag
<?IDTT ?>
Der Inhalt dieser Tags wird direkt und ohne weitere Konvertierungen in das Ergebnis übernommen. Whitspaces zwischen dem Text und den ? werden ignoriert.
Inline Rahmen werden als seperate HTML Dokumente exportiert und über das iframe-Element verlinkt. Der Dateiname ist dabei die UID des Rahmens + ".html". Es werden Inline-Textrahmen und -Bildrahmen unterstützt. Im Falle eines Bildrahmens besteht die Option, das Bild nur zu verlinken oder es in den "resources" Unterorder des Zielordners zu kopieren. Sollte ein verlinktes Bild nicht mehr existieren, wird ein PNG des Bildes exportiert und ebenfalls im "resources" Unterordner abgelegt. Der Bildname entspricht dabei dem ursprünglichen Namen des Bildes erweitert um die Endung ".png", falls das Ursprungsbild kein PNG war.
InDesign® unterscheidet zwei Arten von Stilhierarchien: Die erste Art bestimmt, auf welchem Stil ein Stil basiert, die zweite unter welchen Stilordner er untergeordnet ist. Beide Arten werden im HTML Export berücksichtigt.
Um die Stilordnerhierarchie beizubehalten werden Stile folgendermaßen im CSS notiert:
p.FormatGruppe1.Absatzformat2 { }
Anwendung im Dokument findet wie folgt statt:
<p class="FormatGruppe1 Absatzformat2"></p>
Auf diese Weise lässt sich nachvollziehen, welcher Stil in welchen Stilordner eingeordnet war.
Leider ist es in CSS nicht direkt möglich, Stile basierend auf anderen Stilen zu erstellen. Der Comet löst das Problem, indem in den CSS Stilen auch Selektoren für die untergeordneten Stile notiert werden. Die Stile haben dabei als Eigenschaften die Differenz zu ihrem übergeordneten Stil. Anschließend wird nur der unterste Stil der Hierarchiekette angewendet.
Im folgenden Beispiel verändert "Absatzformat1" den Schriftschnitt, "Absatzformat2" basiert auf "Absatzformat1" und verändert die Schriftgröße.
Die CSS Notation lautet wie folgt:
p.Absatzformat1, p.Absatzformat2 { font-family: 'Calibri'; }
p.Absatzformat2 { font-size: 14pt; }
Anwendung im Dokument findet wie folgt statt:
<p class="Absatzformat2"></p>
In InDesign® ist es möglich, ohne größere Einschränkungen Namen an Stile zu vergeben. In HTML und CSS ist man da leider etwas eingeschränkt. In CSS haben folgende Zeichen eine besondere Bedeutung:
! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ ` { | } ~
Leerzeichen zwischen Stilnamen werden in HTML/CSS verwendet, um Stildefinitionen zu vererben. In InDesign® ist die Vererbung bereits in die Definition der Stile integriert und Leerzeichen sind (normaler) Teil des Stilnamens. Wollen Sie Stile mit Leerzeichen im HTML-Code verwenden, müssen die Leerzeichen entsprechend kodiert werden, z.B. mit %20. Mehr Infos zu den Kodierungen finden Sie im Folgenden.
Des weiteren dürfen CSS Namen nicht mit einer Zahl oder mit einem Bindestrich gefolgt von einer Zahl beginnen. Aus diesem Grund erhält jeder Stilname das Prefix "priint_".
Ab Comet 4.1 R21800 gibt es zwei verschiedene Möglichkeiten die Stilnamen zu exportieren. Dazu wird der Parameter "kCSSEscapeMode" der cScript Funktion html::export_ verwendet.
Folgende Modi sind verfügbar:
Hex-Modus:
In diesem Modus wird jedes der oben aufgeführten Zeichen durch eine Hex-Escapesequenz ersetzt: 0x + Hexcode des Zeichens. Also z.B. 0x002B für das Gleichheitszeichen. Sie sollten darauf achten, solche Sequenzen in Ihren ursprünglichen Stilnamen zu vermeiden, da eine eventuelle Rückübersetzung nicht mehr eindeutig ist. Der Vorteil dieses Modus ist, dass Stilnamen im CSS und HTML exakt gleich sind.
Beispiele:
Stilname | CSS & HTML |
Hallo Welt | priint_Hallo0x0020Welt |
x< und %20 | priint_x0x003E0x0020und0x00200x002520 |
AAA% %BBB | priint_AAA0x00250x00200x0025BBB |
Slash-Modus:
Dieser Modus setzt in der CSS Definition einen backslash vor jedes nicht unterstützte Zeichen, in der Anwendung im HTML Text jedoch nicht. Die Stilnamen werden dadurch einfacher zu lesen, allerdings unterscheiden sich CSS Definition und HTML Anwendung, was eventuelle Bearbeitung durch z.B. Textersetzung erschwert. Außerdem werden einige Zeichen gesondert behandelt:
Zeichen | CSS | HTML |
Leerzeichen | \%20 | %20 |
% | \%25 | %25 |
< | \< | < |
> | \> | > |
" | \" | " |
& | \& | & |
Beispiele:
Stilname | CSS | HTML |
Hallo Welt | priint_Hallo\%20Welt | priint_Hallo%20Welt |
x< und %20 | priint_x\>\%20und\%20\%2520 | priint_x>%20und%20%2520 |
AAA% %BBB | priint_AAA\%25\%20\%25BBB | priint_AAA%25%20%25BBB |
Zum Import von HTML wird der HTML-Text in TaggedText umgewandelt. Bitte haben Sie Verständnis dafür, dass nur ein beschränkter Umfang der Möglichkeiten, die HTML und CSS bieten, unterstützt werden kann.
Auf Grund der Komplexität von HTML können der HTML-Importe nicht vom WERK II Support abgedeckt werden!
Zum Import von HTML können Sie die Funktion html::to_tagged verwenden. Alternativ und bei direkter Textübergabe können Sie die _html_-Kennung für %!TT-Texte verwenden:
%!TT_html_...
Folgende Tags werden unterstützt:
Tag | Bedeutung | Info |
<p> | Absatz | |
<span> | Zeichenstil | Zeichenstil oder lokale Änderung von unterstützten Textattributen |
<table> | Tabelle | Entweder: Nur <tr> Unterknoten. Oder: <thead>, <tbody>, und <tfoot> und darunter <tr> Unterknoten. |
<thead> | Tabellenkopf |
Direkt unter <table>. Bitte beachten Sie bei der Verwendung von <thead>, dass die Body-Zeilen in einem <tbody>-Element eingeschlossen sein müssen. Optional kann nach dem <tbody>-Element noch ein <tfoot>-Element folgen. Hier ein Beispiel. Zur besseren Lesbarkeit sind Zeilentrenner und Tabs eingefügt. <table> <thead> <tr> <td>Company</td> <td>Contact</td> <td>Country</td> </tr> </thead> <tbody> <tr> <td>Alfreds Futterkiste</td> <td>Maria Anders</td> <td>Germany</td> </tr> <tr> <td>Centro comercial Moctezuma</td> <td>Francisco Chang</td> <td>Mexico</td> </tr> </tbody> </table> |
<tbody> | Tabellenkörper |
Direkt unter <table>, in Verbindung mit (optional) <thead> und (optional) <tfoot>. Siehe auch <thead>. |
<tfoot> | Tabellenfuß |
Direkt unter <table>, in Verbindung mit <tbody> und (optional) <thead> Siehe auch <thead>. |
<tr> | Tabellenzeile | |
<td> | Tabellenzelle | Tabellenzelle unterhalb von <tr> |
<th> | Zelle einer Kopfzeile einer Tabelle |
[Seit v5.0 R36940] Innerhalb eines <thead> Elementes einer Tabelle kann das Tag alternativ zu <td> verwendet werden und ist gleichwertig zu <td>. Ohne <thead> Element gilt: Ist mindestens ein Unterelement einer Zeile (<tr>) ein <th> Element, wird die gesamte Zeile als Kopfzeile interpretiert. Kopfzeilen müssen am Anfang der Tabelle definiert sein. Kopfzeilen zwischen normalen Zeilen führen zu Fehlern bei der Auswertung des Eingabetextes. |
<ul> | Liste mit Bulletpoints | |
<ol> | Liste mit Aufzählungszeichen | |
<li> | Listenelement | Unterstützender Knoten für Listen - wird zusammen mit <ol> oder <ul> zur Liste. |
<?ACE ...?> | InDesign® Steuerzeichen | Tag für Einsetzungen von InDesign® Steuerzeichen. Siehe hier. |
<i> <em> |
Italic |
Zur Berechnung des benötigten Schriftschnittes der aktuellen Schriftfamilie wird die fontDB verwendet. Ist im HTML-Text noch keine Schriftfamilie festgelegt, wird die Schriftfamile der Einfügestelle im InDesign®-Text verwendet. |
<b> <strong> |
Bold | |
<s> <del> <strike> |
Durchstreichung | Wird von CSS Attribut text-decoration: line-through überschrieben. Siehe hier. |
<u> | Unterstreichung | Wird von CSS Attribut text-decoration: underline überschrieben. Siehe hier. |
<br> | Softreturn | \n |
<sub> | Tiefgestellt | |
<sup> | Hochgestellt | |
<img> | Bild |
Einfügen eines Web-Bildes in einem Inline-Rahmen des Textes.
Die folgenden Attribute müssen abgegeben sein:
|
<a> | Link |
[Seit v5.0 R37000] Umwandlung von HTML-Links der Form
href: Verweisziel
class: (optional) Zeichenstil ( <a href = 'http://www.hi13.de' class = 'Group 1:My Style'> length: (optional) InDesign® kennt leider keine Ende-Tags für Hyperlinks. Stattdessen wird die Länge bereits im Attribut <HyperlinkLength:12> des öffnenden Tags erwartet. Enthält der Text des Verweises nur Buchstaben und HTML-Entities wie ü oder × und <img>-Tags, kann die Länge automatisch berechnet werden und Sie können das Attribut length weglassen oder auf den Wert '0' setzen. Sollte Ihr Verweis-Text aber aus irgendeinem Grund anderes als nur Buchstaben HTML-Entities und <img>-Tags enthalten, müssen Sie hier eine geeignete Länge angeben! Achten Sie in diesem Fall darauf, dass die Länge weder über das Textende (in Tabellenzellen das Zell-Ende) hinausragt, noch dass es Überscheidungen mit nachfolgenden Hyperlinks gibt!<a href = 'http://www.hi13.de' length='8'>Die Werte müssen in einfache (') oder doppelte (") Anführungszeichen eingeschlossen sein. Alle anderen von HTML möglicherweise unterstützen Attribute werden ignoriert. Als Name des InDesign®-Hyperlinks wird der auf maximal 32 Zeichen gekürzte Text zwischen öffnendem und schließenden
ACHTUNG: InDesign®-Hyperlinks benötigen neben dem eigentlichen Verweis (das, was man im Dokument sieht)
zusätzlich eine interne Zieldefinition ( Beim Aufruf der Funktion html::to_tagged wird zur Berechnung der nötigen HyperlinkDestDefs das aktuelle Skriptdokument verwendet. Da Skripte aber auch ohne Dokument ausgeführt werden können, muß dem Funktionsaufruf explizit mitgeteilt werden, dass er das Skriptdokument verwenden darf. Verwenden Sie dazu das Schlüsselwort kForFrontDocument mit dem Wert 1: string::set (tt, html::to_tagged (str, "kForFrontDocument", 1)); Bei Verwendung des Pseudo-Prefixes %!TT_html_ zur automatischen Übersetzung von HTML in TaggedText stellt sich dieses Problem nicht - diese Texte können sowieso nur in Verbindung mit einem definierten Rahmen oder Textmodell verwendet werden (aus denen sich das Dokument leicht ableiten lässt): string::set (tt, "%%!TT_html_%s", str); frame::replace (gFrame, tt); |
Andere Tags wie z.B. <div> oder Kommentare (<!--...-->
) werden überlesen und ignoriert
Derzeit werden die vom Export geschriebenen CSS Stildefinitionen nicht importiert!
Entsprechend des HTML Exportes werden Formate auf den HTML Knoten durch das Attribut "class" bestimmt. Dabei entspricht das "class" Attribut folgender Knoten folgenden Formaten:
<p>, <li> | Absatzformat |
<span> | Zeichenformat |
<table> | Tabellenformat |
<td> | Zellenformat |
"priint_"-Prefixe in Stilnamen werden entfernt. In HTML reservierte Zeichen, die durch eine Escapesequenz ersetzt wurden, werden zurückersetzt.
Der Import von CSS Attributen wird derzeit nur als Style-Attribut eines HTML Knotens unterstützt (z.B. <span style="font-size:20pt">).
Dabei gilt: Es gilt immer das "zu unterst" gesetzte Attribut, also das Attribut, was in der Hierarchie dem notierten Inhalt am nächsten ist. So wird z.B. das Textattribut "font-size" auf einem <p>-Knoten überschrieben, wenn darunter ein <span> Knoten das selbe Attribut setzt.
Folgende Attribute werden unterstützt:
CSS Attribut | Unterstützte Werte / Einheiten | Info |
font-family | Nur family-name Werte, nicht generic-family. Siehe hier | Alle Werte müssen mit Anführungszeichen umschlossen sein! z.B. style="font-family: 'Minion Pro';"
Mehr Infos hier. |
font-size | int oder float, z.B. font-size: 24pt; |
Schriftgröße in Punkten [seit v4.1 R23700] Folgende Einheiten sind erlaubt: pt Relative Größenangaben werden nicht unterstützt! |
font-weight | 100, 200, ..., 900 400 entspreicht normal |
Zur Berechnung des benötigten Schriftschnittes der aktuellen Schriftfamilie wird die fontDB verwendet. Ist im HTML-Text noch keine Schriftfamilie festgelegt, wird die Schriftfamile der Einfügestelle im InDesign®-Text verwendet. |
font-style | italic oblique |
|
font-stretch | ultra-condensed extra-condensed condensed semi-condensed normal semi-expanded expanded extra-expanded ultra-expanded |
|
color | rgb(int, int, int) #0000FF MyColor 'Meine Farbe' |
Schriftfarbe Unterstützung benannter Dokumentfarben seit v4.3 R34050 |
text-decoration | underline line-through |
|
CSS Attribut | Unterstützte Werte / Einheiten | Info |
text-align | left, right, center, justify |
Textausrichtung. Für den Wert justify wird das Tag <pTextAlignment:JustifyFull> verwendet. Andere Blocksatzformate werden nicht unterstützt. |
CSS Attribut | Unterstützte Werte / Einheiten | Info |
width, height |
int oder float |
Spaltenbreite/höhe in Punkten. Bei widersprüchlichen Angaben wird der größte Wert verwendet. [seit v4.1 R23700] Folgende Einheiten sind erlaubt: pt Relative Größen und direkte Attribute wie <td width="60pt">Title</td> werden nicht unterstützt! Hier ein Beispiel: <td style="width:60pt">Title</td> |
HTML-Entities in der Dezimal- (z.B.  ) und Hexadezimalschreibweise (z.B.  ) werden unterstützt und durch die entsprechenden Zeichen ersetzt (z.B. bei html::to_tagged oder Direktimport in Illustrator). Zusätzlich werden Schlüsselwörter für HTML-Entities (z.B. ) unterstützt. Die komplette Liste finden Sie auf https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references
Für die Unterstützung von HTML steht eine Reihe an cScript Funktionen zur Verfügung:
Export:
Import:
Sonstiges:
Einfacher HTML Export eines Textrahmens:
int main() { String folder = string::alloc(); String docName = string::alloc("HTML Export"); int err = 0; err = file::select_folder (folder); if (err) { return 0; } document::name(docName); html::export_frame( gFrame, "kOutputFolder", folder, "kOutputName", docName, "kDocTitle", "Hello World", "kCSSEscapeMode", 0); return 0; }