原生 XFA 影像與圖形值
事件宿主會建立原生 image、arc、line 與 rectangle 值子節點,以及其支援的 edge、corner 與 fill 屬性路徑;draw 的生效值會送達原生 PDF 消費端
建立 draw 值
function updateGraphic(row, pngBase64) {
const image = row.logo.value.image;
image.contentType = "image/png";
image.aspect = "fit";
image.value = pngBase64;
const line = row.rule.value.line;
line.slope = "/";
line.edge.thickness = "0.25pt";
line.edge.color.value = "0,0,255";
}
原生的值類型互斥,建立時會保留 template 與其他重複 occurrence
arc 與 line 各允許一條 edge,rectangle 允許四條 edge 與四個 corner,arc 與 rectangle 各允許一個 fill
line、rectangle 與 arc 預設 hand=even;line 預設反斜線斜率,arc 預設 circular=0、startAngle=0、sweepAngle=360
image 預設 aspect=fit 與 transferEncoding=base64,contentType、href 與 name 屬性為空
影像消費
內嵌 PNG 與 JPEG 的 draw 值保留解碼後的來源顏色;PNG 透明度儲存為原生 PDF soft mask,而不是合成進來源通道
fit 在名義區域內保留影像比例,none 在兩個維度各自填滿區域,width 與 height 在符合指定維度的同時保留比例,actual 則使用影像的實體尺寸
影像在名義區域內置中並裁切到該區域;縮放與裁切不會破壞周圍的圖形狀態
actual 尺寸會讀取 PNG pHYs 密度與 JFIF 密度(每英吋點數或每公分點數);沒有受支援實體密度記錄的影像採用 96 DPI
替換既有 template 影像主體時保留其 template 屬性,除非原生表單屬性覆寫它們
FPC 消費端直接讀取原始 PNG 與 JPEG 通道,避免經由 LCL bitmap 指定造成像素損失;重複出現的相同不透明影像保留原生資源重用
圖形消費
建立的 rectangle、line 與 arc 值會產生原生路徑,帶有生效的 edge 顏色與寬度,包括低於一點的寬度;line 斜率與 arc 角度範圍都會送達消費端
新的重複 instance 取得獨立的原生圖形屬性;script 或原生屬性預算失敗時,逐位元組還原原生 XDP
剩餘改進
原生 exData XML 操作以交易方式匯入外部內容,並消費持久化的 XHTML draw
外部影像解析、EXIF 等額外實體中繼資料、imageEdit widget 消費、完整 fill 與 corner 繪製、handedness、圓弧幾何與完整 scalar 驗證,仍是獨立的實作目標
參考與相關 API
屬性文法與影像模式遵循 XFA 3.3;另請參閱 Scalar 值屬性、Draw 與 Caption 值及 互動式 XFA Runtime