XFA Rich Text 屬性覆寫
exData 繪製的原生壓平會為目前的 dataset occurrence 解析字型與段落屬性,包括一般 JavaScript 或 FormCalc 事件建立的覆寫
const label = xfa.resolveNode("main.row[1].label");
label.font.typeface = "Helvetica";
label.font.size = "18pt";
label.font.weight = "bold";
label.font.posture = "italic";
label.font.underline = "1";
label.font.fill.color.value = "0,128,255";
label.para.hAlign = "right";
label.para.spaceAbove = "3pt";
label.para.lineHeight = "30pt";
const span = label.value.exData.body.p.span;
span.setAttribute("color:#FFFF00", "style");
span.value = "Updated text";
字型與段落解析
typeface、size、weight、posture、underline 與 font-fill 顏色,會以生效的 instance 屬性與支援的 schema 預設值初始化 rich text run 樣式
文字量測 callback 收到生效的 typeface、size、bold 與 italic 旗標,因此量測與輸出的 run 樣式使用同一組 instance 值
Windows PDF 產生器在量測與繪製輸出時,一致地把邏輯的 Courier、Helvetica、Times 家族對應到 Courier New、Arial、Times New Roman,即使 Windows 未把邏輯名稱公開為已安裝字型,也能保留原本意圖的家族
段落的 hAlign、marginLeft、marginRight、textIndent、spaceAbove、spaceBelow 與 lineHeight 會影響 run 位置;lineHeight 不能把行進幅度壓到低於其文字所需高度
可辨識的行內 CSS 會覆寫繼承的字型或段落值;只改一個段落 margin 的宣告會保留另一個繼承來的 margin
行內 runs 在不同字型大小之間共用同一條文字 baseline,相鄰段落間距取前一個 spaceBelow 與後一個 spaceAbove 的最大值;請參閱Rich Text 段落幾何
行內內容與持久化
宣告的 XHTML property 節點上生效的 style 與 href 屬性會參與 rich text 處理,生效的 scalar 文字覆寫則取代對應的葉節點內容
建立屬性覆寫時會保留該節點的 template scalar 內容,而不是清除文字;明確的空 scalar 值會省略葉節點 run,同時保留周圍內容
僅有屬性的舊式 form 節點仍會繼承 template 文字;明確的空 CDATA 內容節點在序列化後仍保留 scalar 清空與省略 body 之間的區別
覆寫會持久化到原生 form packet、在重複 occurrence 之間彼此獨立,並在 XDP 儲存與重新載入後存活;事件失敗時逐位元組還原先前的原生文件
涵蓋範圍
此行為適用於rich text 換行 pipeline 及其可辨識的 CSS 宣告;更多 CSS 屬性、完整的 widget rich text 編輯與缺席 property 節點的隱含建立,仍是獨立目標
字型 underline 啟用使用目前的 run renderer;完整的雙底線與其他 text-decoration 幾何仍是獨立的 render 目標
相關 API
原生 XFA Property DOM、Schema 預設值、HPDFXFAResolveFormInstanceProperty與ApplyXFAAsAcroForm