ADR-0058:已有 PDF 的被动交互对象编辑
状态:已接受。
决定
另设 readObjects/editObjects 入口,复用有界严格解析器,通过明确模式接受 Text/Link/Widget 批注、普通 AcroForm、页目标书签、内嵌文件名树和元数据。旧静态入口不放宽。公共投影与编辑 API 不暴露 PDFBox。
预检遍历可达与交叉引用对象;只识别必要的页面/字段/目录回链,随后专门验证字段树、页面 widget 所有权、书签父兄链及附件名树。脚本、活动动作、签名、XFA、外部资源和未支持对象不因策略忽略而放行。
同格式编辑保留未编辑内容。普通单行文本及单选下拉框使用显式完整字体、固定字号,先核对字形和框容量;保留 DA 前景色。复杂 DA/富文本等只允许跳过,不静默归零。复选框/单选组使用现有状态外观。字段不能脱离页面 widget 单独删除。
字段扁平化须有确定当前外观并明确 FORMS/DISCARD。修改 Info 遇到既有 XMP 须明确丢弃旧 XMP,避免两套元数据冲突。附件作为不透明字节返回,不执行或自动写入文件系统。
验证与边界
见API。投影不等于完整 PDF 对象模型;同格式保持和跨输入合并重映射须分别验收,签名专项独立。