fix: pdf gene

This commit is contained in:
2026-03-14 00:17:25 +08:00
parent 6407e1610e
commit 86c7ab4b15
2 changed files with 13 additions and 1 deletions

View File

@@ -265,6 +265,7 @@ async def _gen_pdf(case_id: UUID, report_dir: Path, body: ReportCreate, db: Asyn
from reportlab.lib.styles import getSampleStyleSheet from reportlab.lib.styles import getSampleStyleSheet
from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfbase.cidfonts import UnicodeCIDFont
import os import os
font_registered = False font_registered = False
@@ -282,7 +283,17 @@ async def _gen_pdf(case_id: UUID, report_dir: Path, body: ReportCreate, db: Asyn
except Exception: except Exception:
continue continue
font_name = "ChineseFont" if font_registered else "Helvetica" if not font_registered:
# Docker images often do not ship Chinese system fonts.
# Use built-in CID font as a portable fallback.
try:
pdfmetrics.registerFont(UnicodeCIDFont("STSong-Light"))
font_name = "STSong-Light"
font_registered = True
except Exception:
font_name = "Helvetica"
else:
font_name = "ChineseFont"
styles = getSampleStyleSheet() styles = getSampleStyleSheet()
title_style = styles["Title"] title_style = styles["Title"]
title_style.fontName = font_name title_style.fontName = font_name

View File

@@ -11,6 +11,7 @@ Pillow==12.1.0
httpx==0.28.1 httpx==0.28.1
openpyxl==3.1.5 openpyxl==3.1.5
python-docx==1.2.0 python-docx==1.2.0
reportlab
psycopg2-binary==2.9.11 psycopg2-binary==2.9.11
# dev dependencies # dev dependencies