~/cbr-exam-pdf/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.colors import HexColor, white, black
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, KeepTogether, PageBreak
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.lib import colors
OUTPUT = "/tmp/workspace/cbr-exam-pdf/CBR_Voluntary_Organisations_ExamSummary.pdf"
# ββ Colour palette ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
C_NAVY = HexColor("#1a237e")
C_BLUE = HexColor("#1565c0")
C_LBLUE = HexColor("#e3f2fd")
C_TEAL = HexColor("#00695c")
C_LTEAL = HexColor("#e0f2f1")
C_ORANGE = HexColor("#e65100")
C_LORANGE = HexColor("#fff3e0")
C_RED = HexColor("#b71c1c")
C_LRED = HexColor("#ffebee")
C_PURPLE = HexColor("#4a148c")
C_LPURPLE = HexColor("#f3e5f5")
C_GREEN = HexColor("#1b5e20")
C_LGREEN = HexColor("#e8f5e9")
C_YELLOW = HexColor("#f9a825")
C_LYELLOW = HexColor("#fffde7")
C_GREY = HexColor("#37474f")
C_LGREY = HexColor("#eceff1")
C_HEADER_BG = HexColor("#0d1b4b")
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
rightMargin=1.5*cm, leftMargin=1.5*cm,
topMargin=1.5*cm, bottomMargin=1.5*cm
)
W = A4[0] - 3*cm # usable width
styles = getSampleStyleSheet()
# Custom styles
def S(name, **kw):
base = kw.pop("parent", "Normal")
ps = ParagraphStyle(name, parent=styles[base], **kw)
return ps
sTitle = S("sTitle", fontSize=20, textColor=white, alignment=TA_CENTER,
leading=26, fontName="Helvetica-Bold", spaceAfter=4)
sSubTitle = S("sSubTitle", fontSize=10, textColor=HexColor("#bbdefb"), alignment=TA_CENTER,
leading=14, fontName="Helvetica", spaceAfter=2)
sSH = S("sSH", fontSize=13, textColor=white, alignment=TA_LEFT,
leading=18, fontName="Helvetica-Bold", spaceAfter=2, spaceBefore=6)
sSH2 = S("sSH2", fontSize=11, textColor=C_NAVY, alignment=TA_LEFT,
leading=16, fontName="Helvetica-Bold", spaceAfter=2, spaceBefore=4)
sBody = S("sBody", fontSize=9, textColor=C_GREY, alignment=TA_LEFT,
leading=13, fontName="Helvetica", spaceAfter=2)
sMnemo = S("sMnemo", fontSize=10, textColor=C_ORANGE, alignment=TA_CENTER,
leading=14, fontName="Helvetica-Bold", spaceAfter=2)
sBullet = S("sBullet", fontSize=9, textColor=C_GREY, alignment=TA_LEFT,
leading=13, fontName="Helvetica", leftIndent=10, spaceAfter=1,
bulletIndent=3)
sHighlight = S("sHighlight",fontSize=9, textColor=C_RED, alignment=TA_LEFT,
leading=13, fontName="Helvetica-Bold", spaceAfter=1)
sCaption = S("sCaption", fontSize=8, textColor=C_GREY, alignment=TA_CENTER,
leading=11, fontName="Helvetica-Oblique", spaceAfter=2)
def section_header(text, bg=C_NAVY, fg=white):
data = [[Paragraph(text, S("_sh", fontSize=12, textColor=fg,
fontName="Helvetica-Bold", leading=16))]]
t = Table(data, colWidths=[W])
t.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), bg),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING",(0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 10),
("RIGHTPADDING", (0,0), (-1,-1), 10),
("ROUNDEDCORNERS", [4]),
]))
return t
def mnemonic_box(text, bg=C_LYELLOW, fg=C_ORANGE):
data = [[Paragraph(f"π MEMORY TRICK: {text}",
S("_mn", fontSize=10, textColor=fg,
fontName="Helvetica-Bold", leading=14, alignment=TA_CENTER))]]
t = Table(data, colWidths=[W])
t.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), bg),
("TOPPADDING", (0,0),(-1,-1), 7),
("BOTTOMPADDING", (0,0),(-1,-1), 7),
("LEFTPADDING", (0,0),(-1,-1), 8),
("RIGHTPADDING", (0,0),(-1,-1), 8),
("BOX", (0,0),(-1,-1), 1, C_YELLOW),
]))
return t
def simple_table(headers, rows, col_widths, hdr_bg=C_BLUE, alt_bg=C_LBLUE):
hdr_style = S("_th", fontSize=9, textColor=white, fontName="Helvetica-Bold",
leading=12, alignment=TA_CENTER)
cell_style = S("_td", fontSize=8.5, textColor=C_GREY, fontName="Helvetica",
leading=12, alignment=TA_LEFT)
cell_c = S("_tdc", fontSize=8.5, textColor=C_GREY, fontName="Helvetica",
leading=12, alignment=TA_CENTER)
table_data = [[Paragraph(h, hdr_style) for h in headers]]
for row in rows:
table_data.append([Paragraph(str(c), cell_style) for c in row])
t = Table(table_data, colWidths=col_widths, repeatRows=1)
ts = [
("BACKGROUND", (0,0), (-1,0), hdr_bg),
("ROWBACKGROUNDS",(0,1), (-1,-1), [white, alt_bg]),
("GRID", (0,0), (-1,-1), 0.4, HexColor("#b0bec5")),
("TOPPADDING", (0,0), (-1,-1), 4),
("BOTTOMPADDING", (0,0), (-1,-1), 4),
("LEFTPADDING", (0,0), (-1,-1), 5),
("RIGHTPADDING", (0,0), (-1,-1), 5),
("VALIGN", (0,0), (-1,-1), "MIDDLE"),
]
t.setStyle(TableStyle(ts))
return t
def highlight_box(text, bg=C_LRED, border=C_RED):
data = [[Paragraph(text, S("_hb", fontSize=9, textColor=C_RED,
fontName="Helvetica-Bold", leading=13))]]
t = Table(data, colWidths=[W])
t.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), bg),
("BOX", (0,0),(-1,-1), 1.2, border),
("TOPPADDING", (0,0),(-1,-1), 6),
("BOTTOMPADDING",(0,0),(-1,-1), 6),
("LEFTPADDING",(0,0),(-1,-1), 10),
]))
return t
def info_box(text, bg=C_LTEAL, border=C_TEAL):
data = [[Paragraph(text, S("_ib", fontSize=9, textColor=C_TEAL,
fontName="Helvetica-Bold", leading=13))]]
t = Table(data, colWidths=[W])
t.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), bg),
("BOX", (0,0),(-1,-1), 1.2, border),
("TOPPADDING", (0,0),(-1,-1), 6),
("BOTTOMPADDING",(0,0),(-1,-1), 6),
("LEFTPADDING",(0,0),(-1,-1), 10),
]))
return t
def sp(h=4): return Spacer(1, h)
# ββ Build story ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
story = []
# ββ COVER HEADER ββ
cover_data = [[
Paragraph("VOLUNTARY ORGANISATIONS IN CBR", sTitle),
Paragraph("Community-Based Rehabilitation | Exam Quick Revision", sSubTitle),
Paragraph("Including: Bilateral Agencies β’ International NGOs β’ Red Cross β’ CARE β’ Rockefeller", sSubTitle),
]]
cover = Table(cover_data, colWidths=[W])
cover.setStyle(TableStyle([
("BACKGROUND", (0,0),(-1,-1), C_HEADER_BG),
("TOPPADDING", (0,0),(-1,-1), 14),
("BOTTOMPADDING", (0,0),(-1,-1), 14),
("LEFTPADDING", (0,0),(-1,-1), 14),
("RIGHTPADDING", (0,0),(-1,-1), 14),
("BOX", (0,0),(-1,-1), 2, C_YELLOW),
]))
story.append(cover)
story.append(sp(10))
# ββ SECTION 1 - Definition ββ
story.append(section_header("1. DEFINITION OF VOLUNTARY ORGANISATION", C_NAVY))
story.append(sp(4))
story.append(info_box(
'"A voluntary organization is a non-governmental, autonomous, non-profit organization '
'supported mainly by voluntary contribution in cash and time from the general public."'
))
story.append(sp(6))
# ββ SECTION 2 - 4 Functions ββ
story.append(section_header("2. FOUR FUNCTIONS β Memory Trick: SEAG", C_TEAL))
story.append(sp(4))
story.append(mnemonic_box("SEAG = Supplement β’ Educate β’ Advance legislation β’ Guard govt work"))
story.append(sp(4))
story.append(simple_table(
["Letter", "Function"],
[
["S", "Supplementing the work of government agencies"],
["E", "Education of public"],
["A", "Advancing health legislation"],
["G", "Guarding the work of government agencies"],
],
[W*0.1, W*0.9],
hdr_bg=C_TEAL, alt_bg=C_LTEAL
))
story.append(sp(8))
# ββ SECTION 3 - Roles of Voluntary Sector ββ
story.append(section_header("3. ROLES IN CBR β Memory Trick: SIR HCΒ²", C_BLUE))
story.append(sp(4))
story.append(mnemonic_box("SIR HCΒ² = Specialized β’ Integrated β’ Rotary/Lions β’ Health special groups β’ Campaigns β’ Community researchers"))
story.append(sp(4))
story.append(simple_table(
["Letter", "Role"],
[
["S", "Specialized community health programmes"],
["I", "Integrated development programmes"],
["R", "Rotary Club / Lions Club health sponsorship"],
["H", "Health care for special groups (PWDs, elderly, women)"],
["C", "Campaigns group"],
["C", "Community health researchers & activists"],
],
[W*0.1, W*0.9],
hdr_bg=C_BLUE, alt_bg=C_LBLUE
))
story.append(sp(8))
# ββ SECTION 4 - Classification ββ
story.append(section_header("4. INTERNATIONAL AGENCIES CLASSIFICATION β MBN", C_PURPLE))
story.append(sp(4))
story.append(mnemonic_box("MBN = Multilateral β’ Bilateral β’ Nongovernmental", bg=C_LPURPLE, fg=C_PURPLE))
story.append(sp(4))
story.append(simple_table(
["Type", "Examples", "How they work"],
[
["Multilateral", "WHO, ILO, UNESCO, UNICEF, World Bank", "Through international bodies/UN system"],
["Bilateral", "SIDA (Sweden), DANIDA (Denmark)", "Country-to-country direct aid"],
["Non-Governmental", "Red Cross, CARE International, Rockefeller Foundation", "Independent humanitarian/development work"],
],
[W*0.2, W*0.4, W*0.4],
hdr_bg=C_PURPLE, alt_bg=C_LPURPLE
))
story.append(sp(8))
# ββ SECTION 5 - Bilateral Agencies ββ
story.append(section_header("5. BILATERAL AGENCIES (HIGH YIELD!)", C_RED))
story.append(sp(4))
story.append(highlight_box("β
SIDA β RNTCP (TB) | DANIDA β NPCB (Blindness) + RNTCP + DANLEP (Leprosy)"))
story.append(sp(6))
# SIDA
story.append(Paragraph("<b>SIDA β Swedish International Development Cooperation Agency</b>",
S("_h2", fontSize=11, textColor=C_BLUE, fontName="Helvetica-Bold", leading=15)))
story.append(sp(3))
story.append(mnemonic_box("Sweden β Stockholm β 1995 β TB drugs (X-ray, microscopes, anti-TB)", bg=C_LBLUE, fg=C_BLUE))
story.append(sp(3))
story.append(simple_table(
["Point", "Detail"],
[
["Full form", "Swedish International Development Cooperation Agency"],
["Under", "Swedish Ministry for Foreign Affairs"],
["Founded", "1995, Headquarters: Stockholm, Sweden"],
["Employees", "~900"],
["India work", "RNTCP since 1979 β X-ray units, microscopes, anti-TB drugs"],
["Vision", "Safeguard rights of every individual to live a dignified life"],
["Goal", "Enable people in poverty to improve their lives"],
["Priority", "Fight corruption, openness and transparency"],
["Extra", "Supports gender equality, human rights, democracy"],
["Regions", "Africa, Asia, Europe, South America"],
],
[W*0.3, W*0.7],
hdr_bg=C_BLUE, alt_bg=C_LBLUE
))
story.append(sp(8))
# DANIDA
story.append(Paragraph("<b>DANIDA β Danish International Development Agency</b>",
S("_h2b", fontSize=11, textColor=C_TEAL, fontName="Helvetica-Bold", leading=15)))
story.append(sp(3))
story.append(mnemonic_box("Denmark β Copenhagen β 1962 β Blindness + TB + Leprosy", bg=C_LTEAL, fg=C_TEAL))
story.append(sp(3))
story.append(simple_table(
["Point", "Detail"],
[
["Full form", "Danish International Development Agency"],
["Under", "Ministry of Foreign Affairs, Denmark"],
["Founded", "1962, Headquarters: Copenhagen, Denmark"],
["Policy aim", "Combat poverty through human rights + economic growth"],
["India since", "1963 (bilateral development assistance)"],
["Countries", "73 countries; 21 high-priority (Africa + Asia β poorest nations)"],
["Collaborates with", "UN, World Bank, Regional Development Banks, EU"],
],
[W*0.3, W*0.7],
hdr_bg=C_TEAL, alt_bg=C_LTEAL
))
story.append(sp(4))
story.append(mnemonic_box("DANIDA 6 Areas in India: PT-RE-EA", bg=C_LTEAL, fg=C_TEAL))
story.append(sp(3))
story.append(simple_table(
["Letter", "Area"],
[
["P", "Political dialogue"],
["T", "Trade and investments"],
["R", "Research, science and technology"],
["E", "Energy, environment and climate"],
["E", "Education + cooperation between peoples and culture"],
["A", "Attracting foreign labour"],
],
[W*0.1, W*0.9],
hdr_bg=C_TEAL, alt_bg=C_LTEAL
))
story.append(sp(4))
story.append(highlight_box(
"DANIDA Health Programmes in India:\n"
"β’ 1966 β RNTCP (Revised National TB Control Programme)\n"
"β’ 1978 β NPCB (National Programme for Control of Blindness)\n"
"β’ Also β DANLEP (National Leprosy Eradication Programme)",
bg=C_LRED, border=C_RED
))
story.append(PageBreak())
# ββ SECTION 6 - Red Cross ββ
story.append(section_header("6. INTERNATIONAL RED CROSS", C_RED))
story.append(sp(4))
story.append(mnemonic_box("DUNANT β 1859 SOLFERINO β 1864 GENEVA β 1901 NOBEL β 1920 INDIA", bg=C_LRED, fg=C_RED))
story.append(sp(4))
story.append(simple_table(
["Year", "Event"],
[
["1859", "Battle of Solferino, North Italy β Dunant inspired by suffering of wounded soldiers"],
["1864", "International conference in Geneva β Treaty signed β ICRC constituted"],
["1901", "Henry Dunant received the FIRST Nobel Peace Prize"],
["1919", "League of Red Cross Society created; HQ Geneva; 90 national societies"],
["1920", "Red Cross Society of India established by Act of Indian Legislature"],
["8 May", "World Red Cross Day celebrated every year"],
],
[W*0.12, W*0.88],
hdr_bg=C_RED, alt_bg=C_LRED
))
story.append(sp(4))
story.append(simple_table(
["Key Fact", "Detail"],
[
["Founder", "Henry Dunant (Swiss businessman)"],
["Headquarters", "Geneva, Switzerland"],
["Type", "Private humanitarian organization (Non-Governmental)"],
["Formation date", "17 February"],
["Members", "200 million members worldwide"],
["Tagline", "Biggest relief organization in the world"],
["Scope", "War + disasters (famine, earthquake, floods, calamities)"],
],
[W*0.35, W*0.65],
hdr_bg=C_RED, alt_bg=C_LRED
))
story.append(sp(6))
story.append(Paragraph("<b>Red Cross India β 9 Activities</b>",
S("_h2c", fontSize=11, textColor=C_RED, fontName="Helvetica-Bold", leading=15)))
story.append(sp(3))
story.append(mnemonic_box("WMDB-HMRHE = War β’ Medicines/disaster β’ Donations/blood β’ Baby care β’ Hospital supplies β’ Military peacetime β’ Rehab home β’ Health education β’ Emergency first aid", bg=C_LRED, fg=C_RED))
story.append(sp(3))
story.append(simple_table(
["#", "Activity"],
[
["1", "Provision of amenities to soldiers in time of war"],
["2", "Disaster relief β milk, medicines, food, vitamins, clothes, blankets"],
["3", "Blood banks + blood donation promotion (for war & disaster victims)"],
["4", "Maternity and child welfare services"],
["5", "Military hospital peacetime comforts (newspapers, instruments)"],
["6", "Equipment, drugs and supplies to hospitals"],
["7", "Red Cross Home, Bengaluru β for permanently disabled ex-servicemen (pioneer in Asia) β
"],
["8", "Health education campaigns"],
["9", "First aid services + training via St John Ambulance Association of India"],
],
[W*0.07, W*0.93],
hdr_bg=C_RED, alt_bg=C_LRED
))
story.append(sp(4))
story.append(highlight_box("β
EXAM HIGHLIGHT: Red Cross Home in Bengaluru for permanently disabled ex-servicemen β one of the PIONEER institutions of its kind in ASIA"))
story.append(sp(8))
# ββ SECTION 7 - CARE ββ
story.append(section_header("7. CARE INTERNATIONAL", C_ORANGE))
story.append(sp(4))
story.append(mnemonic_box("CARE = Cooperative for Assistance and Relief Everywhere | 84 countries | 122 million people", bg=C_LORANGE, fg=C_ORANGE))
story.append(sp(4))
story.append(simple_table(
["Point", "Detail"],
[
["Full form", "Cooperative for Assistance and Relief Everywhere"],
["Works in", "84 countries (2011: 1051 projects, 122 million people reached)"],
["Employees", "11,000+ worldwide"],
["Focus", "Tackle UNDERLYING causes of poverty β self-sufficiency"],
["Emergency role", "Often FIRST to deliver emergency aid in disasters/war/crisis"],
],
[W*0.3, W*0.7],
hdr_bg=C_ORANGE, alt_bg=C_LORANGE
))
story.append(sp(4))
col2 = W/2 - 3
left_data = [
[Paragraph("<b>5 Promotion Areas β SEDIA</b>",
S("_ch", fontSize=9, textColor=C_ORANGE, fontName="Helvetica-Bold", leading=12))],
[simple_table(
["S", "Strengthening self-help capacity"],
[["E", "Economic opportunity"],
["D", "Delivering emergency relief"],
["I", "Influencing policy at all levels"],
["A", "Addressing discrimination"]],
[col2*0.15, col2*0.85], hdr_bg=C_ORANGE, alt_bg=C_LORANGE
)],
]
right_data = [
[Paragraph("<b>8 Activity Areas β ACEHNEW + HIV</b>",
S("_ch2", fontSize=9, textColor=C_ORANGE, fontName="Helvetica-Bold", leading=12))],
[simple_table(
["Agriculture & natural resources", "Climate change"],
[["Education", "Health"],
["Nutrition", "Economic development"],
["Water/sanitation/env. health", "HIV/AIDS"]],
[col2*0.5, col2*0.5], hdr_bg=C_ORANGE, alt_bg=C_LORANGE
)],
]
story.append(simple_table(
["5 Promotion Areas β SEDIA", "8 Activity Areas"],
[
["S - Strengthening self-help capacity", "Agriculture & natural resources"],
["E - Economic opportunity", "Climate change"],
["D - Delivering emergency relief", "Education"],
["I - Influencing policy at all levels", "Health & Nutrition"],
["A - Addressing discrimination", "Economic development"],
["", "Water, sanitation & environmental health"],
["", "HIV/AIDS"],
],
[W*0.5, W*0.5],
hdr_bg=C_ORANGE, alt_bg=C_LORANGE
))
story.append(sp(8))
# ββ SECTION 8 - Rockefeller ββ
story.append(section_header("8. ROCKEFELLER FOUNDATION", C_GREEN))
story.append(sp(4))
story.append(mnemonic_box("RED = Restoration β’ Emergency Relief β’ Development plans", bg=C_LGREEN, fg=C_GREEN))
story.append(sp(4))
story.append(simple_table(
["Point", "Detail"],
[
["Vision", "Caring organization positively impacting community through capital development and eradication of poverty"],
["Mission", "Relief in emergencies (approved) + Economic opportunities (micro-enterprise model) + Infrastructural assistance (Global Village concept)"],
["3 Major Areas", "R - Restoration efforts | E - Emergency Relief | D - Development plans"],
],
[W*0.2, W*0.8],
hdr_bg=C_GREEN, alt_bg=C_LGREEN
))
story.append(sp(8))
# ββ SECTION 9 - CBR-Specific Voluntary Orgs ββ
story.append(section_header("9. CBR-SPECIFIC VOLUNTARY ORGANISATIONS", C_NAVY))
story.append(sp(4))
story.append(simple_table(
["Organisation", "Primary Role", "Memory Hook"],
[
["Local NGO", "Service delivery + Community attitude change toward PWDs", "SCARED: Service, Community attitude, Advocacy, Referral, Education, DPO formation"],
["INGO", "Funding + Technical info + Scale-up CBR", "FTRPMS: Funding, Technical, Research, Partnership, Management, Scale-up"],
["DPO (Disabled People's Org)", "Leadership + Advocacy + CBR monitoring", "LAIM: Leadership, Advocacy, Inclusion, Monitoring"],
["Self-Help Groups (SHG)", "Mutual support + Economic self-sufficiency", "MFESO: Mutual, Federation, Economic, Sustainability, Ownership"],
["Volunteers / CRWs", "Awareness + Follow-up + Community ownership", "SAFE: Sustainability, Awareness, Follow-up, Education of families"],
["Parents' Associations", "Plan non-formal education for children with disabilities", "PAID: Planning, Advocacy, Implementation, Decision-making"],
["Universities / Professional Bodies", "Train CRWs + Research", "TECH: Training, Evidence, Curriculum, Human resource development"],
],
[W*0.22, W*0.42, W*0.36],
hdr_bg=C_NAVY, alt_bg=C_LBLUE
))
story.append(sp(6))
story.append(mnemonic_box("DPO types: SINGLE-disability (specific impairment advocacy) vs CROSS-disability (community + national policy)"))
story.append(sp(8))
# ββ SECTION 10 - Master Comparison ββ
story.append(section_header("10. MASTER COMPARISON TABLE β ALL ORGANISATIONS", C_GREY))
story.append(sp(4))
story.append(simple_table(
["Organisation", "Type", "HQ/Country", "Founded", "India Link", "Quick Hook"],
[
["SIDA", "Bilateral", "Stockholm, Sweden", "1995", "RNTCP (TB) since 1979", "SwedenβTBβ1995"],
["DANIDA", "Bilateral", "Copenhagen, Denmark", "1962", "NPCB+RNTCP+DANLEP since 1963", "DenmarkβBlind+TB+Leprosy"],
["Red Cross", "Int. NGO", "Geneva, Switzerland", "1864 (ICRC)", "Blood banks, disaster, Bengaluru home", "Dunant 1859β1864βNobel 1901"],
["CARE", "Int. NGO", "Global", "-", "84 countries, 122M people", "SEDIA + 8 activities"],
["Rockefeller", "Foundation", "USA", "-", "Capital + poverty eradication", "RED = Restore, Emergency, Develop"],
["Local NGO", "Voluntary", "Community level", "-", "Direct service + attitude change", "SCARED"],
["DPO", "Voluntary", "Community/National", "-", "Leadership + advocacy in CBR", "LAIM"],
["SHG", "Voluntary", "Community level", "-", "Mutual support + self-sufficiency", "MFESO"],
],
[W*0.15, W*0.13, W*0.18, W*0.1, W*0.25, W*0.19],
hdr_bg=C_GREY, alt_bg=C_LGREY
))
story.append(sp(8))
# ββ SECTION 11 - Rapid Fire Q&A ββ
story.append(section_header("11. RAPID-FIRE EXAM Q&A", HexColor("#1a237e")))
story.append(sp(4))
story.append(simple_table(
["Question", "Answer"],
[
["SIDA full form?", "Swedish International Development Cooperation Agency"],
["SIDA HQ & year?", "Stockholm, Sweden β 1995"],
["SIDA India programme?", "RNTCP since 1979 (X-ray units, microscopes, anti-TB drugs)"],
["DANIDA full form?", "Danish International Development Agency"],
["DANIDA HQ & year?", "Copenhagen, Denmark β 1962"],
["DANIDA 3 India health programmes?", "NPCB (1978) + RNTCP (1966) + DANLEP"],
["Red Cross founder?", "Henry Dunant (Swiss businessman)"],
["Battle that inspired Dunant?", "Battle of Solferino, North Italy β 1859"],
["When was ICRC constituted?", "1864 β Geneva conference and treaty"],
["Nobel Prize to Dunant?", "1901 β First ever Nobel Peace Prize"],
["Red Cross India established?", "1920 β by Act of Indian Legislature"],
["World Red Cross Day?", "8 May every year"],
["Red Cross India unique institution?", "Red Cross Home, Bengaluru β disabled ex-servicemen β Pioneer in Asia"],
["CARE full form?", "Cooperative for Assistance and Relief Everywhere"],
["CARE operates in how many countries?", "84 countries"],
["Rockefeller 3 major areas?", "RED β Restoration, Emergency Relief, Development plans"],
["Voluntary org definition keyword?", "Non-governmental, autonomous, non-profit, voluntary contributions"],
["4 functions of voluntary org?", "SEAG β Supplement, Educate, Advance legislation, Guard govt work"],
["Golden rule of CBR?", "No single organisation can deliver CBR alone β combined coordinated effort needed"],
["Who cannot work alone in CBR?", "DPOs β need government + NGO support"],
["Bilateral = ?", "Country-to-country direct aid (e.g., SwedenβIndia via SIDA)"],
["Clark (1991) voluntary sector role?", "Encourage govt adoption, educate public, articulate needs of vulnerable groups"],
],
[W*0.5, W*0.5],
hdr_bg=C_NAVY, alt_bg=C_LBLUE
))
story.append(sp(8))
# ββ GOLDEN RULE BOX ββ
story.append(highlight_box(
"β
GOLDEN RULE FOR EXAM β
\n"
"No single organisation can deliver CBR alone.\n"
"The COMBINED, COORDINATED effort of all voluntary organisations + government + UN agencies\n"
"is the foundation of successful CBR.\n\n"
"Bilateral: SIDA (SwedenβTB) | DANIDA (DenmarkβBlindness+TB+Leprosy)\n"
"Int. NGOs: Red Cross (Dunant 1864, Geneva) | CARE (84 countries) | Rockefeller (RED)\n"
"CBR Orgs: Local NGO (SCARED) | DPO (LAIM) | SHG (MFESO) | Volunteers (SAFE)",
bg=C_LRED, border=C_RED
))
story.append(sp(6))
story.append(Paragraph("Prepared for Exam Quick Revision | Community Medicine / Rehabilitation",
S("_foot", fontSize=8, textColor=HexColor("#90a4ae"),
alignment=TA_CENTER, fontName="Helvetica-Oblique", leading=10)))
# ββ Build ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
doc.build(story)
print(f"PDF created: {OUTPUT}")