f
This commit is contained in:
@@ -153,18 +153,23 @@ func (g *PDFGeneratorRefactored) generatePDF(product *entities.Product, doc *ent
|
||||
pdf := gofpdf.New("P", "mm", "A4", "")
|
||||
// 上边距与 ContentStartYBelowHeader 一致,这样自动分页后新页内容从 logo 下方开始,不被遮挡
|
||||
pdf.SetMargins(15, ContentStartYBelowHeader, 15)
|
||||
// 开启自动分页并预留底边距,避免内容贴底;分页后由 SetHeaderFunc 绘制页眉,正文从 ContentStartYBelowHeader 起排
|
||||
pdf.SetAutoPageBreak(true, 18)
|
||||
|
||||
// 加载黑体字体(用于所有内容,除了水印)
|
||||
// 注意:此时工作目录应该是根目录(/),这样gofpdf处理路径时就能正确解析
|
||||
chineseFontAvailable := g.fontManager.LoadChineseFont(pdf)
|
||||
|
||||
// 加载水印字体(使用宋体或其他非黑体字体)
|
||||
// 加载水印字体
|
||||
watermarkFontAvailable := g.fontManager.LoadWatermarkFont(pdf)
|
||||
// 加载正文宋体(描述、详情、说明、表格文字等使用小四 12pt)
|
||||
bodyFontAvailable := g.fontManager.LoadBodyFont(pdf)
|
||||
|
||||
// 记录字体加载状态,便于诊断问题
|
||||
g.logger.Info("PDF字体加载状态",
|
||||
zap.Bool("chinese_font_loaded", chineseFontAvailable),
|
||||
zap.Bool("watermark_font_loaded", watermarkFontAvailable),
|
||||
zap.Bool("body_font_loaded", bodyFontAvailable),
|
||||
zap.String("watermark_text", g.watermarkText),
|
||||
)
|
||||
|
||||
@@ -176,9 +181,11 @@ func (g *PDFGeneratorRefactored) generatePDF(product *entities.Product, doc *ent
|
||||
// 创建页面构建器
|
||||
pageBuilder := NewPageBuilder(g.logger, g.fontManager, g.textProcessor, g.markdownProc, g.tableParser, g.tableRenderer, g.jsonProcessor, g.logoPath, g.watermarkText)
|
||||
|
||||
// 使用 SetHeaderFunc 确保每页(包括表格等内部调用 AddPage 的页)都会先绘制页眉+水印
|
||||
// 页眉只绘制 logo 和横线;水印改到页脚绘制,确保水印在最上层不被表格等内容遮挡
|
||||
pdf.SetHeaderFunc(func() {
|
||||
pageBuilder.addHeader(pdf, chineseFontAvailable)
|
||||
})
|
||||
pdf.SetFooterFunc(func() {
|
||||
pageBuilder.addWatermark(pdf, chineseFontAvailable)
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user