feat(typesetting): 纯图片页统一走SnapDOM截图 - 包含品牌页头和页码

- 移除runCaptureLoop中纯图片页的特殊处理分支
- 纯图片页不再跳过截图,统一走snapdom.toCanvas
- 品牌header和页码自然包含在纯图片页中
- isPureImagePage/getPureImageSrc/renderPureImageToCanvas标注@deprecated
- 修复普通截图回调缺少pageProgressCallback调用的bug
This commit is contained in:
augushong
2026-05-17 13:38:44 +08:00
parent 92426fe57e
commit f847c55e11

View File

@@ -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();