2.2 KiB
FAIL
crates/ely-platform/src/print.rs:22 — 复制 sharedPrintInfo 后保留了系统共享的 scalingFactor,PageScaleNone 只控制 PDF 页面适配,实际打印仍叠加该缩放,违反 PRD §19.3 的缩放一致性。具体场景:共享打印设置为 50%,PDF 内的图形为 200×100 点;独立副本执行生产打印函数,仅关闭面板并将系统作业指定为保存 PDF,输出图形变为 100×50 点,位置也发生偏移。在副本中加入 info.setScalingFactor(1.0) 后,同一输入恢复为 200×100 点。修复方向:用文档的输出缩放初始化此次打印设置,当前已完成布局的 PDF 应设为 1.0,并增加带非默认共享缩放值的实际输出回归。
crates/ely-platform/src/print.rs:20 — 只读取首页的 MediaBox 并把同一纸张用于整个打印操作,后续较大页面在 PageScaleNone 下被裁切,违反 PRD §19.3 的纸张及输出一致性。具体场景:两页 PDF 的首页为 A5 横向 595×420 点,第二页为 A3 横向 1191×842 点;执行生产打印函数的系统保存作业后,两页都变为 595×420 点,第二页靠两侧放置的两个 40×40 点图形全部消失。72 DPI 独立栅格检查:原第二页有 3200 个黑像素,打印第二页为 0;打印函数仍返回 Ok(true)。任务中所列“各节纸张不同未验证”已由此复现为内容裁切。修复方向:打印操作按页保留文档的纸张尺寸,预览与输出使用相同的逐页设置,并覆盖混合纸张内容边缘的回归。
tests/scripts/print.sh:64 — 纸张断言读取的是打印函数记录的输入尺寸,实际 NSPrintOperation 的纸张、边距、缩放与输出内容均未被核对,测试会放过此次任务直接修复的纸张回归。具体场景:运行时将 ElyDoc 的 NSPrintInfo.setPaperSize 替换为设置 Letter 纸张,记录确认实际纸张为 792×612 点,原函数日志仍为 595.30×419.56;保持脚本断言不变、仅调整启动以加载变异库后,脚本仍退出 0 并输出“ok: print”。原脚本和 91 项相关单测均通过。修复方向:独立读取实际系统打印设置并核对保存出的页面尺寸、边距与内容比例,使这类纸张变异能够触发测试失败。