Скан PDF с JBIG2 не рисовался: wasmUrl для pdf.js и копирование wasm (#32, AURORA-1635) #33
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/32-pdfjs-jbig2"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Суть
AURORA-1635: в «Проверке распознавания» панель «Исходный документ» пустая (заголовки страниц есть, скан нет), в консоли
Jbig2 failed to initialize,Unable to decode image.Причина (подтверждена)
Сканы банка сжаты JBIG2. pdf.js 5.7.284 декодирует JBIG2, JPEG2000 и ICC-профили через wasm-файлы (
jbig2.wasm,openjpeg.wasm,qcms_bg.wasm) и ищет их по опцииwasmUrlвgetDocument. В arm-web опция не задана, файлов в сборке нет. Проверено по исходникамpdfjs-dist/legacy/build/pdf.worker.mjs(getJsModule,fetchBinaryData(wasmUrl + "jbig2.wasm"), fallbackwasmUrl + "jbig2_nowasm_fallback.js") и воспроизведено: собрал минимальный PDF с JBIG2 (MMR-регион 64x64) — безwasmUrlpdf.js печатает ровно те жеJBig2 failed to initialize/Unable to decode image, сwasmUrl— декодирует без ошибок.Решение
rsbuild.config.ts:output.copyкладётnode_modules/pdfjs-dist/wasmвdist/static/pdfjs/wasm.src/widgets/DocumentReview/pdfjsOptions.ts:pdfjsWasmUrl(appAddress)строит адрес каталога с учётомROOT_PATH(/aurora/apps/fastapi-dkb-armka/static/pdfjs/wasm/, слэш в конце обязателен). ТестpdfjsOptions.test.ts.PdfPages.tsx:getDocument({ data, wasmUrl: pdfjsWasmUrl(Config.APP_ADDRESS) }).Как проверить
make check, затемls dist/static/pdfjs/wasm— естьjbig2.wasm,openjpeg.wasm,qcms_bg.wasm..../static/pdfjs/wasm/jbig2.wasm= 200,application/wasm; в консоли нет JBIG2-ошибок.dist/, включаяstatic/pdfjs/.Не проверено: ручной прогон в браузере на реальном PDF банка (файла нет в fixtures; в fixtures нет JBIG2). Проверено: node-декодирование JBIG2 с
wasmUrl,rsbuild devсREACT_APP_ROOT_PATH=/aurora/apps/fastapi-dkb-armkaотдаётjbig2.wasmпо префиксу (200,application/wasm).make check
Зелёный (exit 0): biome, ESLint (7 старых предупреждений в чужих файлах), Prettier, tsc, vitest,
rsbuild build(wasm в dist).Rulings I made
wasm, безcmaps,standard_fonts,iccs— они не нужны для найденной ошибки, ~несколько МБ лишнего; fixed (этот коммит) / при появлении ошибок про шрифты — отдельная задача.Config.APP_ADDRESS(тот же префикс, что у роутера), а не изassetPrefixсборки: тот при незаданном ROOT_PATH равен./и в воркере не работает; fixed (этот коммит).Closes #32. Jira: AURORA-1635. После merge — синхронизация arm-core/web (
make -C docs sync-web).🤖 Generated with Claude Code
pdf.js 5.x декодирует JBIG2/JPEG2000/ICC через wasm и без опции wasmUrl падает: «JBig2 failed to initialize», «Unable to decode image» (AURORA-1635). - rsbuild: output.copy node_modules/pdfjs-dist/wasm -> static/pdfjs/wasm; - pdfjsOptions.ts: pdfjsWasmUrl(APP_ADDRESS) с учётом ROOT_PATH (+ тест); - PdfPages: getDocument({ wasmUrl }). Legacy-сборка pdf.js сохранена (#22). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>