Draft a pdf of different seeds (eg. Pumpkin, sesame, poppy, sunflower, basil, flax, hemp, etc) a normal man can digest in a good portion. Note - Main focus should be to fill fibre, calcium content. And also give the benefits of those in a good portion.
seeds nutritional content fiber calcium pumpkin sesame poppy sunflower flax hemp basil seeds per serving
https://www.healthcastle.com/comparing-nutritional-values-ed…
poppy seeds basil seeds sabja fiber calcium nutritional benefits daily portion
mkdir -p /tmp/workspace/seeds-guide && ls /tmp/workspace/seeds-guide/
~/seeds-guide/generate_seeds_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import PageBreak
OUTPUT = "/tmp/workspace/seeds-guide/Seeds_Nutrition_Guide.pdf"
# ── Color Palette ──────────────────────────────────────────────────────────
GREEN_DARK = colors.HexColor("#2D5016")
GREEN_MID = colors.HexColor("#4A7C2F")
GREEN_LIGHT = colors.HexColor("#A8D5A2")
GREEN_PALE = colors.HexColor("#EAF5E5")
AMBER = colors.HexColor("#F0A500")
AMBER_LIGHT = colors.HexColor("#FFF3CD")
RUST = colors.HexColor("#C0392B")
CREAM = colors.HexColor("#FAFDF6")
GREY_TEXT = colors.HexColor("#333333")
WHITE = colors.white
# ── Styles ────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def S(name, **kwargs):
return ParagraphStyle(name, **kwargs)
title_style = S("DocTitle",
fontName="Helvetica-Bold", fontSize=26, textColor=WHITE,
alignment=TA_CENTER, leading=32, spaceAfter=4)
subtitle_style = S("DocSub",
fontName="Helvetica", fontSize=12, textColor=GREEN_LIGHT,
alignment=TA_CENTER, leading=16, spaceAfter=2)
date_style = S("DocDate",
fontName="Helvetica-Oblique", fontSize=9, textColor=GREEN_LIGHT,
alignment=TA_CENTER)
section_head = S("SectionHead",
fontName="Helvetica-Bold", fontSize=15, textColor=GREEN_DARK,
spaceBefore=18, spaceAfter=6, leading=20)
seed_title = S("SeedTitle",
fontName="Helvetica-Bold", fontSize=13, textColor=WHITE,
alignment=TA_LEFT, leading=17)
body_j = S("BodyJ",
fontName="Helvetica", fontSize=9.5, textColor=GREY_TEXT,
leading=14, alignment=TA_JUSTIFY, spaceAfter=5)
bullet_style = S("Bullet",
fontName="Helvetica", fontSize=9.5, textColor=GREY_TEXT,
leading=14, leftIndent=12, bulletIndent=0, spaceAfter=3)
note_style = S("Note",
fontName="Helvetica-Oblique", fontSize=8.5, textColor=colors.HexColor("#555555"),
leading=12, alignment=TA_CENTER, spaceBefore=4)
table_header_style = S("TH",
fontName="Helvetica-Bold", fontSize=9, textColor=WHITE,
alignment=TA_CENTER)
table_cell_style = S("TC",
fontName="Helvetica", fontSize=9, textColor=GREY_TEXT,
alignment=TA_CENTER, leading=12)
# ── Seed Data ─────────────────────────────────────────────────────────────
# Each entry: name, emoji, color_hex, recommended_daily, fiber_g, calcium_mg,
# calories, protein_g, fat_g, highlights (list of bullet strings)
seeds = [
{
"name": "Sesame Seeds",
"emoji": "🌾",
"color": colors.HexColor("#8B6914"),
"bg": colors.HexColor("#FFF8E7"),
"portion": "2 tablespoons (18 g)",
"fiber": "2.2 g",
"calcium": "176 mg (18% DV)",
"calories": "104 kcal",
"protein": "3.2 g",
"fat": "9.0 g",
"highlights": [
"Highest plant-based calcium among common seeds - vital for bone density",
"Rich in sesamin & sesamolin (lignans) that lower LDL cholesterol",
"Contains copper supporting energy metabolism and nerve function",
"Phytosterols reduce dietary cholesterol absorption",
"Excellent on salads, stir-fries, sushi, and as tahini paste",
],
},
{
"name": "Poppy Seeds",
"emoji": "🌸",
"color": colors.HexColor("#6A4C9C"),
"bg": colors.HexColor("#F3EEFF"),
"portion": "3 tablespoons (28 g)",
"fiber": "4.2 g",
"calcium": "350 mg (35% DV)",
"calories": "138 kcal",
"protein": "4.6 g",
"fat": "11.2 g",
"highlights": [
"Outstanding calcium source - 3 tbsp covers 35% of a man's daily need",
"High fiber supports gut health and regular bowel movements",
"Rich in manganese (bone formation) and phosphorus (cell repair)",
"Linoleic acid (omega-6) helps maintain healthy skin & immune response",
"Great on breads, muffins, dressings, and baked oatmeal",
],
},
{
"name": "Chia Seeds",
"emoji": "✨",
"color": colors.HexColor("#1A6B4A"),
"bg": colors.HexColor("#E8F8F1"),
"portion": "2 tablespoons (20 g)",
"fiber": "7.6 g",
"calcium": "126 mg (13% DV)",
"calories": "98 kcal",
"protein": "3.2 g",
"fat": "6.8 g",
"highlights": [
"Highest fiber per serving among all common seeds - keeps you full",
"Soluble fiber forms a gel that slows digestion & stabilises blood sugar",
"Top plant source of ALA omega-3 (1,800 mg per tablespoon)",
"Calcium + phosphorus combo directly supports bone mineralisation",
"Soak in water/milk overnight for pudding or add dry to smoothies",
],
},
{
"name": "Flax Seeds",
"emoji": "💛",
"color": colors.HexColor("#B8860B"),
"bg": colors.HexColor("#FFFDE7"),
"portion": "2 tablespoons (14 g) - ground",
"fiber": "3.8 g",
"calcium": "36 mg (4% DV)",
"calories": "74 kcal",
"protein": "2.6 g",
"fat": "6.0 g",
"highlights": [
"Soluble fiber (mucilage) regulates blood sugar and lowers cholesterol",
"Richest dietary source of plant lignans - shown to reduce cancer risk",
"Must be ground before eating - whole seeds pass undigested",
"ALA omega-3 content (1,600 mg per tbsp) supports heart health",
"Add ground flax to oatmeal, yogurt, smoothies, or baked goods",
],
},
{
"name": "Pumpkin Seeds (Pepitas)",
"emoji": "🎃",
"color": colors.HexColor("#2E7D32"),
"bg": colors.HexColor("#E8F5E9"),
"portion": "2 tablespoons (16 g)",
"fiber": "0.6 g",
"calcium": "6.8 mg (1% DV)",
"calories": "86 kcal",
"protein": "4.0 g",
"fat": "7.4 g",
"highlights": [
"Exceptional zinc source - supports testosterone, immunity & wound healing",
"High magnesium (37% DV per oz) for muscle function and sleep quality",
"Iron content helps prevent fatigue in active men",
"Tryptophan converts to serotonin - promotes better mood and rest",
"Best eaten raw or lightly roasted as a snack or on salads",
],
},
{
"name": "Sunflower Seeds",
"emoji": "🌻",
"color": colors.HexColor("#E65100"),
"bg": colors.HexColor("#FFF3E0"),
"portion": "2 tablespoons (18 g)",
"fiber": "1.4 g",
"calcium": "13 mg (1% DV)",
"calories": "106 kcal",
"protein": "2.0 g",
"fat": "9.2 g",
"highlights": [
"Highest natural Vitamin E source - protects cells from oxidative damage",
"High magnesium helps reduce migraine frequency and blood pressure",
"Selenium content supports thyroid function and immune defence",
"Phytosterols actively lower LDL cholesterol",
"Eat as a snack, in trail mix, or sprinkled on salads and soups",
],
},
{
"name": "Hemp Seeds",
"emoji": "🌿",
"color": colors.HexColor("#558B2F"),
"bg": colors.HexColor("#F1F8E9"),
"portion": "3 tablespoons (30 g)",
"fiber": "1.5 g",
"calcium": "0 mg (<1% DV)",
"calories": "170 kcal",
"protein": "9.5 g",
"fat": "14.7 g",
"highlights": [
"Complete plant protein with all 9 essential amino acids - comparable to eggs",
"Ideal 3:1 omega-6 to omega-3 ratio reduces chronic inflammation",
"Gamma-linolenic acid (GLA) supports hormonal balance in men",
"Easily digestible - no phytic acid like most other seeds",
"Add to smoothies, yogurt, cereal, or eat raw for maximum benefit",
],
},
{
"name": "Basil Seeds (Sabja)",
"emoji": "🌱",
"color": colors.HexColor("#00695C"),
"bg": colors.HexColor("#E0F2F1"),
"portion": "1 tablespoon (12 g) soaked",
"fiber": "6.0 g",
"calcium": "115 mg (15% DV)",
"calories": "60 kcal",
"protein": "2.0 g",
"fat": "2.5 g",
"highlights": [
"Very high fiber:calorie ratio - one of the best seeds for gut health",
"Swell to 30x volume in water - induce satiety and reduce overeating",
"15% daily calcium per tbsp plus magnesium and iron",
"Cooling effect on digestive tract - soothes acidity and bloating",
"Soak in water 15 min before adding to drinks, lassi, or desserts",
],
},
]
# ── Comparison Table Data ─────────────────────────────────────────────────
table_header = ["Seed", "Portion", "Calories", "Fiber", "Calcium", "Protein"]
table_rows = [
["Sesame", "2 tbsp (18g)", "104", "2.2 g", "176 mg ★★★", "3.2 g"],
["Poppy", "3 tbsp (28g)", "138", "4.2 g", "350 mg ★★★★", "4.6 g"],
["Chia", "2 tbsp (20g)", "98", "7.6 g ★★★★", "126 mg ★★★", "3.2 g"],
["Flax (ground)", "2 tbsp (14g)", "74", "3.8 g ★★★", "36 mg ★", "2.6 g"],
["Pumpkin", "2 tbsp (16g)", "86", "0.6 g", "6.8 mg", "4.0 g"],
["Sunflower", "2 tbsp (18g)", "106", "1.4 g", "13 mg", "2.0 g"],
["Hemp", "3 tbsp (30g)", "170", "1.5 g", "<1 mg", "9.5 g ★★★★"],
["Basil (Sabja)", "1 tbsp (12g)", "60", "6.0 g ★★★★", "115 mg ★★★", "2.0 g"],
]
# ── Tips Data ─────────────────────────────────────────────────────────────
daily_combos = [
("Morning Boost Combo",
"Chia Seeds (2 tbsp) + Hemp Seeds (3 tbsp)",
"Fiber: 9.1 g | Calcium: 126 mg | Protein: 12.7 g",
"Blend into a morning smoothie or mix into overnight oats"),
("Bone-Builder Combo",
"Poppy Seeds (3 tbsp) + Sesame Seeds (2 tbsp)",
"Fiber: 6.4 g | Calcium: 526 mg (~53% DV!) | Protein: 7.8 g",
"Sprinkle on bread or stir into yogurt - a powerhouse for bones"),
("Gut-Health Combo",
"Basil Seeds (1 tbsp) + Flax Seeds (2 tbsp, ground)",
"Fiber: 9.8 g | Calcium: 151 mg | Protein: 4.6 g",
"Soak basil seeds, mix with ground flax in a glass of water or juice"),
("All-Day Snack Mix",
"Pumpkin (2 tbsp) + Sunflower (2 tbsp) + Sesame (1 tbsp)",
"Fiber: 2.9 g | Calcium: ~107 mg | Protein: 7.6 g",
"Trail mix base - adds zinc, vitamin E, and copper together"),
]
# ── Document Builder ──────────────────────────────────────────────────────
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
rightMargin=1.8*cm, leftMargin=1.8*cm,
topMargin=1.8*cm, bottomMargin=1.8*cm,
title="Seeds Nutrition Guide - Fibre & Calcium Focus",
author="Orris Health",
)
story = []
# ── Cover Banner ───────────────────────────────────────────────────────────
cover_data = [[
Paragraph("🌱 Seeds Nutrition Guide", title_style),
]]
cover_table = Table(cover_data, colWidths=[17.4*cm])
cover_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), GREEN_DARK),
("TOPPADDING", (0,0), (-1,-1), 28),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("LEFTPADDING", (0,0), (-1,-1), 14),
("RIGHTPADDING", (0,0), (-1,-1), 14),
("ROUNDEDCORNERS", [8]),
]))
story.append(cover_table)
sub_data = [[
Paragraph("What a Man Should Eat Daily - Focused on Fibre & Calcium", subtitle_style),
]]
sub_table = Table(sub_data, colWidths=[17.4*cm])
sub_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), GREEN_MID),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
]))
story.append(sub_table)
date_data = [[
Paragraph("Compiled July 2026 | DV = Daily Value for adult men (2000 kcal diet)", date_style),
]]
date_table = Table(date_data, colWidths=[17.4*cm])
date_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), GREEN_LIGHT),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
]))
story.append(date_table)
story.append(Spacer(1, 14))
# ── Why Seeds? ─────────────────────────────────────────────────────────────
why_text = (
"Seeds are among the most nutrient-dense foods on the planet. Small in size but big in "
"impact, they supply dietary fibre (essential for gut health, blood sugar control, and "
"cholesterol management), plant-based calcium (critical for bone density, muscle "
"contraction, and nerve signalling), healthy fats, and complete proteins - all in a "
"handful. Adult men need <b>38 g of fibre</b> and <b>1,000 mg of calcium</b> per day. "
"A carefully chosen daily seed mix can deliver a significant portion of both targets "
"without adding junk calories."
)
story.append(Paragraph("Why Seeds for Fibre & Calcium?", section_head))
story.append(Paragraph(why_text, body_j))
story.append(HRFlowable(width="100%", thickness=1.5, color=GREEN_LIGHT, spaceAfter=8))
# ── Individual Seed Profiles ───────────────────────────────────────────────
story.append(Paragraph("Individual Seed Profiles", section_head))
story.append(Spacer(1, 4))
for i, seed in enumerate(seeds):
# Header bar
header_data = [[
Paragraph(f"{seed['emoji']} {seed['name']}", seed_title),
Paragraph(f"Daily Portion: {seed['portion']}",
ParagraphStyle("ph", fontName="Helvetica-Bold", fontSize=9,
textColor=WHITE, alignment=TA_LEFT, leading=13)),
]]
header_table = Table(header_data, colWidths=[9.5*cm, 7.5*cm])
header_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), seed["color"]),
("TOPPADDING", (0,0), (-1,-1), 8),
("BOTTOMPADDING", (0,0), (-1,-1), 8),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
# Nutrition strip
nut_style = ParagraphStyle("ns", fontName="Helvetica-Bold", fontSize=9.5,
textColor=GREEN_DARK, alignment=TA_CENTER)
val_style = ParagraphStyle("vs", fontName="Helvetica", fontSize=9,
textColor=GREY_TEXT, alignment=TA_CENTER)
nut_data = [
[
Paragraph("Fibre", nut_style),
Paragraph("Calcium", nut_style),
Paragraph("Calories", nut_style),
Paragraph("Protein", nut_style),
Paragraph("Fat", nut_style),
],
[
Paragraph(seed["fiber"], val_style),
Paragraph(seed["calcium"], val_style),
Paragraph(seed["calories"], val_style),
Paragraph(seed["protein"], val_style),
Paragraph(seed["fat"], val_style),
],
]
col_w = 17.4*cm / 5
nut_table = Table(nut_data, colWidths=[col_w]*5)
nut_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), seed["bg"]),
("BACKGROUND", (0,1), (-1,1), WHITE),
("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")),
("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#DDDDDD")),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("ALIGN", (0,0), (-1,-1), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]))
# Benefits bullets
bullets_content = []
for b in seed["highlights"]:
bullets_content.append(
Paragraph(f"<bullet>\u2022</bullet> {b}", bullet_style)
)
benefits_data = [[
Paragraph("Key Benefits & How to Eat:",
ParagraphStyle("bh", fontName="Helvetica-Bold", fontSize=9,
textColor=GREEN_DARK, spaceAfter=4)),
]]
for b in seed["highlights"]:
benefits_data.append([
Paragraph(f"\u2022 {b}", bullet_style)
])
benefits_table = Table(benefits_data, colWidths=[17.4*cm])
benefits_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), seed["bg"]),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 3),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("BOX", (0,0), (-1,-1), 0.5, colors.HexColor("#CCCCCC")),
]))
block = KeepTogether([
header_table,
nut_table,
benefits_table,
Spacer(1, 10),
])
story.append(block)
# ── Comparison Table ───────────────────────────────────────────────────────
story.append(PageBreak())
story.append(Paragraph("Quick Comparison Table", section_head))
story.append(Paragraph(
"All values per recommended daily portion. ★ = top performers for that nutrient.",
note_style
))
story.append(Spacer(1, 6))
tbl_data = []
# Header row
th = [Paragraph(h, ParagraphStyle("th2", fontName="Helvetica-Bold", fontSize=9,
textColor=WHITE, alignment=TA_CENTER))
for h in table_header]
tbl_data.append(th)
for idx, row in enumerate(table_rows):
tc = [Paragraph(cell, ParagraphStyle("tc2", fontName="Helvetica", fontSize=8.8,
textColor=GREY_TEXT, alignment=TA_CENTER,
leading=12))
for cell in row]
tbl_data.append(tc)
col_ws = [3.5*cm, 3.5*cm, 2.0*cm, 2.4*cm, 3.0*cm, 3.0*cm]
cmp_table = Table(tbl_data, colWidths=col_ws, repeatRows=1)
cmp_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,0), GREEN_DARK),
("TEXTCOLOR", (0,0), (-1,0), WHITE),
("ROWBACKGROUNDS",(0,1), (-1,-1), [CREAM, GREEN_PALE]),
("BOX", (0,0), (-1,-1), 0.8, GREEN_MID),
("INNERGRID", (0,0), (-1,-1), 0.3, colors.HexColor("#BBBBBB")),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("ALIGN", (0,0), (-1,-1), "CENTER"),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
# Highlight Fiber column
("BACKGROUND", (3,1), (3,8), colors.HexColor("#E8F8F1")),
# Highlight Calcium column
("BACKGROUND", (4,1), (4,8), colors.HexColor("#FFF8E7")),
]))
story.append(cmp_table)
story.append(Spacer(1, 16))
# ── Daily Combination Recommendations ─────────────────────────────────────
story.append(Paragraph("Recommended Daily Combination Packs", section_head))
story.append(Paragraph(
"Mix and match these combinations throughout the day to hit fibre and calcium targets efficiently.",
body_j
))
story.append(Spacer(1, 6))
for combo in daily_combos:
name, seeds_txt, nutrition_txt, usage_txt = combo
combo_data = [
[Paragraph(f"<b>{name}</b>",
ParagraphStyle("cn", fontName="Helvetica-Bold", fontSize=10,
textColor=GREEN_DARK))],
[Paragraph(f"Seeds: {seeds_txt}",
ParagraphStyle("cs", fontName="Helvetica", fontSize=9.2,
textColor=GREY_TEXT, leading=13))],
[Paragraph(f"Nutrition: <b>{nutrition_txt}</b>",
ParagraphStyle("cn2", fontName="Helvetica", fontSize=9,
textColor=colors.HexColor("#1A5276"), leading=13))],
[Paragraph(f"How to use: {usage_txt}",
ParagraphStyle("cu", fontName="Helvetica-Oblique", fontSize=9,
textColor=colors.HexColor("#555555"), leading=13))],
]
combo_table = Table(combo_data, colWidths=[17.4*cm])
combo_table.setStyle(TableStyle([
("BACKGROUND", (0,0), (0,0), GREEN_PALE),
("BACKGROUND", (0,1), (0,-1), WHITE),
("BOX", (0,0), (-1,-1), 1, GREEN_MID),
("TOPPADDING", (0,0), (-1,-1), 5),
("BOTTOMPADDING", (0,0), (-1,-1), 5),
("LEFTPADDING", (0,0), (-1,-1), 12),
("RIGHTPADDING", (0,0), (-1,-1), 12),
]))
story.append(KeepTogether([combo_table, Spacer(1, 8)]))
# ── Important Cautions ─────────────────────────────────────────────────────
story.append(Spacer(1, 8))
story.append(Paragraph("Important Notes & Cautions", section_head))
cautions = [
("<b>Portion control matters:</b> Seeds are calorie-dense. Stick to "
"the recommended portions. Eating 5-6 tbsp of mixed seeds per day is "
"reasonable for most men; more is not always better."),
("<b>Grind flax seeds:</b> Whole flax seeds pass through the gut largely "
"undigested. Always grind before consuming to get the fibre and omega-3 benefits."),
("<b>Soak basil/chia seeds:</b> Always hydrate these seeds in water before "
"eating. They absorb water in the gut, so consuming dry in large amounts "
"without enough water can cause digestive discomfort."),
("<b>Allergies:</b> Sesame allergy is a recognised allergen (Top 9 in the USA). "
"Anyone with sesame allergy should avoid sesame seeds and tahini."),
("<b>Kidney stones:</b> Individuals prone to oxalate kidney stones should "
"moderate intake of high-oxalate seeds and drink plenty of water."),
("<b>Medication interactions:</b> Flax and chia seeds have blood-thinning "
"properties. Consult a doctor if you are on anticoagulants (warfarin, etc.)."),
]
for c in cautions:
story.append(Paragraph(f"\u26A0 {c}",
ParagraphStyle("caut", fontName="Helvetica", fontSize=9.2,
textColor=GREY_TEXT, leading=14, leftIndent=10,
spaceBefore=3, spaceAfter=4,
borderColor=AMBER, borderWidth=0.5,
borderPadding=4)))
# ── Footer Disclaimer ──────────────────────────────────────────────────────
story.append(Spacer(1, 16))
story.append(HRFlowable(width="100%", thickness=1, color=GREEN_LIGHT))
story.append(Spacer(1, 4))
story.append(Paragraph(
"Nutritional values are approximate and sourced from USDA FoodData Central and peer-reviewed sources. "
"Daily Value (DV) percentages are based on adult male reference intakes: Fibre 38 g/day, Calcium 1000 mg/day. "
"This document is for general informational purposes and does not constitute medical advice. "
"Consult a registered dietitian for personalised guidance.",
ParagraphStyle("disc", fontName="Helvetica-Oblique", fontSize=7.5,
textColor=colors.HexColor("#777777"), alignment=TA_CENTER, leading=11)
))
# ── Build ──────────────────────────────────────────────────────────────────
doc.build(story)
print(f"PDF generated: {OUTPUT}")
cd /tmp/workspace/seeds-guide && python generate_seeds_pdf.py
ls -lh /tmp/workspace/seeds-guide/Seeds_Nutrition_Guide.pdf
Seeds Nutrition Guide
PDF Document · PDF
| Seed | Best Portion | Fibre | Calcium | Star Nutrient |
|---|---|---|---|---|
| Sesame | 2 tbsp (18g) | 2.2 g | 176 mg (18% DV) | Calcium + phytosterols |
| Poppy | 3 tbsp (28g) | 4.2 g | 350 mg (35% DV) | Top calcium seed |
| Chia | 2 tbsp (20g) | 7.6 g | 126 mg (13% DV) | Top fibre seed |
| Flax (ground) | 2 tbsp (14g) | 3.8 g | 36 mg | Soluble fibre + lignans |
| Pumpkin | 2 tbsp (16g) | 0.6 g | ~7 mg | Zinc + magnesium |
| Sunflower | 2 tbsp (18g) | 1.4 g | 13 mg | Vitamin E |
| Hemp | 3 tbsp (30g) | 1.5 g | trace | Complete plant protein |
| Basil (Sabja) | 1 tbsp (12g) | 6.0 g | 115 mg (15% DV) | Fibre + satiety |