Appendix A: Supported HTML tags
HTML 描繪器接受有界子集,涵蓋 Rich Text、結構化區塊、表格與明確對映的影像
參數
<p>, <br> | 段落與強制斷行,包括舊式的段落對齊與間距屬性 |
|---|---|
<h1> through <h6> | 粗體區塊標題,預設尺寸逐級遞減 |
<div>, <section>, <article>, <header>, <footer>, <main> | Block containers |
<blockquote> | Indented block content |
<ul>, <ol>, <li> | 巢狀的項目符號與編號清單 |
<b>, <strong>, <i>, <em> | Bold and italic text |
<sup>, <sub>, <u> | 上標、下標、底線、雙底線、刪除線與頂線 |
<font>, <span> | 舊式的字型、顏色、背景、外框、文字描繪模式與圓角背景屬性 |
<a href="..."> | HTTP、HTTPS 與檔案超連結 |
CSS 串聯
規則可出現在 <style> 元素或行內 style 屬性中
選擇器支援標籤、類別、ID、tag.class 與空白後代組合;不支援的屬性選擇器、偽類選擇器與兄弟/子項組合器會被忽略
樣式宣告的匹配依 CSS specificity 與來源順序,行內宣告優先;支援子集內會遵循 !important
支援的屬性包括下面列出的文字、背景、字型、裝飾、對齊、行高、邊距、內距、框線、寬、高、display 與垂直對齊屬性,以及各自章節中的 Flexbox、Grid 與註腳屬性
長度接受點、像素(每像素 0.75 點)、em 單位、百分比與不帶單位的點值;字型大小還接受 xx-small 到 xx-large 的標準關鍵字級距
Flexbox
display:flex 與 display:inline-flex 支援 flex-direction、flex-wrap、flex、flex-grow、flex-shrink、flex-basis、justify-content、align-items、align-self、align-content、gap、row-gap 與 column-gap
列容器按每條 flex 行分配正負剩餘空間,換行列各自獨立量測,欄容器則分配顯式高度或由內容推導的高度
CSS Grid
display:grid 與 display:inline-grid 支援 grid-template-columns、grid-template-rows、固定/百分比/fr 軌道、簡單的 repeat() 與 minmax()、grid-column、grid-row、start/end 屬性、span、gap、列或欄自動放置,以及逐項對齊
單一容器最多接受 256 個直接項目與 64 列或欄;巢狀內容使用同一套 HTML 描繪器與版面快取
腳註
<footnote>、<aside style="float:footnote"> 與 <aside role="doc-footnote"> 會建立編號註記
有限文字框會先在底部保留註腳區,再排其後的正文行;參照與註腳放不下時會一起延續到下一個框架,延續狀態會保留編號
表格
<table>、<tr>、<td> 與 <th> 會依量測結果描繪列,支援背景、內距、框線、文字樣式,以及最多 64 欄的 colspan
欄寬均分顯式表格寬度或可用寬度,表頭儲存格預設為粗體加淺色背景,一列在下一個 HTML 文字框中仍作為單一原子單位接續
巢狀表格、rowspan、框線合併與依內容自動計算欄寬都不在這個子集內
影像
<img src="name"> 會描繪先前以 SetHTMLImage 綁定的影像
描繪器支援寬、高、邊距、內距、框線、背景與靠左/置中/靠右對齊;只給一個維度時保持自然長寬比,省略的維度以每來源像素 0.75 點計
影像來源絕不觸發網路或檔案存取;量測不登錄資源;重複使用時重用已綁定的影像 XObject
邊界與復原
單一 HTML 輸入最多接受 2048 條樣式表規則、每個選擇器 256 位元組、每個宣告區塊 4096 位元組、4096 列表格與 4096 個儲存格
未知的屬性、選擇器、標籤與屬性會被忽略,周圍文字保留;字元參照會解碼,格式錯誤的巢狀會保守地補上結尾
範例
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;