可移植的 XFA 密码外观
单元:HPDFXFAHeadless
HPDFXFAWriteHeadlessPDF 把 XFA passwordEdit 字段消费为原生文本 widget,带 PDF 密码标志和内嵌字体的掩码外观,Windows 与 Linux 一致
外观为每个 Unicode 标量值显示一个星号:由 UTF-16 代理对表示的增补字符产生一个星号,组合标记和 ZWJ 各自贡献一个星号
原生 /V 保留完整编写的 Unicode 值;外观掩码不提供加密,也不会从 PDF 中移除该值
例如 A😀B 产生三个星号,é 产生两个,因为组合重音是独立标量
限制与取消
适配器在统计标量期间检查取消,并在分配掩码字符串之前检查剩余的聚合字形预算
TXFAHeadlessPDFResult.GlyphUnits 对密码外观统计实际生成的星号;普通文本和其他外观消费方的既有 UTF-16 核算不变
两个增补字符刚好用完剩余为 2 的 MaxGlyphs 预算;预算为 1 时在掩码分配之前失败
原始值仍受输入与对象字节限制约束,所有字段共享聚合外观预算
准备、预算和取消失败让调用方的目标位置、长度和既有字节保持不变;目标写入错误遵循流自身的部分写入行为
验证
Tests/Linux/XFAHeadlessPasswordTests.pas 以及 Windows 和 Linux 密码运行器验证精确预算、取消边界、流保留和重试行为
独立校验器检查原生值、标志、真实的 AP CID 序列、ToUnicode 和内嵌字形 ID,然后用 MuPDF 渲染并抽取保存的 PDF
自动 XFA 创建描述了其他原生字段与绘制消费方