下載字體:https://github.com/adobe-fonts/source-han-sans/releases
下載fpdf2
pip uninstall fpdf
pip install fpdf2
運行代碼
?from fpdf import FPDF
from fpdf.enums import XPos, YPos# 創建 PDF 類
class BabyFeedingPDF(FPDF):def header(self):self.set_font("SourceHanSans", size=16)self.cell(0, 10, "0~12個月寶寶喂養規劃表", new_x=XPos.LMARGIN, new_y=YPos.NEXT, align="C")self.ln(5)def chapter_title(self, title):self.set_font("SourceHanSans", size=12)self.cell(0, 10, title, new_x=XPos.LMARGIN, new_y=YPos.NEXT)self.ln(2)def chapter_body(self, body):self.set_font("SourceHanSans", size=11)self.multi_cell(0, 8, body)self.ln()# 初始化 PDF
pdf = BabyFeedingPDF()
pdf.add_font("SourceHanSans", fname="SourceHanSansCN-Regular.otf")
pdf.add_page()
pdf.set_auto_page_break(auto=True, margin=15)# 表頭內容
table_header = ["月齡", "奶類需求", "輔食情況", "每日飲食頻率與建議"]
table_data = [["0-4月", "母乳或配方奶為主(按需)", "不添加輔食", "喂奶 8~12 次/天,觀察體重增長、排便情況"],["4-6月", "母乳或配方奶為主(600~900ml)", "試探性輔食(米粉、水果/蔬菜泥)", "1次輔食(小量),繼續按需奶喂養"],["6-7月", "600~800ml 奶", "蔬菜泥、水果泥、蛋黃泥", "奶 4-5 次 + 輔食 1~2 次"],["7-8月", "600~700ml 奶", "加入肉泥、魚泥、豆腐等", "奶 4 次 + 輔食 2 次(早餐+午餐)"],["8-9月", "500~700ml 奶", "可吃軟飯、碎面、整蛋黃", "2~3 餐輔食 + 1 奶點"],["9-10月", "500~600ml 奶", "多樣主食、碎菜、肉類", "3 餐輔食 + 1~2 點心"],["10-11月", "400~600ml 奶", "家庭軟飯+細碎食物,鼓勵抓握", "建立三餐 + 點心制,訓練自主吃飯"],["11-12月", "400~600ml 奶", "食物逐漸接近家庭飲食", "3 正餐 + 1~2 點心,逐步減少奶量,過渡到1歲飲食"],
]# 表格繪制
pdf.set_font("SourceHanSans", size=10)
cell_widths = [22, 45, 50, 70]# 表頭
for i, heading in enumerate(table_header):pdf.cell(cell_widths[i], 10, heading, border=1, align="C")
pdf.ln()# 表格內容
for row in table_data:y_before = pdf.get_y()max_y = y_beforefor i, datum in enumerate(row):x = pdf.get_x()y = pdf.get_y()pdf.multi_cell(cell_widths[i], 8, datum, border=1)max_y = max(max_y, pdf.get_y())pdf.set_xy(x + cell_widths[i], y)pdf.set_y(max_y)# 添加說明部分
pdf.ln(5)
pdf.chapter_title(" 輔食添加順序建議:")
pdf.chapter_body("1. 米粉 → 菜泥 → 水果泥 → 蛋黃 → 肉泥/魚泥 → 豆腐/面條\n""2. 每添加一種輔食,觀察3天,確認不過敏再繼續添加新食物")pdf.chapter_title(" 注意事項:")
pdf.chapter_body("? 1歲前不要添加鹽、糖、調料、蜂蜜\n""? 食物必須軟爛易吞咽,避免嗆咳\n""? 鼓勵寶寶坐著吃飯、抓握食物,培養進餐習慣")# 輸出 PDF
output_path = "0-12個月寶寶喂養規劃.pdf"
pdf.output(output_path)print("PDF 已生成:", output_path)?
生成實例