原生 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";
}

原生值的选择互斥,创建过程保留模板与其他重复出现实例

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 使用物理图像尺寸

图像在名义区域内居中并裁剪到该区域;缩放与裁剪不破坏周围 graphics state

actual 尺寸读取 PNG pHYs 与 JFIF 密度(每英寸或每厘米点数);没有受支持物理密度记录的图像用 96 DPI

替换既有模板图像 body 时保留其模板属性,除非原生表单属性覆写它们

FPC 消费方直接读取原始 PNG 与 JPEG 通道,避免经 LCL bitmap 赋值造成像素损失;重复的相同不透明图像保留原生资源复用

图形消费

创建的 rectangle、line 与 arc 值生成带生效 edge 颜色与宽度的原生路径,包括小于一磅的宽度;line 斜率与 arc 角度范围会送达消费方

新的重复实例获得独立的原生图形属性;脚本或原生属性预算失败会按字节精确还原原生 XDP

剩余细化

原生 exData XML 操作按事务语义导入外部内容并消费持久化的 XHTML draw

外部图像解析、EXIF 等额外物理元数据、imageEdit 控件消费、完整 fill 与 corner 渲染、handedness、圆弧几何与完整标量校验仍是独立实现目标

参考与相关 API

属性文法与图像模式遵循 XFA 3.3;参见 标量值属性、Draw 与 Caption 值和 交互式 XFA 运行时