Untitled
unknown
plain_text
a year ago
2.9 kB
13
Indexable
from fpdf import FPDF
# Create a custom PDF class
class PDF(FPDF):
def header(self):
self.set_font('Arial', 'B', 14)
self.cell(0, 10, 'Health & Fitness Chart – 25-Year-Old Male', ln=True, align='C')
self.ln(5)
def chapter_title(self, title):
self.set_font('Arial', 'B', 12)
self.cell(0, 10, title, ln=True, align='L')
self.ln(2)
def chapter_body(self, body):
self.set_font('Arial', '', 11)
self.multi_cell(0, 8, body)
self.ln()
# Initialize PDF
pdf = PDF()
pdf.add_page()
# Add main chart
pdf.chapter_title("📊 Health & Fitness Metrics")
chart_data = [
["Metric", "Excellent", "Good", "Average", "Poor"],
["VO₂ Max (ml/kg/min)", "≥ 55", "50–54.9", "42–49.9", "< 42"],
["Blood Pressure (mmHg)", "< 120 / < 80", "120–129 / < 80", "130–139 / 80–89", "≥ 140 / ≥ 90"],
["Resting Heart Rate (bpm)", "50–60", "61–70", "71–80", "> 80"],
["HR Recovery (1 min)", "> 25 bpm drop", "18–25 bpm drop", "12–17 bpm drop", "< 12 bpm drop"],
]
# Set font for table
pdf.set_font('Arial', 'B', 10)
col_widths = [45, 35, 35, 35, 35]
# Add table header
for i, header in enumerate(chart_data[0]):
pdf.cell(col_widths[i], 10, header, border=1, align='C')
pdf.ln()
# Add table rows
pdf.set_font('Arial', '', 10)
for row in chart_data[1:]:
for i, cell in enumerate(row):
pdf.cell(col_widths[i], 10, cell, border=1, align='C')
pdf.ln()
# Add explanations
pdf.chapter_title("✅ Explanation of Each Metric")
explanation = (
"• VO₂ Max: Measures maximum oxygen uptake during intense exercise. Higher values = better cardiovascular fitness.\n"
"• Blood Pressure: Normal is under 120/80 mmHg. Elevated or high values increase heart disease risk.\n"
"• Resting Heart Rate: Lower RHR generally indicates more efficient heart function and better fitness.\n"
"• Heart Rate Recovery (HRR): The faster your heart rate drops post-exercise, the better your cardiovascular health."
)
pdf.chapter_body(explanation)
# Add example section
pdf.chapter_title("🔍 Example (Hypothetical College Male)")
example_data = [
["Metric", "Measured Value", "Category"],
["VO₂ Max", "52 ml/kg/min", "Good"],
["Blood Pressure", "118/76 mmHg", "Excellent"],
["Resting Heart Rate", "64 bpm", "Good"],
["HR Recovery (1 min)", "22 bpm drop", "Good"],
]
# Table headers
pdf.set_font('Arial', 'B', 10)
for i, header in enumerate(example_data[0]):
pdf.cell(col_widths[i], 10, header, border=1, align='C')
pdf.ln()
# Table content
pdf.set_font('Arial', '', 10)
for row in example_data[1:]:
for i, cell in enumerate(row):
pdf.cell(col_widths[i], 10, cell, border=1, align='C')
pdf.ln()
# Save PDF locally
pdf.output("Health_Fitness_Chart_25yo_Male.pdf")
Editor is loading...
Leave a Comment