原生 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