Appendix A: Supported HTML tags
Der HTML-Renderer akzeptiert eine begrenzte Teilmenge für Rich Text, strukturierte Blöcke, Tabellen und explizit zugeordnete Bilder
Parameter
<p>, <br> | Absätze und feste Zeilenumbrüche, einschließlich älterer Attribute für Absatzausrichtung und Abstände |
|---|---|
<h1> through <h6> | Fette Blocküberschriften mit abnehmenden Standardgrößen |
<div>, <section>, <article>, <header>, <footer>, <main> | Blockcontainer |
<blockquote> | Eingerückter Blockinhalt |
<ul>, <ol>, <li> | Verschachtelte ungeordnete und geordnete Listen |
<b>, <strong>, <i>, <em> | Fetter und kursiver Text |
<sup>, <sub>, <u> | Hochgestellt, tiefgestellt, unterstrichen, doppelt unterstrichen, durchgestrichen und überstrichen |
<font>, <span> | Veraltete Attribute für Schrift, Farbe, Hintergrund, Kontur, Textrendermodus und abgerundeten Hintergrund |
<a href="..."> | HTTP-, HTTPS- und Dateihyperlinks |
CSS-Kaskade
Regeln können in <style>-Elementen oder Inline-Attributen style erscheinen
Selektoren unterstützen Tag, Klasse, ID, tag.class und durch Leerzeichen getrennte Nachfolgerkombinationen; nicht unterstützte Attributselektoren, Pseudoselektoren sowie Geschwister- oder Kindkombinatoren werden ignoriert
Übereinstimmende Deklarationen verwenden CSS-Spezifität und Quellreihenfolge, Inline-Deklarationen haben Vorrang, und !important wird innerhalb der unterstützten Teilmenge berücksichtigt
Unterstützte Eigenschaften umfassen die unten aufgeführten Eigenschaften für Text, Hintergrund, Schriftart, Dekoration, Ausrichtung, Zeilenhöhe, Rand, Innenabstand, Rahmen, Breite, Höhe, Anzeige und vertikale Ausrichtung sowie die Flexbox-, Grid- und Fußnoteneigenschaften in ihren jeweiligen Abschnitten
Längen akzeptieren Punkte, Pixel mit 0,75 Punkten pro Pixel, em-Einheiten, Prozentwerte und einheitenlose Punktwerte; Schriftgrößen akzeptieren außerdem die Standardskala mit Schlüsselwörtern von xx-small bis xx-large
Flexbox
display:flex und display:inline-flex unterstützen flex-direction, flex-wrap, flex, flex-grow, flex-shrink, flex-basis, justify-content, align-items, align-self, align-content, gap, row-gap und column-gap
Zeilencontainer verteilen positiven und negativen freien Platz pro Flex-Zeile, umbrochene Zeilen werden unabhängig gemessen und Spaltencontainer verteilen eine explizite oder aus dem Inhalt abgeleitete Höhe
CSS Grid
display:grid und display:inline-grid unterstützen grid-template-columns, grid-template-rows, feste, prozentuale und fr-Tracks, einfaches repeat() und minmax(), grid-column, grid-row, Start- und Endeigenschaften, Spans, Abstände, automatische Zeilen- oder Spaltenplatzierung und Ausrichtung pro Element
Ein Container nimmt höchstens 256 direkte Elemente und 64 Zeilen oder Spalten auf; verschachtelte Inhalte verwenden denselben HTML-Renderer und Layoutcache
Fußnoten
<footnote>, <aside style="float:footnote"> und <aside role="doc-footnote"> erstellen nummerierte Notizen
Textfelder mit endlicher Größe reservieren den Notizbereich am unteren Rand, bevor spätere Fließtextzeilen gesetzt werden; ein Verweis und eine Notiz, die nicht gemeinsam passen, werden im nächsten Rahmen fortgesetzt, wobei der Fortsetzungszustand die Nummerierung erhält
Tabellen
<table>, <tr>, <td> und <th> rendern vermessene Zeilen mit Hintergründen, Innenabständen, Rahmen, Textstilen und colspan für bis zu 64 Spalten
Spalten teilen die explizite Tabellenbreite oder verfügbare Breite gleichmäßig auf, Kopfzellen verwenden standardmäßig fetten Text auf hellem Hintergrund und eine Zeile wird als unteilbare Einheit im nächsten HTML-Textfeld fortgesetzt
Verschachtelte Tabellen, rowspan, zusammenfallende Rahmen und eine automatische inhaltsgesteuerte Spaltenbreite gehören nicht zu dieser Teilmenge
Bilder
<img src="name"> zeichnet ein zuvor mit SetHTMLImage gebundenes Bild
Der Renderer unterstützt Breite, Höhe, Rand, Innenabstand, Rahmen, Hintergrund und links-, zentriert- oder rechtsbündige Ausrichtung. Fehlt eine Abmessung, bleibt das natürliche Seitenverhältnis erhalten; fehlen beide, werden 0,75 Punkte pro Quellpixel verwendet
Bildquellen lösen niemals Netzwerk- oder Dateizugriffe aus, die Messung registriert keine Ressourcen und wiederholte Verwendung nutzt das gebundene Bild-XObject erneut
Grenzwerte und Wiederherstellung
Eine HTML-Eingabe akzeptiert höchstens 2048 Stylesheet-Regeln, 256 Byte pro Selektor, 4096 Byte pro Deklarationsblock, 4096 Tabellenzeilen und 4096 Tabellenzellen
Unbekannte Eigenschaften, Selektoren, Tags und Attribute werden ignoriert, während der umgebende Text erhalten bleibt; Zeichenreferenzen werden dekodiert und fehlerhafte Verschachtelungen konservativ geschlossen
Beispiel
var
LogoID: Integer;
begin
LogoID := PDF.AddImageFromFile('logo.png');
PDF.SetHTMLImage('brand-logo', LogoID);
PDF.DrawHTMLTextBox(50, 750, 420, 180,
'<style>.report h2 { color:#204080; } table { border:1pt solid #808080; }</style>' +
'<section class="report"><h2>Quarterly report</h2>' +
'<img src="brand-logo" width="72pt">' +
'<table><tr><th>Region</th><th>Total</th></tr>' +
'<tr><td>North</td><td>125</td></tr></table></section>');
end;