2.0 KiB
FAIL
crates/ely-pdf-engine/shim/ely_mupdf.c:125 — 损坏扫描跳过图片流,图片解码失败后的普通渲染也返回成功,受损文件仍能通过 Save 覆盖原件,违反 PDF-14 和错误须暴露的规则。具体场景:xref、对象偏移与流长度正确,页面绘制一个 4×4 RGB 图片,其 /FlateDecode 流为 not a zlib!!。真实 worker 报 zlib error: incorrect header check、read error; treating as end of file、padding truncated image;修复报告却为 None,图片导出报错,普通渲染和保存成功。应用探针确认 risk=None、repair=None;旋转后执行 Save,原件从 685 字节变为 692 字节,原件保留断言失败。证据:/tmp/ely-c118-r3-final-probes.log;副本中去掉图片流的扫描豁免后,修复报告断言通过(/tmp/ely-c118-r3-image-repair-probe.log)。修复方向:把图片解码失败纳入损坏判定和错误回报;延迟解码时也须在渲染或保存路径更新恢复风险,受损会话保存到独立副本。补充有效 xref 配合损坏图片流的应用保存回归。
apps/ely-pdf/src/output.rs:101 — 图片导出在等待排队编辑及路径选择之前捕获页码,执行时继续使用旧页码,缺少文档版本核对;结构编辑后会成功导出另一页,违反 PDF-13。具体场景:三页宽度依次为 100、200、300 点,选择第二页;删除第一页仍在排队时打开导出、选择“所选”、72 dpi,再选输出目录。经实际 on_export、choose_export 和路径选择回调复现:删除完成后,旧索引 1 指向原第三页,生成的 doc-2.png 宽度为 300 像素,所选页应为 200 像素,所选页内容断言失败。证据:/tmp/ely-c118-r3-final-probes.log,r3_a_picked_image_keeps_its_page_across_pending_delete。修复方向:将所选页与发起时的文档版本绑定,在等待编辑完成及路径回调后核对;版本变化时明确拒绝过期请求,或从该版本的快照导出。回归须覆盖排队删页、移动页面以及延迟路径选择。