自動 XFA rich 標題

單元:HPDFXFA、HPDFXFAHeadless 與 HPDFHeadlessAppearance

HPDFXFAWriteHeadlessPDF 直接從已儲存的 XDP 消耗生效的核取方塊與選擇鈕標題值,建立帶內嵌字型的實際原生外觀 Forms

生效的標題內容

純量標題值與 exData XHTML body 內容會成為原生文字;body 必須使用 http://www.w3.org/1999/xhtml 命名空間

部分的重複執行個體表單疊層會改變對應範本元素的文字與屬性,同時保留未變更的範本兄弟節點及其 XHTML 命名空間

成功的 exData.loadXML 整包取代,會提供實際匯入的 body,而不是把過時的範本內容合併回標題

註解與處理指示保留在原始已儲存的 XDP 中,但會從 render 用的副本中略過,因此其內容永遠不會變成可見的標題文字

render 副本限制為 4096 個節點、深度 64、65536 步疊層工作與 1 MiB 計費的來源與序列化 XHTML;原生解碼器與外觀建構器保留自己的 run、glyph 與位元組限制

真實字型字體與樣式

請提供CaptionFontFamilies 以取得實際的 regular、bold、italic、bold-italic 程式與具名家族

既有的原生 XHTML 解碼器會解析行內樣式、段落邊界、家族清單、顏色、尺寸、底線與刪除線格式;純量標題的字型尺寸、字重、姿態、字體與填色提供預設樣式

要求的字體或 glyph 缺少時,準備會失敗;這個消費端不會偽造 bold 或 italic 外觀,也不會搜尋外部字型

量測與放置

標題的量測與繪製使用同一套原生 rich 版面與提供的字型程式,包括實際的 glyph advance、樣式專屬的 ascent 與 descent、共用行基線與自動換行

固定的 left 或 right 預留會約束文字寬度;正的 top 或 bottom 預留允許在可用欄位寬度內換行

省略 reserve、為零或結構描述預設的 -1 時,使用自然標題範圍且不自動換行;明確的段落邊界仍是斷行,超出固定欄位矩形的文字會被裁切

自動 left 與 right 標題使用其自然寬度;行內標題在量測與放置時都忽略明確的 reserve

標題邊距會縮小實際文字區域,標題的水平與垂直對齊控制最終外觀的放置位置

reserve 行為遵循XFA 3.3 標題 reserve 定義

自然高度包含最後一行字型度量的範圍,加上兩側各兩點的原生內距;最終行後未使用的行距不計入

hidden 與 inactive 標題不消耗區域;invisible 標題保留量測到的區域,但不繪製也不計費標題 glyph

同一 widget 的 off、on 與 neutral 狀態共用一份實際標題 Form;重複執行個體保留獨立的內容與樣式圖

段落 margin 與自訂 line-height CSS、標題影像與其他非文字標題內容、按鈕 rich 標題,以及之後的互動式外觀重建,仍是另外的消費端工作

交易與驗收

成功的原生 property 事件可以先儲存並重新載入,再進行自動 PDF 建立;腳本失敗會還原精確的原生 XML 位元組,準備預算或取消失敗會保留目的地位元組、長度與位置

對目的地的寫入只在完整候選成功後才開始;呼叫端自己的串流寫入發生錯誤時,遵循該串流自身的語意,對任意不可回溯的目的地無法回復

Tests/Linux/XFAHeadlessRichCaptionTests.pas 產生實際帶樣式、換行、家族選取與不可見標題的 PDF;XFAHeadlessRichCaptionRuntimeTests.pas 涵蓋重複疊層、整包 XML 取代與回復

XFAHeadlessRichCaptionBudgetTests.pas 演練真實的資源失敗與選定的取消邊界,HeadlessTextExtentTests.pas 則公開量測到的原生行範圍

Verify-XFAHeadlessRichCaptions.py 檢查已儲存的 PDF 圖形、精確提供的字型程式位元組、共用參考、Unicode 文字、原始文字矩陣、fontTools 度量與 MuPDF render 像素,全程不開啟閱讀器 UI

唯讀的 TextHeight · 布林 callback 中繼資料 · 布林標記與狀態