## 现象 PDF 中使用 JPEG2000(JPXDecode)编码的图像在拆页渲染时被静默丢弃,渲染出的页面图像为空白,全程只有一条 warn 日志,界面没有任何提示。空白页交给模型后,要么报 empty content 并重试失败,要么模型输出占位内容被标记为成功(后者为读代码推断)。 ## 复现步骤 1. 生成一份整页 JPXDecode 图像的 PDF(小S 的脚本:`/tmp/pr92-review/scripts/make-jpx.py`)。 2. 用 `renderPdfPages` 渲染并统计暗像素。 3. 当前代码暗像素为 0;设置 `wasmUrl` 后为 38841(预期约 38400)。 证据:本轮只读评估顺着 pdf.js 5.4.530 源码确认了失败链路(无 `wasmUrl` 时 OpenJPEG 初始化失败,worker 捕获后以 `null` 图像数据继续渲染);渲染结果来自小S 审查 PR #92 时的探针。评估基准 commit `ed7e9e8`。 ## 代码位置 - `src/core/infrastructure/adapters/split/PDFPageRenderer.ts:41-42`:只设置了 `cMapUrl` 和 `standardFontDataUrl`,未设置 `wasmUrl`;`src`、`scripts`、`package.json` 中搜不到 `wasm` - `src/core/infrastructure/adapters/split/PDFPageRenderer.ts:52-55` - pdf.js:`pdf.mjs:15115-15116`、`pdf.worker.mjs:11959-11961, 11990-11991, 38574, 38578` ## 风险等级 高。 ## 产品判断 扫描件和部分出版物 PDF 常用 JPEG2000,这些页面整页内容丢失,而且用户看不到任何错误,转换结果静默错误或白白消耗模型费用。修复成本低(一行配置加打包检查),必修。 ## 建议修法 - 设置 `DOCUMENT_INIT_PARAMS_DEFAULTS.wasmUrl = `${path.join(pdfjsRoot, 'wasm')}/``。 - 把 `wasm/openjpeg.wasm` 加入启动自检的 `expectedFiles`。 - 在 `scripts/fixtures/pdf-render-check.*` 补 JPX 样例,让 `verify:package` 覆盖打包(asar)场景。 ## 验收标准 - 含 JPXDecode 图像的 PDF 拆页后图像正常绘制(上述探针暗像素约 38400)。 - 打包版(至少 verify:package)能加载 `openjpeg.wasm` 并通过 JPX 样例检查。 - 若 wasm 缺失,启动自检能发现。 来源:小S 对 PR #92 审查遗留,经只读评估确认。
Activity
fix(split): set the pdf.js wasmUrl so JPEG2000 images get drawn (#95) (…