From 86cf280c9a3ec71449de75fd12adc47e576318f8 Mon Sep 17 00:00:00 2001 From: mike Date: Mon, 31 Aug 2026 15:13:03 +0800 Subject: [PATCH] Update App.jsx via upload script - 2026-08-31 15:12:53 --- App.jsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/App.jsx b/App.jsx index 61c32f4..c591b9b 100644 --- a/App.jsx +++ b/App.jsx @@ -1789,6 +1789,10 @@ const Styles = () => ( .doc-table th { background: #2d2d2d; color: #fff; text-align: left; padding: 9px 12px; font-size: 12.5px; font-weight: 600; } .doc-table th.num, .doc-table td.num { text-align: right; } .doc-table td { padding: 10px 12px; border-bottom: 1px solid #eee; font-size: 13px; vertical-align: top; } + /* 防止导出PDF时一行数据被从中间截断到两页——html2canvas是按像素高度切页的画布截图,不是真正的 + 排版分页引擎,光靠CSS的page-break-inside在它身上不完全可靠,所以这里的CSS规则要配合下面 + html2pdf调用里显式的 pagebreak: { avoid: ['tr'] } 一起生效,两边双保险。 */ + .doc-table tr { break-inside: avoid; page-break-inside: avoid; } .doc-totals { width: 240px; margin-left: auto; font-size: 13px; } .doc-totals-row { display: flex; justify-content: space-between; padding: 4px 0; color: #666; } .doc-totals-row.total { font-weight: 700; color: #222; border-top: 1px solid #ddd; margin-top: 4px; padding-top: 8px; } @@ -2737,7 +2741,7 @@ function MainApp({ username, onLogout }) { image: { type: 'jpeg', quality: 0.98 }, html2canvas: { scale: 2 }, jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }, - pagebreak: { mode: ['css'], before: '.spec-sheet-page-break' }, + pagebreak: { mode: ['css'], before: '.spec-sheet-page-break', avoid: ['tr', 'img'] }, }).from(el).save(); } catch (e) { notify('导出PDF失败,请重试'); @@ -3055,6 +3059,7 @@ function MainApp({ username, onLogout }) { image: { type: 'jpeg', quality: 0.98 }, html2canvas: { scale: 2 }, jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }, + pagebreak: { mode: ['css'], avoid: ['tr', 'img'] }, }).from(el).save(); } catch (e) { notify('导出PDF失败,请重试'); @@ -3158,6 +3163,7 @@ function MainApp({ username, onLogout }) { image: { type: 'jpeg', quality: 0.98 }, html2canvas: { scale: 2 }, jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }, + pagebreak: { mode: ['css'], avoid: ['tr', 'img'] }, }).from(el).save(); } catch (e) { notify('导出PDF失败,请重试');