From 971c342d9aff06bedad33880851e77236e799b2a Mon Sep 17 00:00:00 2001 From: xianyi Date: Tue, 6 Jan 2026 14:26:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84pdf=E6=AF=94=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/exam/ExamSignPanel.tsx | 56 +++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/src/components/exam/ExamSignPanel.tsx b/src/components/exam/ExamSignPanel.tsx index ba70c18..9bd9c97 100644 --- a/src/components/exam/ExamSignPanel.tsx +++ b/src/components/exam/ExamSignPanel.tsx @@ -445,7 +445,7 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => { // 清空容器 canvasContainerRef.current.innerHTML = ''; - const scale = 3.0; + const scale = 3; for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) { const page = await pdf.getPage(pageNum); @@ -460,6 +460,8 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => { canvas.width = viewport.width; canvas.style.display = 'block'; canvas.style.marginBottom = '10px'; + canvas.style.maxWidth = '100%'; + canvas.style.height = 'auto'; canvas.className = 'mx-auto border rounded-lg shadow-sm'; canvasContainerRef.current.appendChild(canvas); @@ -552,6 +554,8 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => { canvas.width = viewport.width; canvas.style.display = 'block'; canvas.style.marginBottom = '10px'; + canvas.style.maxWidth = '100%'; + canvas.style.height = 'auto'; canvas.className = 'mx-auto border rounded-lg shadow-sm'; daojiandanCanvasContainerRef.current.appendChild(canvas); @@ -644,6 +648,8 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => { canvas.width = viewport.width; canvas.style.display = 'block'; canvas.style.marginBottom = '10px'; + canvas.style.maxWidth = '100%'; + canvas.style.height = 'auto'; canvas.className = 'mx-auto border rounded-lg shadow-sm'; addItemBillCanvasContainerRef.current.appendChild(canvas); @@ -700,6 +706,8 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => { canvas.width = viewport.width; canvas.style.display = 'block'; canvas.style.marginBottom = '10px'; + canvas.style.maxWidth = '100%'; + canvas.style.height = 'auto'; canvas.className = 'mx-auto border rounded-lg shadow-sm'; container.appendChild(canvas); @@ -762,6 +770,8 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => { canvas.width = viewport.width; canvas.style.display = 'block'; canvas.style.marginBottom = '10px'; + canvas.style.maxWidth = '100%'; + canvas.style.height = 'auto'; canvas.className = 'mx-auto border rounded-lg shadow-sm'; container.appendChild(canvas); @@ -791,7 +801,7 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => { }, [showAddItemBillPreview, addItemBillUrl]); const handlePrint = () => { - if (!pdfBlobUrl || !pdfReady || !canvasContainerRef.current) return; + if (!pdfBlobUrl || !pdfReady || !canvasContainerRef.current || !previewPdf) return; // 创建打印窗口 const printWindow = window.open('', '_blank'); @@ -805,13 +815,16 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => { - 知情同意书打印 + ${previewPdf.pdf_name || '知情同意书打印'} +
+ + +
`); // 将每个 canvas 转换为图片并添加到打印窗口 @@ -869,7 +917,7 @@ export const ExamSignPanel = ({ examId, onBusyChange }: ExamSignPanelProps) => { // 渲染PDF到临时canvas const pdf = await pdfjsLib.getDocument({ data: arrayBuffer }).promise; - const scale = 3.0; + const scale = 1.0; const canvasImages: string[] = []; for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) {