From c9924d0737b25977cd677c6e4f69246a4803afab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E8=BF=9B?= Date: Mon, 27 Jul 2026 17:33:10 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20boxShadow=20opacity=20=E4=BB=8E=20rgba?= =?UTF-8?q?=20alpha=20=E6=8F=90=E5=8F=96=EF=BC=8C=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E7=A1=AC=E7=BC=96=E7=A0=81=200.5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- convert-w2p.js | 6 ++++-- web-to-ppt/convert-browser.js | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/convert-w2p.js b/convert-w2p.js index 02dac87..00f1670 100644 --- a/convert-w2p.js +++ b/convert-w2p.js @@ -881,8 +881,10 @@ async function convert(input) { if (n.styles.boxShadow && n.styles.boxShadow !== 'none') { var shadowMatch = n.styles.boxShadow.match(/rgba?\(([^)]+)\)\s+(\d+)px\s+(\d+)px\s+(\d+)px/); if (shadowMatch) { - var shadowColor = rgbaToHex('rgb(' + shadowMatch[1] + ')') || '999999'; - shapeOpts.shadow = { type: 'outer', blur: parseInt(shadowMatch[4]), offset: parseInt(shadowMatch[3]), color: shadowColor, opacity: 0.5 }; + var shadowParts = shadowMatch[1].split(',').map(s => s.trim()); + var shadowColor = rgbaToHex('rgb(' + shadowParts.slice(0,3).join(',') + ')') || '999999'; + var shadowAlpha = shadowParts.length > 3 ? parseFloat(shadowParts[3]) : 0.3; + shapeOpts.shadow = { type: 'outer', blur: parseInt(shadowMatch[4]), offset: parseInt(shadowMatch[3]), color: shadowColor, opacity: Math.round(shadowAlpha * 100) / 100 }; } } diff --git a/web-to-ppt/convert-browser.js b/web-to-ppt/convert-browser.js index b8697e4..b8cbac3 100644 --- a/web-to-ppt/convert-browser.js +++ b/web-to-ppt/convert-browser.js @@ -479,8 +479,10 @@ async function convertToPptx(input, onProgress) { if (n.styles.boxShadow && n.styles.boxShadow !== 'none') { var shadowMatch = n.styles.boxShadow.match(/rgba?\(([^)]+)\)\s+(\d+)px\s+(\d+)px\s+(\d+)px/); if (shadowMatch) { - var shadowColor = rgbaToHex('rgb(' + shadowMatch[1] + ')') || '999999'; - shapeOpts.shadow = { type: 'outer', blur: parseInt(shadowMatch[4]), offset: parseInt(shadowMatch[3]), color: shadowColor, opacity: 0.5 }; + var shadowParts = shadowMatch[1].split(',').map(function(s) { return s.trim(); }); + var shadowColor = rgbaToHex('rgb(' + shadowParts.slice(0,3).join(',') + ')') || '999999'; + var shadowAlpha = shadowParts.length > 3 ? parseFloat(shadowParts[3]) : 0.3; + shapeOpts.shadow = { type: 'outer', blur: parseInt(shadowMatch[4]), offset: parseInt(shadowMatch[3]), color: shadowColor, opacity: Math.round(shadowAlpha * 100) / 100 }; } }