Types of stitch thread create image with label diagram add logo@ayurpedia.ravi
A detailed labeled diagram showing types of stitch threads used in sewing and embroidery. Include the following thread types with clear labels and visual examples of each thread's texture and appearance: 1) Cotton Thread - soft matte finish, 2) Polyester Thread - smooth shiny finish, 3) Silk Thread - lustrous fine thread, 4) Nylon Thread - strong transparent thread, 5) Embroidery Floss - multi-strand colorful thread, 6) Metallic Thread - shiny gold/silver thread, 7) Wool Thread - thick fuzzy thread, 8) Linen Thread - natural coarse thread. Each thread type should be shown as a spool or coil with its name labeled. Add a logo text "ayurpedia.ravi" at the bottom of the diagram. Clean educational diagram style with white background, colorful threads, professional layout with arrows pointing to each thread type.

| Thread Type | Key Feature |
|---|---|
| Cotton Thread | Soft, matte finish - most common for general sewing |
| Polyester Thread | Smooth, shiny, strong - ideal for machine sewing |
| Silk Thread | Fine, lustrous - used in high-end garments |
| Nylon Thread | Strong, transparent - used in upholstery & beading |
| Embroidery Floss | Multi-strand, colorful - used in hand embroidery |
| Metallic Thread | Gold/silver sheen - decorative embroidery |
| Wool Thread | Thick, fuzzy - used in tapestry & needlepoint |
| Linen Thread | Natural, coarse - used in bookbinding & leatherwork |
Types of suturing thread create image with label diagram 9:16 ratio add logo@ayurpedia.ravi
A professional medical educational poster in 9:16 portrait orientation showing "Types of Suturing Thread" with a clean white background and organized layout. Title at top: "TYPES OF SUTURING THREAD" in bold dark blue. Divide into two main categories side by side: LEFT COLUMN - ABSORBABLE SUTURES (green header): 1. Catgut (Plain) - natural twisted thread, light brown color - label: "Absorbed in 5-7 days, animal collagen" 2. Chromic Catgut - darker twisted thread - label: "Absorbed in 10-21 days, treated with chromium" 3. Vicryl (Polyglactin 910) - braided purple thread - label: "Absorbed in 60-90 days, braided" 4. PDS (Polydioxanone) - monofilament purple thread - label: "Absorbed in 180-210 days, monofilament" 5. Monocryl (Poliglecaprone) - clear monofilament - label: "Absorbed in 91-119 days, monofilament" RIGHT COLUMN - NON-ABSORBABLE SUTURES (red header): 1. Silk - braided black thread - label: "Braided, natural, knots well" 2. Nylon (Ethilon) - clear monofilament - label: "Monofilament, high tensile strength" 3. Prolene (Polypropylene) - blue monofilament - label: "Monofilament, vascular use" 4. Braided Nylon (Nurolon) - braided dark thread - label: "Braided, colonic anastomosis" 5. Steel Wire - silver metallic thread - label: "Sternal closure, orthopedics" Each thread shown as a realistic strand with a small spool icon next to its name. Use color coding: green for absorbable, red for non-absorbable. Add small icons of surgical applications next to each. At the bottom center, a small green leaf logo with text "@ayurpedia.ravi" in elegant font. Professional medical diagram style, clean, educational, suitable for medical students.

| Thread | Type | Absorption Time | Key Use |
|---|---|---|---|
| Plain Catgut | Natural, twisted | 5-7 days | Rapidly healing tissues |
| Chromic Catgut | Natural, chromium-treated | 10-21 days | Bile duct, urinary tract |
| Vicryl (Polyglactin) | Synthetic, braided | 60-90 days | GI anastomoses, ligatures |
| PDS (Polydioxanone) | Synthetic, monofilament | 180-210 days | Wound closure, slow-healing |
| Monocryl (Poliglecaprone) | Synthetic, monofilament | 91-119 days | Subcuticular skin closure |
| Thread | Type | Key Feature | Key Use |
|---|---|---|---|
| Silk | Natural, braided | Excellent knot security | Colonic, oesophageal anastomosis |
| Nylon (Ethilon) | Synthetic, monofilament | High tensile strength, memory | Wound closure, hernia repair |
| Prolene (Polypropylene) | Synthetic, monofilament | Retains strength indefinitely | Vascular anastomoses |
| Braided Nylon (Nurolon) | Synthetic, braided | Non-absorbable | Colonic anastomosis |
| Steel Wire | Metallic monofilament | Strongest available | Sternal closure, orthopaedics |
Sources: Bailey and Love's Short Practice of Surgery 28th Ed, p. 125-126; Pye's Surgical Handicraft 22nd Ed, Table 18.1
Created image of it in 9:16 ratio..add logo@ayurpedia.ravi above
A professional medical educational poster in 9:16 portrait orientation (like a phone wallpaper, tall and narrow). At the very TOP of the poster, prominently display the logo: a green leaf/herb icon followed by "@ayurpedia.ravi" in bold green stylish font on a white or light background banner. Below that, title: "TYPES OF SUTURING THREAD" in bold dark navy blue, large font. Then a clean two-column organized layout: LEFT COLUMN with GREEN header bar "ABSORBABLE SUTURES": Each entry has a small realistic thread illustration + name + key info: 1. Plain Catgut - twisted light brown thread - "Absorbed: 5-7 days | Natural collagen" 2. Chromic Catgut - darker twisted brown thread - "Absorbed: 10-21 days | Chromium treated" 3. Vicryl (Polyglactin 910) - braided violet/purple thread - "Absorbed: 60-90 days | Braided synthetic" 4. PDS II (Polydioxanone) - violet monofilament thread - "Absorbed: 180-210 days | Monofilament" 5. Monocryl (Poliglecaprone) - clear/gold monofilament - "Absorbed: 91-119 days | Monofilament" 6. Vicryl Rapide - purple braided - "Absorbed: 10-14 days | Fast absorbing" RIGHT COLUMN with RED header bar "NON-ABSORBABLE SUTURES": 1. Silk - black braided thread - "Braided | Excellent knot security" 2. Nylon/Ethilon - clear blue monofilament - "Monofilament | High tensile strength" 3. Prolene (Polypropylene) - blue monofilament - "Monofilament | Vascular use, lasts forever" 4. Braided Nylon (Nurolon) - dark braided - "Braided | Colonic anastomosis" 5. Ethibond (Polyester) - green braided - "Braided polyester | Cardiac, orthopedic" 6. Steel Wire - silver metallic - "Monofilament metal | Sternal closure" At bottom: a summary legend showing thread structure icons: monofilament (single line) vs multifilament/braided (twisted lines) with labels. Clean white background, color coded green for absorbable, red for non-absorbable. Modern medical infographic style. Professional and clear for medical students.

Generate a PDF reference card for suturing thread selection
mkdir -p /home/daytona/workspace/suture-ref-card && ls /home/daytona/workspace/s…
~/suture-ref-card/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer,
HRFlowable, KeepTogether
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from reportlab.platypus import Flowable
from reportlab.lib.colors import HexColor
OUTPUT = "/home/daytona/workspace/suture-ref-card/Suturing_Thread_Reference_Card.pdf"
# ── Colours ──────────────────────────────────────────────────────────────────
DARK_NAVY = HexColor("#1a2744")
GREEN_HEAD = HexColor("#1e7e34")
GREEN_LIGHT = HexColor("#d4edda")
GREEN_ROW = HexColor("#eaf7ec")
RED_HEAD = HexColor("#c0392b")
RED_LIGHT = HexColor("#fdecea")
RED_ROW = HexColor("#fff5f5")
YELLOW_WARN = HexColor("#fff3cd")
GREY_LINE = HexColor("#cccccc")
WHITE = colors.white
LOGO_GREEN = HexColor("#28a745")
# ── Styles ────────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def style(name, **kw):
s = ParagraphStyle(name, **kw)
return s
LOGO_STYLE = style("Logo",
fontName="Helvetica-Bold", fontSize=11, textColor=LOGO_GREEN,
alignment=TA_LEFT, leading=14)
TITLE_STYLE = style("Title",
fontName="Helvetica-Bold", fontSize=20, textColor=DARK_NAVY,
alignment=TA_CENTER, leading=26, spaceAfter=2)
SUB_STYLE = style("Sub",
fontName="Helvetica", fontSize=9, textColor=colors.grey,
alignment=TA_CENTER, leading=12)
SEC_STYLE = style("Sec",
fontName="Helvetica-Bold", fontSize=11, textColor=WHITE,
alignment=TA_CENTER, leading=14)
CELL_BOLD = style("CellBold",
fontName="Helvetica-Bold", fontSize=8, textColor=DARK_NAVY, leading=11)
CELL_NORM = style("CellNorm",
fontName="Helvetica", fontSize=8, textColor=DARK_NAVY, leading=11)
CELL_SMALL = style("CellSmall",
fontName="Helvetica", fontSize=7.5, textColor=colors.HexColor("#555555"), leading=10)
NOTE_STYLE = style("Note",
fontName="Helvetica-Oblique", fontSize=7.5, textColor=colors.HexColor("#555555"),
leading=11)
FOOTER_STYLE = style("Footer",
fontName="Helvetica", fontSize=7, textColor=colors.grey,
alignment=TA_CENTER, leading=10)
def P(text, s=CELL_NORM): return Paragraph(text, s)
def B(text): return Paragraph(text, CELL_BOLD)
# ── Data ──────────────────────────────────────────────────────────────────────
absorbable_headers = ["Thread", "Trade Name", "Structure", "Tensile\nStrength", "Absorption", "Common Use"]
absorbable_data = [
["Plain Catgut", "–", "Twisted\nMultifilament", "Low\n~1 week", "5–7 days\n(plain)", "Rapidly healing mucosa\ne.g. peritoneum"],
["Chromic Catgut", "–", "Twisted\nMultifilament", "Moderate\n~2 weeks", "10–21 days", "Bile duct, urinary\ntract, urothelium"],
["Polyglactin 910", "Vicryl", "Braided", "High\n~3 weeks", "60–90 days", "GI anastomoses,\nligatures, fascia"],
["Polyglactin\n(fast absorb)", "Vicryl Rapide", "Braided", "Moderate\n~7 days", "10–14 days", "Superficial skin,\nmucosal closures"],
["Polyglycolic acid", "Dexon", "Braided", "High\n~3 weeks", "60–90 days", "GI anastomoses,\nligatures"],
["Polydioxanone", "PDS II", "Monofilament", "Very High\n~6 weeks", "180–210 days", "Fascia, wound closure,\nslow-healing tissues"],
["Poliglecaprone 25", "Monocryl", "Monofilament", "High\n~3 weeks", "91–119 days", "Subcuticular skin,\nsoft tissue"],
["Polyglytone 6211", "Caprosyn", "Monofilament", "Moderate\n~1 week", "56–70 days", "Superficial closure,\nskin"],
]
non_absorbable_headers = ["Thread", "Trade Name", "Structure", "Tensile\nStrength", "Key Property", "Common Use"]
non_absorbable_data = [
["Silk", "Perma-Hand", "Braided\nNatural", "Moderate\n(degrades)", "Excellent knot\nsecurity", "Colonic, oesophageal\nanastomoses"],
["Nylon", "Ethilon,\nMonosof", "Monofilament", "High\n(stable)", "Memory/recoil,\nsmooth passage", "Skin closure, hernia\nrepair, vessels"],
["Braided Nylon", "Nurolon,\nSurgilon", "Braided", "High", "Non-absorbable,\ngood knot hold", "Colonic/oesophageal\nanastomoses"],
["Polypropylene", "Prolene,\nSurgilene", "Monofilament", "Very High\n(indefinite)", "Inert, retains\nstrength forever", "Vascular anastomoses,\nhernia mesh fixation"],
["Polyester", "Ethibond,\nMersilene", "Braided\n(coated)", "Very High", "Minimal tissue\nreaction", "Cardiac surgery,\northopaedic"],
["PTFE", "Gore-Tex\nCV Suture", "Monofilament", "High", "Extremely inert,\nnon-porous", "Vascular, cardiac\nvalve repair"],
["Stainless Steel", "Flexon", "Monofilament\nor Twisted", "Highest", "Permanent, no\nbacterial wicking", "Sternal closure,\northopaedic wires"],
]
# Selection guide data
selection_data = [
["Tissue / Situation", "Recommended Thread", "Rationale"],
["Skin (interrupted)", "Nylon (Ethilon) 3/0–4/0\nor Prolene 3/0", "Strong, smooth, easily removed"],
["Skin (subcuticular)", "Monocryl 3/0–4/0\nor PDS 3/0", "Absorbed → no removal needed"],
["Fascia / Linea alba", "PDS 1/0 or loop PDS", "Sustained strength during slow healing"],
["Bowel / GI anastomosis", "Vicryl 2/0–3/0\nor Braided silk 2/0", "Absorbed before stone nidus forms"],
["Bile duct / Urinary tract", "Chromic catgut 3/0\nor Vicryl 3/0", "Absorbed → prevents stone formation"],
["Vascular anastomosis", "Prolene 4/0–7/0", "Inert, retains strength indefinitely"],
["Cardiac / Heart valves", "Ethibond or Gore-Tex\n2/0–4/0", "Minimal reaction, permanent hold"],
["Sternal closure", "Stainless steel wire\n#5 or #6", "Rigid hold on sternum"],
["Hernia repair", "Prolene 0 or Nylon 0", "Permanent inert mesh/tissue fixation"],
["Scalp (children)", "Vicryl Rapide 3/0", "Fast absorb → avoids removal visit"],
["Mucosa (oral/vaginal)", "Plain catgut 2/0\nor Vicryl Rapide 2/0", "Rapid absorption, well tolerated"],
]
# Size guide
size_data = [
["USP Size", "Diameter (mm)", "Typical Use"],
["5–6", "0.70–0.90 mm", "Heavy orthopedic, sternal wire"],
["2–4", "0.40–0.60 mm", "Abdominal wall, fascia"],
["1–0 (0)", "0.35 mm", "GI anastomosis, hernia"],
["2/0", "0.30 mm", "Deep tissue, bowel, vessels"],
["3/0", "0.20 mm", "Skin, subcutaneous"],
["4/0", "0.15 mm", "Face, fine skin closure"],
["5/0–6/0", "0.10–0.07 mm", "Vascular, microsurgery"],
["7/0–10/0", "<0.07 mm", "Ophthalmic, microvascular"],
]
def build_table(headers, rows, header_bg, row_bg_alt, row_bg_even):
col_widths = None
if len(headers) == 6:
col_widths = [3.2*cm, 2.4*cm, 2.4*cm, 2.4*cm, 2.6*cm, 3.8*cm]
elif len(headers) == 3:
col_widths = [4.5*cm, 5*cm, 7.3*cm]
table_data = [[B(h) if i==0 else P(h, SEC_STYLE) for i, h in enumerate(headers)]]
# actually make all header cells use SEC_STYLE look via table bg
table_data = [[P(h, style(f"H{i}", fontName="Helvetica-Bold", fontSize=8,
textColor=WHITE, leading=11, alignment=TA_CENTER))
for i, h in enumerate(headers)]]
for ri, row in enumerate(rows):
table_data.append([P(row[ci], CELL_BOLD if ci == 0 else CELL_SMALL)
for ci in range(len(row))])
ts = TableStyle([
("BACKGROUND", (0, 0), (-1, 0), header_bg),
("TEXTCOLOR", (0, 0), (-1, 0), WHITE),
("ALIGN", (0, 0), (-1, -1), "CENTER"),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),
("FONTSIZE", (0, 0), (-1, 0), 8),
("ROWBACKGROUNDS", (0, 1), (-1, -1), [row_bg_alt, row_bg_even]),
("GRID", (0, 0), (-1, -1), 0.4, GREY_LINE),
("TOPPADDING", (0, 0), (-1, -1), 4),
("BOTTOMPADDING", (0, 0), (-1, -1), 4),
("LEFTPADDING", (0, 0), (-1, -1), 5),
("RIGHTPADDING", (0, 0), (-1, -1), 5),
("ROWBACKGROUNDS", (0, 0), (-1, 0), [header_bg]),
])
tbl = Table(table_data, colWidths=col_widths, repeatRows=1)
tbl.setStyle(ts)
return tbl
# ── Build document ─────────────────────────────────────────────────────────────
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
leftMargin=1.5*cm,
rightMargin=1.5*cm,
topMargin=1.5*cm,
bottomMargin=1.5*cm,
title="Suturing Thread Selection Reference Card",
author="@ayurpedia.ravi",
)
story = []
# Header banner row: logo left, title center
header_table = Table(
[[P("🌿 @ayurpedia.ravi", LOGO_STYLE),
P("SUTURING THREAD SELECTION<br/>REFERENCE CARD", TITLE_STYLE),
P("", LOGO_STYLE)]],
colWidths=[4*cm, 10.2*cm, 4*cm]
)
header_table.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, -1), DARK_NAVY),
("ALIGN", (0, 0), (0, 0), "LEFT"),
("ALIGN", (1, 0), (1, 0), "CENTER"),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
("TOPPADDING", (0, 0), (-1, -1), 10),
("BOTTOMPADDING", (0, 0), (-1, -1), 10),
("LEFTPADDING", (0, 0), (-1, -1), 10),
("TEXTCOLOR", (0, 0), (0, 0), LOGO_GREEN),
]))
story.append(header_table)
story.append(Spacer(1, 6*mm))
# ── Source note ───────────────────────────────────────────────────────────────
story.append(P("Based on: Bailey & Love's Short Practice of Surgery (28th Ed.) · Pye's Surgical Handicraft (22nd Ed.) · Clinical practice standards",
NOTE_STYLE))
story.append(Spacer(1, 5*mm))
# ── Section: Absorbable ───────────────────────────────────────────────────────
sec1_banner = Table([[P("✦ ABSORBABLE SUTURES ✦ (body enzymes/hydrolysis break them down)", SEC_STYLE)]],
colWidths=[18.2*cm])
sec1_banner.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), GREEN_HEAD),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
story.append(sec1_banner)
story.append(Spacer(1, 2*mm))
story.append(build_table(absorbable_headers, absorbable_data, GREEN_HEAD, GREEN_LIGHT, GREEN_ROW))
story.append(Spacer(1, 5*mm))
# ── Section: Non-Absorbable ───────────────────────────────────────────────────
sec2_banner = Table([[P("✦ NON-ABSORBABLE SUTURES ✦ (remain permanently or require removal)", SEC_STYLE)]],
colWidths=[18.2*cm])
sec2_banner.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), RED_HEAD),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
story.append(sec2_banner)
story.append(Spacer(1, 2*mm))
story.append(build_table(non_absorbable_headers, non_absorbable_data, RED_HEAD, RED_LIGHT, RED_ROW))
story.append(Spacer(1, 5*mm))
# ── Section: Selection Guide ──────────────────────────────────────────────────
sec3_banner = Table([[P("✦ CLINICAL SELECTION GUIDE — Which thread for which tissue?", SEC_STYLE)]],
colWidths=[18.2*cm])
sec3_banner.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), DARK_NAVY),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
story.append(sec3_banner)
story.append(Spacer(1, 2*mm))
sel_headers = selection_data[0]
sel_rows = selection_data[1:]
col_widths_sel = [4.5*cm, 6*cm, 7.7*cm]
sel_table_data = [[P(h, style(f"SH{i}", fontName="Helvetica-Bold", fontSize=8,
textColor=WHITE, leading=11, alignment=TA_CENTER))
for i, h in enumerate(sel_headers)]]
for ri, row in enumerate(sel_rows):
sel_table_data.append([
P(row[0], CELL_BOLD),
P(row[1], style(f"sv{ri}", fontName="Helvetica-Bold", fontSize=8,
textColor=HexColor("#155724"), leading=11)),
P(row[2], CELL_SMALL)
])
sel_tbl = Table(sel_table_data, colWidths=col_widths_sel, repeatRows=1)
sel_tbl.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, 0), DARK_NAVY),
("ROWBACKGROUNDS", (0, 1), (-1, -1), [WHITE, HexColor("#f0f4ff")]),
("GRID", (0, 0), (-1, -1), 0.4, GREY_LINE),
("ALIGN", (0, 0), (-1, -1), "LEFT"),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
("TOPPADDING", (0, 0), (-1, -1), 4),
("BOTTOMPADDING", (0, 0), (-1, -1), 4),
("LEFTPADDING", (0, 0), (-1, -1), 6),
("RIGHTPADDING", (0, 0), (-1, -1), 6),
]))
story.append(sel_tbl)
story.append(Spacer(1, 5*mm))
# ── Section: Suture Size Guide ─────────────────────────────────────────────────
sec4_banner = Table([[P("✦ SUTURE SIZE GUIDE (USP Classification)", SEC_STYLE)]],
colWidths=[18.2*cm])
sec4_banner.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), HexColor("#5a2d82")),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
story.append(sec4_banner)
story.append(Spacer(1, 2*mm))
sz_headers = size_data[0]
sz_rows = size_data[1:]
sz_col_w = [3*cm, 4*cm, 11.2*cm]
sz_tbl_data = [[P(h, style(f"SZ{i}", fontName="Helvetica-Bold", fontSize=8,
textColor=WHITE, leading=11, alignment=TA_CENTER))
for i, h in enumerate(sz_headers)]]
for row in sz_rows:
sz_tbl_data.append([P(c, CELL_SMALL) for c in row])
sz_tbl = Table(sz_tbl_data, colWidths=sz_col_w, repeatRows=1)
sz_tbl.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, 0), HexColor("#5a2d82")),
("ROWBACKGROUNDS", (0, 1), (-1, -1), [WHITE, HexColor("#f5f0ff")]),
("GRID", (0, 0), (-1, -1), 0.4, GREY_LINE),
("ALIGN", (0, 0), (-1, -1), "CENTER"),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
("TOPPADDING", (0, 0), (-1, -1), 4),
("BOTTOMPADDING", (0, 0), (-1, -1), 4),
("LEFTPADDING", (0, 0), (-1, -1), 6),
("RIGHTPADDING", (0, 0), (-1, -1), 6),
]))
story.append(sz_tbl)
story.append(Spacer(1, 5*mm))
# ── Key properties reminder ────────────────────────────────────────────────────
notes_data = [
["PROPERTY", "MONOFILAMENT", "BRAIDED / MULTIFILAMENT"],
["Knot security", "Lower (needs extra throws)", "Higher (knots well)"],
["Infection risk", "Lower (no interstices)", "Higher (bacteria can lodge)"],
["Tissue drag", "Smooth passage", "More drag, may need coating"],
["Handling", "Memory, springy", "Pliable, easy to handle"],
["Example", "Prolene, PDS, Monocryl", "Vicryl, Silk, Ethibond"],
]
notes_col_w = [4.5*cm, 6*cm, 7.7*cm]
notes_banner = Table([[P("✦ MONOFILAMENT vs BRAIDED — KEY PROPERTIES", SEC_STYLE)]],
colWidths=[18.2*cm])
notes_banner.setStyle(TableStyle([
("BACKGROUND", (0,0), (-1,-1), HexColor("#e67e22")),
("TOPPADDING", (0,0), (-1,-1), 6),
("BOTTOMPADDING", (0,0), (-1,-1), 6),
("LEFTPADDING", (0,0), (-1,-1), 8),
]))
story.append(notes_banner)
story.append(Spacer(1, 2*mm))
notes_tbl_data = [[P(h, style(f"NH{i}", fontName="Helvetica-Bold", fontSize=8,
textColor=WHITE, leading=11, alignment=TA_CENTER))
for i, h in enumerate(notes_data[0])]]
for row in notes_data[1:]:
notes_tbl_data.append([P(c, CELL_SMALL) for c in row])
notes_tbl = Table(notes_tbl_data, colWidths=notes_col_w, repeatRows=1)
notes_tbl.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, 0), HexColor("#e67e22")),
("ROWBACKGROUNDS", (0, 1), (-1, -1), [WHITE, HexColor("#fef9f0")]),
("GRID", (0, 0), (-1, -1), 0.4, GREY_LINE),
("ALIGN", (0, 0), (-1, -1), "CENTER"),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
("TOPPADDING", (0, 0), (-1, -1), 4),
("BOTTOMPADDING", (0, 0), (-1, -1), 4),
("LEFTPADDING", (0, 0), (-1, -1), 6),
("RIGHTPADDING", (0, 0), (-1, -1), 6),
]))
story.append(notes_tbl)
story.append(Spacer(1, 6*mm))
# ── Footer ────────────────────────────────────────────────────────────────────
story.append(HRFlowable(width="100%", thickness=0.5, color=GREY_LINE))
story.append(Spacer(1, 3*mm))
story.append(P(
"© @ayurpedia.ravi | For educational purposes only — always follow institutional and consultant guidelines | "
"Sources: Bailey & Love's Surgery 28e · Pye's Surgical Handicraft 22e",
FOOTER_STYLE
))
doc.build(story)
print(f"PDF saved to: {OUTPUT}")
cd /home/daytona/workspace/suture-ref-card && python generate_pdf.py 2>&1
ls -lh /home/daytona/workspace/suture-ref-card/Suturing_Thread_Reference_Card.pd…
Suturing Thread Reference Card
PDF Document · PDF
| Section | Color | Content |
|---|---|---|
| Absorbable Sutures | Green | 8 threads - trade names, structure, absorption time, uses |
| Non-Absorbable Sutures | Red | 7 threads - trade names, key properties, uses |
| Clinical Selection Guide | Navy | 12 tissue-specific thread recommendations |
| USP Size Guide | Purple | Sizes 5 through 10/0 with diameters and indications |
| Monofilament vs Braided | Orange | Head-to-head property comparison |