From 351709d08e8a17fd3fbb26c53ebad18d7ba2054a Mon Sep 17 00:00:00 2001 From: cjy Date: Fri, 23 Jan 2026 14:30:19 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=20=E4=BF=AE=E5=A4=8D=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E7=A9=BA=E9=97=B4=E4=B8=8D=E8=B6=B3=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E5=B1=95=E7=A4=BA=E4=B8=8D=E5=AE=8C=E5=85=A8?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/utils/pdf.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/pkg/utils/pdf.go b/pkg/utils/pdf.go index a89ff51..ff65f56 100644 --- a/pkg/utils/pdf.go +++ b/pkg/utils/pdf.go @@ -129,6 +129,30 @@ func GeneratePDF(text, imageURL, outputPath, fontPath string) error { imageX := (210.0 - imageWidth) / 2 currentY := pdf.GetY() + // 注册图片并获取原始尺寸,用于计算缩放后的高度 + imgInfo := pdf.RegisterImageOptions(tmpFile.Name(), gofpdf.ImageOptions{}) + if imgInfo == nil { + return fmt.Errorf("注册图片失败") + } + + // 计算缩放后的图片高度(按比例缩放) + // 原始宽度:原始高度 = 缩放后宽度:缩放后高度 + originalWidth, originalHeight := imgInfo.Extent() + imageHeight := (imageWidth / originalWidth) * originalHeight + + // A4页面高度297mm,底部边距10mm,计算可用的最大Y坐标 + pageHeight := 297.0 + bottomMargin := 10.0 + maxY := pageHeight - bottomMargin + + // 检查当前页面剩余空间是否足够放下图片 + // 如果图片底部会超出页面可用区域,则添加新页面 + if currentY+imageHeight > maxY { + pdf.AddPage() + // 新页面从顶部边距开始 + currentY = 10.0 + } + // 添加图片 // ImageOptions参数:图片路径、x坐标、y坐标、宽度、高度、是否流式布局、选项、链接 // 高度设为0表示按比例自动计算