mirror of
https://gitee.com/ulthon/ulthon_information.git
synced 2026-07-01 18:22:49 +08:00
feat(phone-image): 添加字号倍数控制功能
- CSS: 新增 --pi-font-scale 变量,全量 font-size 支持 calc 缩放 - JS: config.fontScale 影响分页计算,applyFontScale() 同步CSS变量 - HTML: 渲染预览区 Slider 控件(0.5x~2.0x),拖动即时预览,松手完整渲染 - 后端: PhoneImage.php 新增 fontScale 配置字段和校验 - 所有保存路径(autoSave/save/generate)包含 fontScale 持久化
This commit is contained in:
@@ -165,7 +165,15 @@
|
||||
|
||||
<!-- 中间:渲染预览区 -->
|
||||
<div class="render-preview-area">
|
||||
<div class="preview-header">渲染预览</div>
|
||||
<div class="preview-header">
|
||||
<span>渲染预览</span>
|
||||
<div style="display:inline-flex;align-items:center;gap:8px;float:right;">
|
||||
<span style="font-size:12px;color:#666;">字号</span>
|
||||
<input type="range" id="font-scale-slider" min="0.5" max="2.0" step="0.1" value="1.0"
|
||||
style="width:100px;vertical-align:middle;">
|
||||
<span id="font-scale-value" style="font-size:12px;color:#1890ff;min-width:32px;">1.0x</span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="render-preview"></div>
|
||||
</div>
|
||||
|
||||
@@ -195,7 +203,8 @@
|
||||
// 当前排版配置(从设置弹框维护)
|
||||
var currentConfig = {
|
||||
size: 'xiaohongshu',
|
||||
watermark: ''
|
||||
watermark: '',
|
||||
fontScale: 1
|
||||
};
|
||||
|
||||
var postData = {
|
||||
@@ -215,12 +224,14 @@
|
||||
var initConfig = {
|
||||
size: savedConfig.size || 'xiaohongshu',
|
||||
watermark: savedConfig.watermark || '',
|
||||
pageAlignments: savedConfig.pageAlignments || {}
|
||||
pageAlignments: savedConfig.pageAlignments || {},
|
||||
fontScale: savedConfig.fontScale || 1
|
||||
};
|
||||
|
||||
// 同步当前配置
|
||||
currentConfig.size = initConfig.size;
|
||||
currentConfig.watermark = initConfig.watermark;
|
||||
currentConfig.fontScale = initConfig.fontScale;
|
||||
|
||||
// ========== wangeditor 初始化 ==========
|
||||
var E = window.wangEditor;
|
||||
@@ -331,6 +342,31 @@
|
||||
// 初始同步预览区
|
||||
PhoneImageEngine.syncPreview();
|
||||
|
||||
// 字号倍数 Slider
|
||||
var $slider = $('#font-scale-slider');
|
||||
var $scaleValue = $('#font-scale-value');
|
||||
|
||||
// 拖动中: 仅更新CSS变量和显示值,不触发html2canvas
|
||||
$slider.on('input', function() {
|
||||
var val = parseFloat($(this).val());
|
||||
$scaleValue.text(val.toFixed(1) + 'x');
|
||||
currentConfig.fontScale = val;
|
||||
document.documentElement.style.setProperty('--pi-font-scale', val);
|
||||
PhoneImageEngine.updateConfig({ fontScale: val });
|
||||
});
|
||||
|
||||
// 松手后: 触发完整渲染(重新分页 + html2canvas截图)
|
||||
$slider.on('change', function() {
|
||||
var val = parseFloat($(this).val());
|
||||
doRender({ fontScale: val });
|
||||
});
|
||||
|
||||
// 初始化时更新 Slider 显示值
|
||||
if (initConfig.fontScale && initConfig.fontScale !== 1) {
|
||||
$slider.val(initConfig.fontScale);
|
||||
$scaleValue.text(parseFloat(initConfig.fontScale).toFixed(1) + 'x');
|
||||
}
|
||||
|
||||
// ========== 设置弹框 ==========
|
||||
$('#btn-settings').click(function () {
|
||||
var settingsHtml = '<div class="settings-form" style="padding:20px 20px 0;">';
|
||||
@@ -451,6 +487,7 @@
|
||||
PhoneImageEngine.saveConfig(postData.postId, {
|
||||
size: currentConfig.size,
|
||||
watermark: currentConfig.watermark,
|
||||
fontScale: currentConfig.fontScale || 1,
|
||||
content_html: PhoneImageEngine.getContentHtml()
|
||||
}, saveConfigUrl).then(function (data) {
|
||||
if (data.output_id) lastOutputId = data.output_id;
|
||||
@@ -476,6 +513,7 @@
|
||||
PhoneImageEngine.saveConfig(postData.postId, {
|
||||
size: currentConfig.size,
|
||||
watermark: currentConfig.watermark,
|
||||
fontScale: currentConfig.fontScale || 1,
|
||||
content_html: PhoneImageEngine.getContentHtml()
|
||||
}, saveConfigUrl).then(function (data) {
|
||||
if (data.output_id) lastOutputId = data.output_id;
|
||||
@@ -499,6 +537,7 @@
|
||||
PhoneImageEngine.saveImages(postData.postId, {
|
||||
size: currentConfig.size,
|
||||
watermark: currentConfig.watermark,
|
||||
fontScale: currentConfig.fontScale || 1,
|
||||
content_html: PhoneImageEngine.getContentHtml()
|
||||
}).then(function (data) {
|
||||
if (data.output_id) {
|
||||
@@ -584,10 +623,16 @@
|
||||
if (cfg.size) historyConfig.size = cfg.size;
|
||||
if (cfg.watermark !== undefined) historyConfig.watermark = cfg.watermark;
|
||||
if (cfg.pageAlignments) historyConfig.pageAlignments = cfg.pageAlignments;
|
||||
if (cfg.fontScale !== undefined) historyConfig.fontScale = cfg.fontScale;
|
||||
|
||||
// 同步当前配置
|
||||
if (cfg.size) currentConfig.size = cfg.size;
|
||||
if (cfg.watermark !== undefined) currentConfig.watermark = cfg.watermark;
|
||||
if (cfg.fontScale !== undefined) {
|
||||
currentConfig.fontScale = cfg.fontScale;
|
||||
$slider.val(cfg.fontScale);
|
||||
$scaleValue.text(parseFloat(cfg.fontScale).toFixed(1) + 'x');
|
||||
}
|
||||
|
||||
lastOutputId = outputId;
|
||||
layer.closeAll();
|
||||
|
||||
Reference in New Issue
Block a user