From f847c55e11ca29153833afb5d707a51fb7150a16 Mon Sep 17 00:00:00 2001 From: augushong Date: Sun, 17 May 2026 13:38:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(typesetting):=20=E7=BA=AF=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E9=A1=B5=E7=BB=9F=E4=B8=80=E8=B5=B0SnapDOM=E6=88=AA?= =?UTF-8?q?=E5=9B=BE=20-=20=E5=8C=85=E5=90=AB=E5=93=81=E7=89=8C=E9=A1=B5?= =?UTF-8?q?=E5=A4=B4=E5=92=8C=E9=A1=B5=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除runCaptureLoop中纯图片页的特殊处理分支 - 纯图片页不再跳过截图,统一走snapdom.toCanvas - 品牌header和页码自然包含在纯图片页中 - isPureImagePage/getPureImageSrc/renderPureImageToCanvas标注@deprecated - 修复普通截图回调缺少pageProgressCallback调用的bug --- public/static/js/phone-image.js | 36 +++++++-------------------------- 1 file changed, 7 insertions(+), 29 deletions(-) diff --git a/public/static/js/phone-image.js b/public/static/js/phone-image.js index 731ed13..3064f68 100644 --- a/public/static/js/phone-image.js +++ b/public/static/js/phone-image.js @@ -1097,6 +1097,7 @@ var PhoneImageEngine = (function () { // ===== 纯图片页优化 ===== /** + * @deprecated 纯图片页已统一走SnapDOM截图流程,此函数不再被调用 * 检测staging区域中的页面元素是否为纯图片页 * 纯图片页: .page-body 内 .page-content 只含1个img且无文字内容 * @param {jQuery} $pageElem - .phone-image-page 元素 @@ -1125,6 +1126,7 @@ var PhoneImageEngine = (function () { } /** + * @deprecated 纯图片页已统一走SnapDOM截图流程,此函数不再被调用 * 从纯图片页元素中获取img的src * @param {jQuery} $pageElem * @returns {string} @@ -1135,6 +1137,7 @@ var PhoneImageEngine = (function () { } /** + * @deprecated 纯图片页已统一走SnapDOM截图流程,此函数不再被调用 * 将原始图片绘制到canvas(用于高质量保存路径) * @param {string} src - 图片src * @param {number} width - 目标宽度 @@ -1245,36 +1248,11 @@ var PhoneImageEngine = (function () { var $elem = $pageElems.eq(idx); - // 纯图片页优化 - if (isPureImagePage($elem)) { - var pureSrc = getPureImageSrc($elem); - if (pureSrc) { - if (opts.outputCanvas) { - // 保存模式: 高质量绘制原图到canvas - renderPureImageToCanvas(pureSrc, opts.sizeConfig.width, opts.sizeConfig.height).then(function (canvas) { - results.push(canvas); - if (opts.streaming && opts.onPageReady) opts.onPageReady(canvas, idx); - if (pageProgressCallback) pageProgressCallback(idx + 1, total); - idx++; - captureNext(); - }).catch(function () { - // 加载失败,回退到SnapDOM截图 - capturePageViaHtml2Canvas($elem, $staging, opts, results, deferred, function () { if (opts.streaming && opts.onPageReady) opts.onPageReady(results[results.length - 1], idx); if (pageProgressCallback) pageProgressCallback(idx + 1, total); idx++; captureNext(); }); - }); - return; - } else { - // 缩略图模式: 直接用src - results.push(pureSrc); - if (opts.streaming && opts.onPageReady) opts.onPageReady(pureSrc, idx); - if (pageProgressCallback) pageProgressCallback(idx + 1, total); - idx++; - captureNext(); - return; - } - } - } + // 纯图片页统一走SnapDOM截图,不再跳过截图流程 + // 这样纯图片页也会包含品牌header和页码 - capturePageViaHtml2Canvas($elem, $staging, opts, results, deferred, function () { if (opts.streaming && opts.onPageReady) opts.onPageReady(results[results.length - 1], idx); idx++; captureNext(); }); + // 统一截图流程 + capturePageViaHtml2Canvas($elem, $staging, opts, results, deferred, function () { if (opts.streaming && opts.onPageReady) opts.onPageReady(results[results.length - 1], idx); if (pageProgressCallback) pageProgressCallback(idx + 1, total); idx++; captureNext(); }); } captureNext();