Need a ppt with both topics need both as seperate ppts merged into a single ppt with seperate headings for both persons need self explanatory picture in ppt no reference needed just an awareness ppt to college students mentioned in poster please prepare a ppt with about 10 pages in total
mkdir -p /tmp/workspace/noble-womens-ppt && ls /tmp/workspace/noble-womens-ppt/
~/noble-womens-ppt/create_ppt.py
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.util import Inches, Pt
import io
prs = Presentation()
prs.slide_width = Inches(13.333)
prs.slide_height = Inches(7.5)
blank_layout = prs.slide_layouts[6]
# ─── COLOR PALETTE ────────────────────────────────────────────────────────────
PINK_DARK = RGBColor(0xB5, 0x25, 0x6E) # deep pink / maroon
PINK_MID = RGBColor(0xE8, 0x55, 0x9B) # bright pink
PINK_LIGHT = RGBColor(0xFF, 0xE4, 0xF0) # very pale pink
PURPLE = RGBColor(0x6A, 0x1B, 0x9A) # purple
WHITE = RGBColor(0xFF, 0xFF, 0xFF)
DARK_TEXT = RGBColor(0x2D, 0x2D, 0x2D)
TEAL = RGBColor(0x00, 0x89, 0x8A)
BLUE_DARK = RGBColor(0x1A, 0x23, 0x7E) # dark navy for breast cancer section
ROSE = RGBColor(0xE9, 0x1E, 0x63)
ROSE_LIGHT = RGBColor(0xFC, 0xE4, 0xEC)
ROSE_MID = RGBColor(0xF4, 0x8F, 0xB1)
def add_rect(slide, x, y, w, h, fill_rgb, transparency=0):
from pptx.util import Pt
from pptx.oxml.ns import qn
from lxml import etree
shape = slide.shapes.add_shape(1, Inches(x), Inches(y), Inches(w), Inches(h))
shape.fill.solid()
shape.fill.fore_color.rgb = fill_rgb
shape.line.fill.background()
if transparency > 0:
sp = shape._element
spPr = sp.find(qn('p:spPr'))
solidFill = spPr.find('.//' + qn('a:solidFill'))
if solidFill is not None:
srgb = solidFill.find(qn('a:srgbClr'))
if srgb is not None:
alpha = etree.SubElement(srgb, qn('a:alpha'))
alpha.set('val', str(int((1 - transparency) * 100000)))
return shape
def add_text(slide, text, x, y, w, h, font_size=18, bold=False, color=DARK_TEXT,
align=PP_ALIGN.LEFT, italic=False, font_name="Calibri"):
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = True
tf.margin_left = Pt(4)
tf.margin_right = Pt(4)
tf.margin_top = Pt(2)
tf.margin_bottom = Pt(2)
p = tf.paragraphs[0]
p.alignment = align
run = p.add_run()
run.text = text
run.font.size = Pt(font_size)
run.font.bold = bold
run.font.italic = italic
run.font.color.rgb = color
run.font.name = font_name
return tb
def add_multiline_text(slide, lines, x, y, w, h, font_size=16, bold=False,
color=DARK_TEXT, align=PP_ALIGN.LEFT, font_name="Calibri",
line_spacing=None):
tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h))
tf = tb.text_frame
tf.word_wrap = True
tf.margin_left = Pt(4)
tf.margin_right = Pt(4)
tf.margin_top = Pt(2)
tf.margin_bottom = Pt(2)
for i, line in enumerate(lines):
if i == 0:
p = tf.paragraphs[0]
else:
p = tf.add_paragraph()
p.alignment = align
if line_spacing:
p.line_spacing = Pt(line_spacing)
run = p.add_run()
run.text = line
run.font.size = Pt(font_size)
run.font.bold = bold
run.font.color.rgb = color
run.font.name = font_name
return tb
# ══════════════════════════════════════════════════════════════════════════════
# PART 1 — MENSTRUAL CUP AWARENESS (Slides 1–5)
# Resource Person: Sariga MG, 3rd Year MBBS, GMC Manjeri
# ══════════════════════════════════════════════════════════════════════════════
# ── Slide 1: Title slide for Part 1 ──────────────────────────────────────────
slide = prs.slides.add_slide(blank_layout)
# Background gradient-like effect using overlapping rectangles
add_rect(slide, 0, 0, 13.333, 7.5, PINK_LIGHT)
add_rect(slide, 0, 0, 13.333, 2.2, PINK_DARK)
add_rect(slide, 0, 5.5, 13.333, 2.0, PURPLE)
# Top header
add_text(slide, "Women Development Cell • Noble Women's College, Manjeri",
0.3, 0.2, 12.7, 0.5, font_size=13, bold=False, color=WHITE, align=PP_ALIGN.CENTER)
add_text(slide, "In association with Govt Medical College, Manjeri",
0.3, 0.65, 12.7, 0.4, font_size=11, bold=False, color=PINK_MID, align=PP_ALIGN.CENTER, italic=True)
# Divider line
add_rect(slide, 1.5, 1.2, 10.3, 0.04, PINK_MID)
# PART badge
add_rect(slide, 4.5, 1.6, 4.3, 0.55, PURPLE)
add_text(slide, "PART 1 OF 2", 4.5, 1.6, 4.3, 0.55,
font_size=14, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
# Main title
add_text(slide, "Breaking the", 1.5, 2.25, 10.3, 0.8,
font_size=38, bold=False, color=PINK_DARK, align=PP_ALIGN.CENTER, italic=True, font_name="Georgia")
add_text(slide, "TABOO", 1.5, 2.95, 10.3, 1.3,
font_size=80, bold=True, color=PURPLE, align=PP_ALIGN.CENTER, font_name="Georgia")
# Subtitle banner
add_rect(slide, 2.0, 4.4, 9.3, 0.8, PINK_MID)
add_text(slide, "🌸 MENSTRUAL CUP AWARENESS SESSION", 2.0, 4.4, 9.3, 0.8,
font_size=20, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
# Bottom section
add_text(slide, "Resource Person: Sariga MG", 0.5, 5.6, 7.0, 0.5,
font_size=18, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
add_text(slide, "3rd Year MBBS Student • GMC Manjeri", 0.5, 6.05, 7.0, 0.45,
font_size=13, bold=False, color=PINK_LIGHT, align=PP_ALIGN.LEFT, italic=True)
add_text(slide, "6 August 2026 | 2 PM | Auditorium", 0.5, 6.5, 7.0, 0.45,
font_size=12, bold=False, color=PINK_LIGHT, align=PP_ALIGN.LEFT)
add_text(slide, "\"Embrace Innovation. Empower Your Cycle.\"",
6.5, 5.7, 6.5, 0.9, font_size=14, bold=False, color=WHITE,
align=PP_ALIGN.RIGHT, italic=True)
# ── Slide 2: What is a Menstrual Cup? ────────────────────────────────────────
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, PINK_LIGHT)
add_rect(slide, 0, 0, 13.333, 1.25, PURPLE)
add_rect(slide, 0, 6.8, 13.333, 0.7, PINK_MID)
add_text(slide, "PART 1 — MENSTRUAL CUP AWARENESS",
0.3, 0.08, 12.7, 0.4, font_size=11, bold=False, color=PINK_LIGHT, align=PP_ALIGN.CENTER)
add_text(slide, "What is a Menstrual Cup?", 0.3, 0.45, 12.7, 0.75,
font_size=34, bold=True, color=WHITE, align=PP_ALIGN.CENTER, font_name="Georgia")
# Left column — illustration placeholder with colored box
add_rect(slide, 0.4, 1.45, 5.0, 5.0, RGBColor(0xF8, 0xBB, 0xD9))
# Cup shape drawn with shapes
add_rect(slide, 1.8, 1.8, 2.2, 0.15, PINK_MID) # top rim
add_rect(slide, 1.9, 1.95, 2.0, 3.0, PINK_DARK) # cup body
add_rect(slide, 2.25, 4.95, 1.3, 0.6, PURPLE) # stem
add_text(slide, "🩸", 1.5, 2.5, 3.0, 1.5, font_size=60, align=PP_ALIGN.CENTER)
add_text(slide, "Menstrual Cup", 0.4, 6.1, 5.0, 0.5,
font_size=13, bold=True, color=PURPLE, align=PP_ALIGN.CENTER)
# Right column — content
bullets = [
("🔹", "A small, flexible, funnel-shaped cup made of medical-grade silicone, rubber, or latex"),
("🔹", "Inserted into the vagina to collect menstrual blood — not absorb it"),
("🔹", "Can hold more blood than a pad or tampon (up to 3× more)"),
("🔹", "Reusable for 5–10 years with proper care"),
("🔹", "Available in various sizes (Small / Large / Teen sizes)"),
("🔹", "FDA-approved and widely recommended by gynaecologists"),
]
add_text(slide, "Key Facts", 5.8, 1.4, 7.1, 0.55,
font_size=20, bold=True, color=PURPLE, align=PP_ALIGN.LEFT)
add_rect(slide, 5.8, 1.95, 7.1, 0.05, PINK_MID)
y = 2.1
for icon, fact in bullets:
add_text(slide, f"{icon} {fact}", 5.9, y, 7.0, 0.65,
font_size=14, color=DARK_TEXT)
y += 0.68
add_text(slide, "\"Embrace Innovation. Empower Your Cycle.\"",
0.3, 6.82, 12.7, 0.35, font_size=10, italic=True, color=WHITE, align=PP_ALIGN.CENTER)
# ── Slide 3: Why Choose a Menstrual Cup? Benefits ────────────────────────────
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, RGBColor(0xFF, 0xF0, 0xF8))
add_rect(slide, 0, 0, 13.333, 1.3, PINK_DARK)
add_rect(slide, 0, 6.8, 13.333, 0.7, PURPLE)
add_text(slide, "PART 1 — MENSTRUAL CUP AWARENESS",
0.3, 0.05, 12.7, 0.4, font_size=11, color=PINK_LIGHT, align=PP_ALIGN.CENTER)
add_text(slide, "Why Choose a Menstrual Cup?", 0.3, 0.48, 12.7, 0.78,
font_size=32, bold=True, color=WHITE, align=PP_ALIGN.CENTER, font_name="Georgia")
benefits = [
("🌿", "Eco-Friendly", "No monthly waste — one cup replaces ~2,400 pads or tampons over its lifetime"),
("💰", "Cost-Saving", "One-time cost of ₹300–800 vs. monthly spending on disposables"),
("🏃", "Active Lifestyle", "Swim, exercise, sleep — 12-hour leak-free protection"),
("❤️", "Healthier Choice", "No bleach, dioxins, or absorbency chemicals touching your body"),
("🌍", "Zero Period Poverty Risk", "Once purchased, no recurring expense — great for students"),
("🔒", "Safe & Reliable", "Medical-grade silicone — no TSS (Toxic Shock Syndrome) risk"),
]
cols = [(0.3, 1.4), (4.6, 1.4), (8.9, 1.4),
(0.3, 4.1), (4.6, 4.1), (8.9, 4.1)]
for i, ((bx, by), (ico, title, desc)) in enumerate(zip(cols, benefits)):
add_rect(slide, bx, by, 3.9, 2.3, WHITE)
add_rect(slide, bx, by, 3.9, 0.6, PINK_MID)
add_text(slide, f"{ico} {title}", bx+0.1, by+0.08, 3.7, 0.5,
font_size=15, bold=True, color=WHITE)
add_text(slide, desc, bx+0.12, by+0.7, 3.65, 1.5,
font_size=12, color=DARK_TEXT)
add_text(slide, "\"Embrace Innovation. Empower Your Cycle.\"",
0.3, 6.82, 12.7, 0.35, font_size=10, italic=True, color=WHITE, align=PP_ALIGN.CENTER)
# ── Slide 4: How to Use a Menstrual Cup ──────────────────────────────────────
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, PINK_LIGHT)
add_rect(slide, 0, 0, 13.333, 1.3, PURPLE)
add_rect(slide, 0, 6.8, 13.333, 0.7, PINK_DARK)
add_text(slide, "PART 1 — MENSTRUAL CUP AWARENESS",
0.3, 0.05, 12.7, 0.4, font_size=11, color=PINK_LIGHT, align=PP_ALIGN.CENTER)
add_text(slide, "How to Use a Menstrual Cup", 0.3, 0.48, 12.7, 0.78,
font_size=32, bold=True, color=WHITE, align=PP_ALIGN.CENTER, font_name="Georgia")
steps = [
("1", "WASH HANDS", "Wash hands thoroughly with soap and water before handling the cup."),
("2", "FOLD THE CUP", "Use C-fold, Punch-down fold, or 7-fold — choose what is comfortable."),
("3", "INSERT GENTLY", "Squat or raise one leg. Insert the folded cup into the vagina; it will open and seal."),
("4", "WEAR UP TO 12 HRS", "Once seated correctly, you should feel nothing. Wear for up to 12 hours."),
("5", "REMOVE & EMPTY", "Pinch the base gently to break the seal, pull out and empty into the toilet."),
("6", "RINSE & REINSERT", "Rinse with clean water and reinsert. At end of cycle, sterilise by boiling."),
]
for i, (num, title, desc) in enumerate(steps):
col = i % 2
row = i // 2
bx = 0.35 + col * 6.5
by = 1.5 + row * 1.7
add_rect(slide, bx, by, 0.7, 1.4, PINK_DARK)
add_text(slide, num, bx, by+0.28, 0.7, 0.8,
font_size=26, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_rect(slide, bx+0.7, by, 5.8, 1.4, WHITE)
add_text(slide, title, bx+0.85, by+0.08, 5.5, 0.45,
font_size=14, bold=True, color=PURPLE)
add_text(slide, desc, bx+0.85, by+0.52, 5.5, 0.82,
font_size=12, color=DARK_TEXT)
add_text(slide, "💡 Tip: It may take 2–3 cycles to get comfortable — that is completely normal!",
0.5, 6.55, 12.3, 0.45, font_size=13, bold=True, color=PINK_DARK, align=PP_ALIGN.CENTER)
add_text(slide, "\"Embrace Innovation. Empower Your Cycle.\"",
0.3, 6.82, 12.7, 0.35, font_size=10, italic=True, color=WHITE, align=PP_ALIGN.CENTER)
# ── Slide 5: Common Myths vs Facts ───────────────────────────────────────────
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, RGBColor(0xFF, 0xF0, 0xF8))
add_rect(slide, 0, 0, 13.333, 1.3, PINK_MID)
add_rect(slide, 0, 6.8, 13.333, 0.7, PURPLE)
add_text(slide, "PART 1 — MENSTRUAL CUP AWARENESS",
0.3, 0.05, 12.7, 0.4, font_size=11, color=WHITE, align=PP_ALIGN.CENTER)
add_text(slide, "Myths vs Facts", 0.3, 0.45, 12.7, 0.78,
font_size=34, bold=True, color=WHITE, align=PP_ALIGN.CENTER, font_name="Georgia")
# Column headers
add_rect(slide, 0.3, 1.4, 6.0, 0.55, RGBColor(0xC6, 0x28, 0x28))
add_text(slide, "❌ MYTH", 0.3, 1.4, 6.0, 0.55,
font_size=18, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_rect(slide, 6.8, 1.4, 6.2, 0.55, RGBColor(0x2E, 0x7D, 0x32))
add_text(slide, "✅ FACT", 6.8, 1.4, 6.2, 0.55,
font_size=18, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
myths_facts = [
("It will hurt or is uncomfortable", "With correct sizing and insertion, it is pain-free"),
("It can get lost inside the body", "The vaginal canal has an end — the cup cannot go further"),
("Only for married women", "Any menstruating person can use it, regardless of status"),
("It affects virginity", "Virginity is a social concept — cups do not change anatomy"),
("It is unhygienic", "Medical-grade silicone is non-porous and fully sterilisable"),
]
for i, (myth, fact) in enumerate(myths_facts):
by = 2.1 + i * 0.88
bg = PINK_LIGHT if i % 2 == 0 else RGBColor(0xFF, 0xD6, 0xE8)
add_rect(slide, 0.3, by, 6.0, 0.82, bg)
add_text(slide, myth, 0.45, by+0.08, 5.7, 0.68, font_size=13, color=RGBColor(0xC6, 0x28, 0x28))
bg2 = RGBColor(0xE8, 0xF5, 0xE9) if i % 2 == 0 else RGBColor(0xC8, 0xE6, 0xC9)
add_rect(slide, 6.8, by, 6.2, 0.82, bg2)
add_text(slide, fact, 6.95, by+0.08, 5.9, 0.68, font_size=13, color=RGBColor(0x1B, 0x5E, 0x20))
add_text(slide, "\"Embrace Innovation. Empower Your Cycle.\"",
0.3, 6.82, 12.7, 0.35, font_size=10, italic=True, color=WHITE, align=PP_ALIGN.CENTER)
# ══════════════════════════════════════════════════════════════════════════════
# PART 2 — BREAST CANCER AWARENESS (Slides 6–10)
# Resource Person: Keerthana SP, 3rd Year MBBS, GMC Manjeri
# ══════════════════════════════════════════════════════════════════════════════
# ── Slide 6: Title slide for Part 2 ──────────────────────────────────────────
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, ROSE_LIGHT)
add_rect(slide, 0, 0, 13.333, 2.2, BLUE_DARK)
add_rect(slide, 0, 5.5, 13.333, 2.0, ROSE)
add_text(slide, "Women Development Cell • Noble Women's College, Manjeri",
0.3, 0.2, 12.7, 0.5, font_size=13, bold=False, color=WHITE, align=PP_ALIGN.CENTER)
add_text(slide, "In association with Govt Medical College, Manjeri",
0.3, 0.65, 12.7, 0.4, font_size=11, bold=False, color=ROSE_MID, align=PP_ALIGN.CENTER, italic=True)
add_rect(slide, 1.5, 1.2, 10.3, 0.04, ROSE_MID)
add_rect(slide, 4.5, 1.6, 4.3, 0.55, ROSE)
add_text(slide, "PART 2 OF 2", 4.5, 1.6, 4.3, 0.55,
font_size=14, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_text(slide, "Breast Cancer", 1.5, 2.25, 10.3, 1.0,
font_size=72, bold=True, color=ROSE, align=PP_ALIGN.CENTER, font_name="Georgia")
add_text(slide, "Awareness & Self Examination Workshop", 1.5, 3.3, 10.3, 0.9,
font_size=28, bold=True, color=BLUE_DARK, align=PP_ALIGN.CENTER, font_name="Georgia")
add_rect(slide, 2.5, 4.35, 8.3, 0.75, ROSE)
add_text(slide, "🎗️ KNOW YOUR BODY. TAKE CHARGE OF YOUR HEALTH.", 2.5, 4.35, 8.3, 0.75,
font_size=17, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_text(slide, "Resource Person: Keerthana SP", 0.5, 5.62, 7.0, 0.5,
font_size=18, bold=True, color=WHITE, align=PP_ALIGN.LEFT)
add_text(slide, "3rd Year MBBS Student • GMC Manjeri", 0.5, 6.07, 7.0, 0.45,
font_size=13, bold=False, color=ROSE_LIGHT, align=PP_ALIGN.LEFT, italic=True)
add_text(slide, "6 August 2026 | 2 PM | Auditorium", 0.5, 6.52, 7.0, 0.45,
font_size=12, bold=False, color=ROSE_LIGHT, align=PP_ALIGN.LEFT)
add_text(slide, "\"Aware Today, Stronger Tomorrow\"",
6.5, 5.75, 6.5, 0.85, font_size=14, bold=False, color=WHITE,
align=PP_ALIGN.RIGHT, italic=True)
# ── Slide 7: Understanding Breast Cancer ─────────────────────────────────────
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, ROSE_LIGHT)
add_rect(slide, 0, 0, 13.333, 1.3, BLUE_DARK)
add_rect(slide, 0, 6.8, 13.333, 0.7, ROSE)
add_text(slide, "PART 2 — BREAST CANCER AWARENESS",
0.3, 0.05, 12.7, 0.4, font_size=11, color=ROSE_LIGHT, align=PP_ALIGN.CENTER)
add_text(slide, "Understanding Breast Cancer", 0.3, 0.45, 12.7, 0.78,
font_size=32, bold=True, color=WHITE, align=PP_ALIGN.CENTER, font_name="Georgia")
# Left illustration column
add_rect(slide, 0.3, 1.45, 5.0, 5.0, RGBColor(0xFC, 0xE4, 0xEC))
add_text(slide, "🎗️", 0.3, 2.2, 5.0, 2.0, font_size=100, align=PP_ALIGN.CENTER)
add_text(slide, "1 in 28 Indian women\nwill develop breast cancer\nin their lifetime",
0.3, 4.4, 5.0, 1.5, font_size=13, bold=True, color=ROSE,
align=PP_ALIGN.CENTER)
# Right content column
bullets_bc = [
("🔸", "Breast cancer is the most common cancer in Indian women (28% of all cancers)"),
("🔸", "It can occur in both women AND men, though it is rare in men"),
("🔸", "Starts as a malignant (cancerous) tumour in the cells of the breast"),
("🔸", "Early detection increases 5-year survival rate to over 90%"),
("🔸", "Average age of onset in India is 10 years younger than Western countries"),
("🔸", "Most cases have NO family history — awareness matters for everyone"),
]
add_text(slide, "Key Facts You Need to Know", 5.8, 1.4, 7.1, 0.55,
font_size=19, bold=True, color=BLUE_DARK, align=PP_ALIGN.LEFT)
add_rect(slide, 5.8, 1.95, 7.1, 0.05, ROSE)
y = 2.1
for icon, fact in bullets_bc:
add_text(slide, f"{icon} {fact}", 5.9, y, 7.0, 0.65, font_size=14, color=DARK_TEXT)
y += 0.7
add_text(slide, "\"Aware Today, Stronger Tomorrow\"",
0.3, 6.82, 12.7, 0.35, font_size=10, italic=True, color=WHITE, align=PP_ALIGN.CENTER)
# ── Slide 8: Warning Signs & Risk Factors ────────────────────────────────────
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, RGBColor(0xFF, 0xF8, 0xF9))
add_rect(slide, 0, 0, 13.333, 1.3, ROSE)
add_rect(slide, 0, 6.8, 13.333, 0.7, BLUE_DARK)
add_text(slide, "PART 2 — BREAST CANCER AWARENESS",
0.3, 0.05, 12.7, 0.4, font_size=11, color=WHITE, align=PP_ALIGN.CENTER)
add_text(slide, "Warning Signs & Risk Factors", 0.3, 0.45, 12.7, 0.78,
font_size=32, bold=True, color=WHITE, align=PP_ALIGN.CENTER, font_name="Georgia")
# Warning Signs (left)
add_rect(slide, 0.3, 1.4, 6.2, 0.55, RGBColor(0xC6, 0x28, 0x28))
add_text(slide, "⚠️ WARNING SIGNS", 0.3, 1.4, 6.2, 0.55,
font_size=16, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
signs = [
"🔴 A new lump or thickening in the breast or underarm",
"🔴 Change in breast size, shape, or appearance",
"🔴 Dimpling or puckering of breast skin",
"🔴 Nipple inversion (turning inward) or discharge",
"🔴 Redness, soreness, rash or swelling on breast skin",
"🔴 Unexplained pain in breast or nipple area",
]
for i, sign in enumerate(signs):
bg = RGBColor(0xFF, 0xEB, 0xEE) if i % 2 == 0 else WHITE
add_rect(slide, 0.3, 2.05+i*0.7, 6.2, 0.66, bg)
add_text(slide, sign, 0.45, 2.08+i*0.7, 5.9, 0.6, font_size=13, color=DARK_TEXT)
# Risk Factors (right)
add_rect(slide, 6.9, 1.4, 6.1, 0.55, ROSE)
add_text(slide, "📋 RISK FACTORS", 6.9, 1.4, 6.1, 0.55,
font_size=16, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
risks = [
"🟣 Female gender and age above 40 years",
"🟣 Family history of breast or ovarian cancer",
"🟣 Dense breast tissue",
"🟣 Obesity and sedentary lifestyle",
"🟣 Alcohol consumption and smoking",
"🟣 Hormone therapy or early periods / late menopause",
]
for i, risk in enumerate(risks):
bg = ROSE_LIGHT if i % 2 == 0 else WHITE
add_rect(slide, 6.9, 2.05+i*0.7, 6.1, 0.66, bg)
add_text(slide, risk, 7.05, 2.08+i*0.7, 5.85, 0.6, font_size=13, color=DARK_TEXT)
add_text(slide, "\"Aware Today, Stronger Tomorrow\"",
0.3, 6.82, 12.7, 0.35, font_size=10, italic=True, color=WHITE, align=PP_ALIGN.CENTER)
# ── Slide 9: Breast Self Examination (BSE) ───────────────────────────────────
slide = prs.slides.add_slide(blank_layout)
add_rect(slide, 0, 0, 13.333, 7.5, ROSE_LIGHT)
add_rect(slide, 0, 0, 13.333, 1.3, BLUE_DARK)
add_rect(slide, 0, 6.8, 13.333, 0.7, ROSE)
add_text(slide, "PART 2 — BREAST CANCER AWARENESS",
0.3, 0.05, 12.7, 0.4, font_size=11, color=ROSE_LIGHT, align=PP_ALIGN.CENTER)
add_text(slide, "Breast Self-Examination (BSE) — Step by Step", 0.3, 0.45, 12.7, 0.78,
font_size=28, bold=True, color=WHITE, align=PP_ALIGN.CENTER, font_name="Georgia")
# Introductory note
add_rect(slide, 0.3, 1.4, 12.7, 0.55, RGBColor(0xFF, 0xD6, 0xE8))
add_text(slide, "📅 Perform BSE once a month — best done 3–5 days after your period ends (when breasts are less tender)",
0.35, 1.42, 12.6, 0.5, font_size=13, bold=True, color=BLUE_DARK, align=PP_ALIGN.LEFT)
bse_steps = [
("1", "IN FRONT OF A MIRROR", "Stand with arms at sides. Look for any changes in breast shape, size, skin texture, or nipple direction."),
("2", "ARMS RAISED", "Raise both arms overhead. Check for the same changes on both sides and underneath the breast."),
("3", "NIPPLE CHECK", "Gently squeeze each nipple. Note any discharge (fluid coming out) — clear, milky, or bloody."),
("4", "LYING DOWN — RIGHT BREAST", "Lie flat; place right arm behind head. Use left hand fingers (flat, circular motion) to feel the entire right breast."),
("5", "LYING DOWN — LEFT BREAST", "Repeat with left arm behind head using right hand. Cover the full breast in an up-down strip pattern."),
("6", "FEEL THE ARMPIT", "Feel your armpit area as well — lymph nodes here can swell early if cancer spreads."),
]
for i, (num, title, desc) in enumerate(bse_steps):
col = i % 3
row = i // 3
bx = 0.3 + col * 4.35
by = 2.1 + row * 2.1
add_rect(slide, bx, by, 0.65, 1.9, ROSE)
add_text(slide, num, bx, by+0.55, 0.65, 0.8,
font_size=22, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
add_rect(slide, bx+0.65, by, 3.6, 1.9, WHITE)
add_text(slide, title, bx+0.75, by+0.05, 3.4, 0.45,
font_size=11, bold=True, color=ROSE)
add_text(slide, desc, bx+0.75, by+0.52, 3.4, 1.3,
font_size=11, color=DARK_TEXT)
add_text(slide, "\"Aware Today, Stronger Tomorrow\"",
0.3, 6.82, 12.7, 0.35, font_size=10, italic=True, color=WHITE, align=PP_ALIGN.CENTER)
# ── Slide 10: Closing / Action Slide (Both Topics) ───────────────────────────
slide = prs.slides.add_slide(blank_layout)
# Split background — left pink, right rose
add_rect(slide, 0, 0, 6.67, 7.5, PURPLE)
add_rect(slide, 6.67, 0, 6.67, 7.5, BLUE_DARK)
# centre accent
add_rect(slide, 6.2, 0, 0.93, 7.5, RGBColor(0xFF, 0xFF, 0xFF))
# Left side — Menstrual Cup takeaways
add_rect(slide, 0.2, 0.3, 5.7, 0.75, PINK_MID)
add_text(slide, "🩸 Menstrual Cup Awareness", 0.2, 0.3, 5.7, 0.75,
font_size=17, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
takeaways_mc = [
"✔ A safe, eco-friendly period solution",
"✔ Cost-effective — invest once, use for years",
"✔ Holds more, leaks less — perfect for active days",
"✔ Medical-grade silicone — body safe",
"✔ Ask your gynaecologist for the right size",
]
for i, t in enumerate(takeaways_mc):
add_rect(slide, 0.2, 1.2+i*0.95, 5.7, 0.82, RGBColor(0x6A, 0x1B, 0x9A) if i%2==0 else RGBColor(0x7B, 0x1F, 0xA2))
add_text(slide, t, 0.35, 1.25+i*0.95, 5.4, 0.7, font_size=13, color=WHITE)
add_text(slide, "Presented by: Sariga MG, 3rd Yr MBBS, GMC Manjeri",
0.2, 6.4, 5.7, 0.5, font_size=11, italic=True, color=PINK_LIGHT, align=PP_ALIGN.CENTER)
# Right side — Breast Cancer takeaways
add_rect(slide, 7.43, 0.3, 5.7, 0.75, ROSE)
add_text(slide, "🎗️ Breast Cancer Awareness", 7.43, 0.3, 5.7, 0.75,
font_size=17, bold=True, color=WHITE, align=PP_ALIGN.CENTER)
takeaways_bc = [
"✔ 1 in 28 Indian women — know your risk",
"✔ Early detection = 90%+ survival rate",
"✔ Perform BSE every month, 3–5 days post-period",
"✔ Mammogram after age 40 (or earlier if high risk)",
"✔ See a doctor if you notice any warning signs",
]
for i, t in enumerate(takeaways_bc):
bg = RGBColor(0xAD, 0x14, 0x57) if i%2==0 else RGBColor(0xC2, 0x18, 0x5B)
add_rect(slide, 7.43, 1.2+i*0.95, 5.7, 0.82, bg)
add_text(slide, t, 7.58, 1.25+i*0.95, 5.4, 0.7, font_size=13, color=WHITE)
add_text(slide, "Presented by: Keerthana SP, 3rd Yr MBBS, GMC Manjeri",
7.43, 6.4, 5.7, 0.5, font_size=11, italic=True, color=ROSE_LIGHT, align=PP_ALIGN.CENTER)
# Centre divider text
add_text(slide, "KEY\nTAKE-\nAWAYS", 6.25, 2.8, 0.83, 1.8,
font_size=11, bold=True, color=DARK_TEXT, align=PP_ALIGN.CENTER)
# Bottom banner
add_rect(slide, 0, 6.9, 13.333, 0.6, RGBColor(0x1A, 0x1A, 0x2E))
add_text(slide, "Noble Women's College, Manjeri • Women Development Cell • 6 August 2026",
0.3, 6.92, 12.7, 0.4, font_size=11, color=RGBColor(0xCC, 0xCC, 0xCC), align=PP_ALIGN.CENTER)
# ──────────────────────────────────────────────────────────────────────────────
out_path = "/tmp/workspace/noble-womens-ppt/Noble_Womens_Awareness_PPT.pptx"
prs.save(out_path)
print(f"Saved: {out_path}")
print(f"Slide count: {len(prs.slides)}")
cd /tmp/workspace/noble-womens-ppt && python create_ppt.py 2>&1
python3 -c " from pptx import Presentation prs = Presentation('/tmp/workspace/noble-womens-ppt/Noble_Womens_Awareness_PPT.pptx') print(f'Total slides: {len(prs.slides)}') for i, slide in enumerate(prs.slides, 1): texts = [] for shape in slide.shapes: if shape.has_text_frame: t = shape.text_frame.text.strip() if t: texts.append(t[:60]) print(f'Slide {i}: {texts[:3]}') "
Noble Womens Awareness PPT
Presentation · PPTX