except 1st page make it innovative all pages theme is for ayurgrama 3.0 SOP for Indriya Aarogya and make it look like professional
cd /home/daytona/workspace && python3 -c " import pdfplumber with pdfplumber.open('/home/daytona/workspace/attachments/bb79a4d7-a18c-4b15-98b3-76c143fe9569/Professional_SOP_Campaign_Implementation_Presentation.pptx_20260713_230912_0000.pdf') as pdf: print(f'Total pages: {len(pdf.pages)}') for i, page in enumerate(pdf.pages): print(f'\n=== PAGE {i+1} ===') text = page.extract_text() if text: print(text[:3000]) "
cd /home/daytona/workspace && mkdir -p pdf_pages && python3 -c " import subprocess result = subprocess.run(['pdftoppm', '-r', '150', '-png', '/home/daytona/workspace/attachments/bb79a4d7-a18c-4b15-98b3-76c143fe9569/Professional_SOP_Campaign_Implementation_Presentation.pptx_20260713_230912_0000.pdf', '/home/daytona/workspace/pdf_pages/page'], capture_output=True, text=True) print(result.returncode, result.stdout, result.stderr) import os files = sorted(os.listdir('/home/daytona/workspace/pdf_pages/')) print('Files:', files) "
cd /home/daytona/workspace && python3 -c " import base64, os for i in range(1, 9): path = f'/home/daytona/workspace/pdf_pages/page-{i}.png' size = os.path.getsize(path) print(f'page-{i}.png: {size} bytes') "
python3 -c " import pytesseract from PIL import Image import os results = {} for i in range(1, 9): path = f'/home/daytona/workspace/pdf_pages/page-{i}.png' try: img = Image.open(path) # Resize if too large if img.size[0] > 2000: ratio = 2000/img.size[0] img = img.resize((int(img.size[0]*ratio), int(img.size[1]*ratio))) text = pytesseract.image_to_string(img) results[i] = text print(f'=== PAGE {i} ===') print(text[:2000]) print() except Exception as e: print(f'Page {i} error: {e}') "
mkdir -p /home/daytona/workspace/ayurgrama-sop && cat > /home/daytona/workspace/ayurgrama-sop/create_pptx.js << 'SCRIPT_EOF' const pptxgen = require("pptxgenjs"); let pres = new pptxgen(); pres.layout = 'LAYOUT_16x9'; pres.title = 'Ayurgrama 3.0 - SOP for Indriya Aarogya'; // ===== COLOR PALETTE ===== // Deep forest green (Ayurveda), saffron/gold accent, warm cream, deep teal const C = { deepGreen: "1B4332", // primary dark bg midGreen: "2D6A4F", // secondary green leafGreen: "40916C", // medium green mintGreen: "74C69D", // light green accent saffron: "E9850E", // gold/saffron accent gold: "F4A621", // bright gold cream: "F8F4E8", // warm cream text/bg white: "FFFFFF", darkText: "1A1A2E", teal: "0D7377", lightTeal: "14FFEC", warmBrown: "8B5E3C", paleGold: "FFF3CD", }; // ===== HELPER FUNCTIONS ===== function addDecorativeLeaf(slide, x, y, size, color, opacity) { // Simple diamond as leaf stand-in slide.addShape(pres.ShapeType.diamond, { x, y, w: size, h: size, fill: { color, transparency: opacity || 0 }, line: { color, width: 0 } }); } function addCornerMandala(slide, corner, color) { // Decorative corner circles const positions = { tl: { x: -0.15, y: -0.15 }, tr: { x: 9.65, y: -0.15 }, bl: { x: -0.15, y: 5.2 }, br: { x: 9.65, y: 5.2 }, }; const pos = positions[corner]; for (let i = 3; i >= 1; i--) { slide.addShape(pres.ShapeType.ellipse, { x: pos.x - i*0.12, y: pos.y - i*0.12, w: 0.5 + i*0.25, h: 0.5 + i*0.25, fill: { color, transparency: 70 + i*5 }, line: { color, width: 0 } }); } } // ============================ // SLIDE 1 โ COVER (Keep original style but enhanced) // ============================ { let s = pres.addSlide(); // Deep green gradient bg via layered rects s.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{color: C.deepGreen}, line:{color:C.deepGreen,width:0} }); s.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:2.8, fill:{color: C.midGreen, transparency:40}, line:{color:C.midGreen,width:0} }); // Diagonal accent band s.addShape(pres.ShapeType.rect, { x:-1, y:1.6, w:12, h:0.08, fill:{color:C.gold}, line:{color:C.gold,width:0}, rotate:165 }); // Top left logo area - circle s.addShape(pres.ShapeType.ellipse, { x:0.25, y:0.2, w:1.5, h:1.5, fill:{color:C.saffron,transparency:15}, line:{color:C.gold,width:2} }); s.addText("MPAM\nCollege", { x:0.25, y:0.35, w:1.5, h:1.2, fontSize:9, bold:true, color:C.white, align:'center', valign:'middle' }); // Ayurgrama 3.0 main title s.addText("AYURGRAMA 3.0", { x:0.5, y:0.3, w:9, h:0.8, fontSize:38, bold:true, color:C.gold, align:'center', charSpacing:6, fontFace:'Georgia' }); // Sanskrit tagline s.addText("เฅฅ เคธเฅเคตเคธเฅเคฅเคธเฅเคฏ เคธเฅเคตเคพเคธเฅเคฅเฅเคฏ เคฐเคเฅเคทเคฃเคฎเฅ เฅฅ", { x:0.5, y:1.05, w:9, h:0.45, fontSize:14, italic:true, color:C.mintGreen, align:'center' }); // Empowered villages line s.addText("Empowered Villages ยท Arogyam for All", { x:0.5, y:1.5, w:9, h:0.35, fontSize:13, color:C.cream, align:'center', charSpacing:2 }); // Main SOP box s.addShape(pres.ShapeType.rect, { x:1.2, y:2.05, w:7.6, h:0.08, fill:{color:C.gold}, line:{color:C.gold,width:0} }); s.addShape(pres.ShapeType.rect, { x:1.5, y:2.1, w:7, h:1.35, fill:{color:C.saffron,transparency:20}, line:{color:C.gold,width:1.5} }); s.addText("SOP FOR INDRIYA AAROGYA", { x:1.5, y:2.15, w:7, h:0.65, fontSize:26, bold:true, color:C.white, align:'center', charSpacing:4, fontFace:'Georgia' }); s.addText("Prevent ยท Protect ยท Preserve the Windows of Wellness", { x:1.5, y:2.8, w:7, h:0.4, fontSize:11, italic:true, color:C.gold, align:'center' }); // 5 Indriya icons row const indriyas = [ { name:'NETRA', sub:'(EYE)', emoji:'๐' }, { name:'SHROTRA', sub:'(EAR)', emoji:'๐' }, { name:'GHRANA', sub:'(NOSE)', emoji:'๐' }, { name:'RASANA', sub:'(TONGUE)', emoji:'๐ ' }, { name:'TVAK', sub:'(SKIN)', emoji:'๐ค' }, ]; const xStart = 0.5, spacing = 1.8; indriyas.forEach((ind, i) => { const cx = xStart + i*spacing; s.addShape(pres.ShapeType.ellipse, { x:cx, y:3.62, w:1.3, h:1.0, fill:{color:C.midGreen,transparency:20}, line:{color:C.mintGreen,width:1.5} }); s.addText(ind.emoji, { x:cx+0.25, y:3.67, w:0.8, h:0.45, fontSize:20, align:'center' }); s.addText(ind.name, { x:cx, y:4.1, w:1.3, h:0.28, fontSize:8.5, bold:true, color:C.gold, align:'center' }); s.addText(ind.sub, { x:cx, y:4.35, w:1.3, h:0.22, fontSize:7.5, color:C.cream, align:'center' }); }); // Bottom bar s.addShape(pres.ShapeType.rect, { x:0, y:5.25, w:10, h:0.375, fill:{color:C.saffron,transparency:10}, line:{color:C.saffron,width:0} }); s.addText("MAHARANA PRATAP AYURVEDIC MEDICAL COLLEGE ยท Estd. 2003 ยท Excellence in Ayurveda, Service to Society", { x:0.3, y:5.27, w:9.4, h:0.33, fontSize:9, color:C.cream, align:'center', valign:'middle' }); } // ============================ // HELPER: Build an inner-content slide with Ayurveda theme // ============================ function makeSectionSlide(slideNum, title, accentIcon, buildContent) { let s = pres.addSlide(); // Background s.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:5.625, fill:{color:C.cream}, line:{color:C.cream,width:0} }); // Left sidebar s.addShape(pres.ShapeType.rect, { x:0, y:0, w:0.08, h:5.625, fill:{color:C.saffron}, line:{color:C.saffron,width:0} }); s.addShape(pres.ShapeType.rect, { x:0.08, y:0, w:0.06, h:5.625, fill:{color:C.gold,transparency:50}, line:{color:C.gold,width:0} }); // Top header bar (dark green) s.addShape(pres.ShapeType.rect, { x:0, y:0, w:10, h:1.05, fill:{color:C.deepGreen}, line:{color:C.deepGreen,width:0} }); // Header accent line s.addShape(pres.ShapeType.rect, { x:0, y:1.05, w:10, h:0.07, fill:{color:C.saffron}, line:{color:C.saffron,width:0} }); // Slide number circle s.addShape(pres.ShapeType.ellipse, { x:0.25, y:0.22, w:0.6, h:0.6, fill:{color:C.saffron}, line:{color:C.gold,width:1} }); s.addText(`0${slideNum}`, { x:0.25, y:0.22, w:0.6, h:0.6, fontSize:13, bold:true, color:C.white, align:'center', valign:'middle' }); // Icon circle s.addShape(pres.ShapeType.ellipse, { x:9.0, y:0.12, w:0.8, h:0.8, fill:{color:C.midGreen,transparency:30}, line:{color:C.mintGreen,width:1.5} }); s.addText(accentIcon, { x:9.0, y:0.12, w:0.8, h:0.8, fontSize:22, align:'center', valign:'middle' }); // Title s.addText(title, { x:1.05, y:0.12, w:7.8, h:0.75, fontSize:26, bold:true, color:C.gold, align:'left', valign:'middle', fontFace:'Georgia', margin:0 }); // Decorative bottom band s.addShape(pres.ShapeType.rect, { x:0, y:5.3, w:10, h:0.325, fill:{color:C.deepGreen,transparency:10}, line:{color:C.deepGreen,width:0} }); s.addText("AYURGRAMA 3.0 ยท Indriya Aarogya SOP ยท Maharana Pratap Ayurvedic Medical College", { x:0.2, y:5.31, w:9.6, h:0.3, fontSize:7.5, color:C.white, align:'center', valign:'middle' }); // Bottom right green leaf circles s.addShape(pres.ShapeType.ellipse, { x:9.55, y:5.25, w:0.55, h:0.55, fill:{color:C.leafGreen,transparency:40}, line:{color:C.leafGreen,width:0} }); // Call content builder buildContent(s); return s; } // ============================ // SLIDE 2 โ Campaign Objectives // ============================ makeSectionSlide(2, "Campaign Objectives", "๐ฏ", (s) => { const objectives = [ { icon: "๐", text: "Ensure standardized implementation across all villages" }, { icon: "๐ฟ", text: "Create awareness among participants about Indriya health" }, { icon: "๐", text: "Educate participants about the Ayurgrama campaign" }, { icon: "๐ค", text: "Promote active participation from community members" }, { icon: "๐", text: "Collect accurate data & feedback for improvement" }, { icon: "โ ", text: "Maintain quality and uniformity throughout the campaign" }, ]; // Two columns layout objectives.forEach((obj, i) => { const col = i % 2; const row = Math.floor(i / 2); const x = col === 0 ? 0.35 : 5.2; const y = 1.3 + row * 1.2; // Card background s.addShape(pres.ShapeType.roundRect, { x, y, w: 4.55, h: 0.95, fill: { color: col === 0 ? C.midGreen : C.deepGreen, transparency: 88 }, line: { color: col === 0 ? C.leafGreen : C.mintGreen, width: 1.2 }, rectRadius: 0.12 }); // Left accent bar on card s.addShape(pres.ShapeType.rect, { x: x, y: y, w: 0.06, h: 0.95, fill: { color: C.saffron }, line: { color: C.saffron, width: 0 } }); // Icon s.addText(obj.icon, { x: x+0.1, y: y+0.05, w: 0.55, h: 0.85, fontSize: 20, align:'center', valign:'middle' }); // Text s.addText(obj.text, { x: x+0.7, y: y+0.08, w: 3.75, h: 0.8, fontSize: 12, color: C.darkText, valign:'middle', fontFace:'Calibri' }); }); }); // ============================ // SLIDE 3 โ Campaign Organization // ============================ makeSectionSlide(3, "Campaign Organization", "๐๏ธ", (s) => { // Central circle for AATPAS s.addShape(pres.ShapeType.ellipse, { x:3.85, y:1.5, w:2.3, h:1.8, fill:{color:C.deepGreen}, line:{color:C.gold,width:2.5} }); s.addText("AATPAS\nOrganizing\nCommittee", { x:3.85, y:1.5, w:2.3, h:1.8, fontSize:12, bold:true, color:C.gold, align:'center', valign:'middle' }); // Three satellite boxes const boxes = [ { x:0.3, y:1.85, icon:'๐', title:'Faculty\nCoordinator', desc:'Guidance &\noversight of all\ncampaign activities', color:C.midGreen }, { x:3.85, y:3.6, icon:'๐', title:'Documentation\nTeam', desc:'Records, reports\n& official campaign\ndocumentation', color:C.leafGreen }, { x:7.3, y:1.85, icon:'๐จโ๐', title:'Student\nVolunteers', desc:'Planning,\nexecution &\nreporting', color:C.midGreen }, ]; boxes.forEach((b) => { s.addShape(pres.ShapeType.roundRect, { x:b.x, y:b.y, w:2.2, h:1.5, fill:{color:b.color,transparency:82}, line:{color:b.color,width:1.5}, rectRadius:0.15 }); s.addText(b.icon, { x:b.x+0.75, y:b.y+0.05, w:0.7, h:0.5, fontSize:22, align:'center' }); s.addText(b.title, { x:b.x+0.05, y:b.y+0.5, w:2.1, h:0.45, fontSize:10.5, bold:true, color:C.deepGreen, align:'center' }); s.addText(b.desc, { x:b.x+0.05, y:b.y+0.9, w:2.1, h:0.55, fontSize:9, color:C.darkText, align:'center' }); }); // Connector lines s.addShape(pres.ShapeType.line, { x:2.5, y:2.6, w:1.35, h:0, line:{color:C.saffron,width:1.5} }); s.addShape(pres.ShapeType.line, { x:6.15,y:2.6, w:1.15, h:0, line:{color:C.saffron,width:1.5} }); s.addShape(pres.ShapeType.line, { x:5.0, y:3.3, w:0, h:0.3, line:{color:C.saffron,width:1.5} }); }); // ============================ // SLIDE 4 โ Campaign Schedule & Venue // ============================ makeSectionSlide(4, "Campaign Schedule & Venue", "๐ ", (s) => { const items = [ { icon:"๐๏ธ", head:"Approved Schedule", body:"Conducted strictly as per the pre-approved academic and outreach calendar" }, { icon:"๐", head:"Venue Finalization", body:"Venue identified, inspected & finalized well in advance of the campaign date" }, { icon:"๐ข", head:"Prior Communication", body:"Date, time & venue communicated to all stakeholders beforehand" }, { icon:"๐๏ธ", head:"Faculty Supervision", body:"All activities conducted under direct faculty supervision per institutional SOP" }, ]; items.forEach((item, i) => { const y = 1.25 + i * 0.98; // Timeline dot & line s.addShape(pres.ShapeType.ellipse, { x:0.55, y:y+0.3, w:0.28, h:0.28, fill:{color:C.saffron}, line:{color:C.gold,width:0} }); if (i < items.length-1) { s.addShape(pres.ShapeType.line, { x:0.69, y:y+0.58, w:0, h:0.7, line:{color:C.leafGreen,width:1.5, dashType:'dash'} }); } // Icon box s.addShape(pres.ShapeType.roundRect, { x:0.95, y:y+0.05, w:0.65, h:0.65, fill:{color:C.midGreen,transparency:75}, line:{color:C.leafGreen,width:1}, rectRadius:0.08 }); s.addText(item.icon, { x:0.95, y:y+0.05, w:0.65, h:0.65, fontSize:18, align:'center', valign:'middle' }); // Heading s.addText(item.head, { x:1.75, y:y+0.05, w:7.8, h:0.3, fontSize:13, bold:true, color:C.deepGreen, margin:0 }); // Body s.addText(item.body, { x:1.75, y:y+0.35, w:7.8, h:0.45, fontSize:10.5, color:"444444", margin:0 }); }); }); // ============================ // SLIDE 5 โ Student Guidelines // ============================ makeSectionSlide(5, "Student Guidelines", "๐", (s) => { const guidelines = [ { icon:"โฐ", text:"Report on time at the designated venue" }, { icon:"๐ชช", text:"Wear institutional ID card at all times" }, { icon:"๐คซ", text:"Maintain discipline throughout the campaign" }, { icon:"๐", text:"Perform assigned responsibilities sincerely" }, { icon:"๐", text:"Interact respectfully with participants & community" }, { icon:"โ๏ธ", text:"Record attendance accurately via designated method" }, { icon:"๐", text:"Follow SOP guidelines throughout the entire activity" }, ]; // Hexagonal-feel grid (2 cols except last) guidelines.forEach((g, i) => { const col = i % 2; const row = Math.floor(i / 2); let x, y; if (i === 6) { x = 2.6; y = 4.3; } // last centered else { x = col === 0 ? 0.3 : 5.15; y = 1.3 + row*0.95; } s.addShape(pres.ShapeType.roundRect, { x, y, w: 4.55, h: 0.78, fill: { color: i%3===0 ? C.deepGreen : i%3===1 ? C.midGreen : C.leafGreen, transparency: 85 }, line: { color: C.leafGreen, width: 1 }, rectRadius: 0.1 }); s.addShape(pres.ShapeType.ellipse, { x:x+0.05, y:y+0.09, w:0.6, h:0.6, fill:{color:C.saffron,transparency:20}, line:{color:C.gold,width:1} }); s.addText(g.icon, { x:x+0.05, y:y+0.09, w:0.6, h:0.6, fontSize:17, align:'center', valign:'middle' }); s.addText(g.text, { x:x+0.75, y:y+0.12, w:3.72, h:0.55, fontSize:11.5, color:C.darkText, valign:'middle' }); }); }); // ============================ // SLIDE 6 โ Campaign Activities // ============================ makeSectionSlide(6, "Campaign Activities", "๐ฟ", (s) => { const activities = [ { icon:"๐", name:"Registration", color:C.deepGreen }, { icon:"๐ฃ", name:"Awareness Sessions", color:C.midGreen }, { icon:"๐ฌ", name:"Demonstrations", color:C.leafGreen }, { icon:"๐ฌ", name:"Participant Interaction", color:C.teal }, { icon:"๐งฟ", name:"Indriya Assessment Survey",color:C.saffron }, { icon:"๐ฎ", name:"Educational Games", color:C.midGreen }, { icon:"๐ญ", name:"Skit / Role Play", color:C.deepGreen }, { icon:"๐ต", name:"Singing & Awareness", color:C.leafGreen }, ]; // 4x2 grid activities.forEach((act, i) => { const col = i % 4; const row = Math.floor(i / 4); const x = 0.25 + col*2.37; const y = 1.3 + row*1.7; s.addShape(pres.ShapeType.roundRect, { x, y, w:2.1, h:1.5, fill:{ color:act.color, transparency:80 }, line:{ color:act.color, width:1.8 }, rectRadius:0.18 }); // Top color band s.addShape(pres.ShapeType.roundRect, { x, y, w:2.1, h:0.5, fill:{ color:act.color, transparency:30 }, line:{ color:act.color, width:0 }, rectRadius:0.18 }); s.addText(act.icon, { x, y:y+0.02, w:2.1, h:0.46, fontSize:22, align:'center', valign:'middle' }); s.addText(act.name, { x:x+0.05, y:y+0.52, w:2.0, h:0.9, fontSize:10.5, bold:true, color:C.darkText, align:'center', valign:'middle', wrap:true }); }); }); // ============================ // SLIDE 7 โ Attendance & Documentation // ============================ makeSectionSlide(7, "Attendance & Documentation", "๐ธ", (s) => { // Three pillar design const pillars = [ { icon:"๐ฒ", head:"Digital Attendance", points:["Geo-tagged check-in", "Digital register entry", "Timestamp verification", "Real-time tracking"], color: C.deepGreen }, { icon:"๐ท", head:"Photography & Video", points:["Obtain prior consent", "Document all key activities", "Maintain image/video log", "Watermark with date & venue"], color: C.midGreen }, { icon:"๐", head:"Official Documentation", points:["Campaign dossier", "Signed faculty approval", "Student participation forms", "Institutional records"], color: C.leafGreen }, ]; pillars.forEach((p, i) => { const x = 0.3 + i*3.18; // Pillar box s.addShape(pres.ShapeType.roundRect, { x, y:1.25, w:2.9, h:3.75, fill:{color:p.color,transparency:85}, line:{color:p.color,width:1.8}, rectRadius:0.2 }); // Header s.addShape(pres.ShapeType.roundRect, { x, y:1.25, w:2.9, h:0.75, fill:{color:p.color,transparency:15}, line:{color:p.color,width:0}, rectRadius:0.2 }); s.addText(p.icon, { x:x+0.05, y:1.27, w:0.6, h:0.7, fontSize:24, align:'center', valign:'middle' }); s.addText(p.head, { x:x+0.65, y:1.3, w:2.2, h:0.65, fontSize:12, bold:true, color:C.white, valign:'middle' }); // Points p.points.forEach((pt, j) => { s.addShape(pres.ShapeType.ellipse, { x:x+0.2, y:2.18+j*0.7+0.1, w:0.18, h:0.18, fill:{color:C.saffron}, line:{color:C.saffron,width:0} }); s.addText(pt, { x:x+0.45, y:2.12+j*0.7, w:2.35, h:0.55, fontSize:10, color:C.darkText, valign:'middle' }); }); }); }); // ============================ // SLIDE 8 โ Feedback & Reporting // ============================ makeSectionSlide(8, "Feedback & Reporting", "๐", (s) => { // Process flow: 4 steps + final report panel const steps = [ { icon:"๐ฌ", head:"Collect", body:"Standardized feedback forms from all participants" }, { icon:"๐", head:"Analyze", body:"Responses analyzed for trends & quality improvement" }, { icon:"โป๏ธ", head:"Utilize", body:"Insights applied to enhance future campaign outcomes" }, { icon:"๐", head:"Report", body:"Compile comprehensive final report" }, ]; // Horizontal flow steps.forEach((st, i) => { const x = 0.3 + i*2.35; // Box s.addShape(pres.ShapeType.roundRect, { x, y:1.25, w:2.0, h:2.4, fill:{color:C.deepGreen,transparency:85}, line:{color:C.leafGreen,width:1.5}, rectRadius:0.18 }); // Top circle s.addShape(pres.ShapeType.ellipse, { x:x+0.6, y:1.2, w:0.8, h:0.8, fill:{color:C.saffron,transparency:15}, line:{color:C.gold,width:2} }); s.addText(st.icon, { x:x+0.6, y:1.2, w:0.8, h:0.8, fontSize:22, align:'center', valign:'middle' }); s.addText(st.head, { x:x+0.05, y:2.1, w:1.9, h:0.45, fontSize:14, bold:true, color:C.deepGreen, align:'center' }); s.addText(st.body, { x:x+0.1, y:2.55, w:1.8, h:0.9, fontSize:9.5, color:"444444", align:'center', valign:'middle', wrap:true }); // Arrow connector if (i < steps.length-1) { s.addShape(pres.ShapeType.line, { x:x+2.0, y:2.2, w:0.35, h:0, line:{color:C.saffron,width:2} }); // Arrowhead s.addText("โถ", { x:x+2.25, y:2.1, w:0.2, h:0.3, fontSize:10, color:C.saffron, align:'center', margin:0 }); } }); // Final report details box s.addShape(pres.ShapeType.roundRect, { x:0.3, y:3.8, w:9.4, h:1.2, fill:{color:C.midGreen,transparency:88}, line:{color:C.saffron,width:1.5}, rectRadius:0.12 }); s.addShape(pres.ShapeType.rect, { x:0.3, y:3.8, w:0.08, h:1.2, fill:{color:C.saffron}, line:{color:C.saffron,width:0} }); s.addText("๐ Final Report Includes:", { x:0.5, y:3.83, w:3.5, h:0.35, fontSize:11, bold:true, color:C.deepGreen }); const reportItems = ["Objectives & Methodology","Date, Venue & Attendance","Activities & Photographs","Feedback Analysis","Outcomes & Recommendations"]; reportItems.forEach((r, i) => { const col = i < 3 ? 0 : 1; const row = i < 3 ? i : i-3; s.addText("โข " + r, { x: col===0 ? 0.55 : 5.3, y: 4.18 + row*0.26, w: 4.4, h:0.28, fontSize:9.5, color:C.darkText }); }); }); // ============================ // WRITE FILE // ============================ pres.writeFile({ fileName: "/home/daytona/workspace/ayurgrama-sop/Ayurgrama3_SOP_Indriya_Aarogya.pptx" }) .then(() => console.log("SUCCESS: PPTX created!")) .catch(e => console.error("ERROR:", e)); SCRIPT_EOF echo "Script written"
cd /home/daytona/workspace/ayurgrama-sop && node create_pptx.js 2>&1
ls -lh /home/daytona/workspace/ayurgrama-sop/Ayurgrama3_SOP_Indriya_Aarogya.pptx
cd /home/daytona/workspace/ayurgrama-sop && python3 -m markitdown Ayurgrama3_SOP_Indriya_Aarogya.pptx 2>&1 | head -60
cd /home/daytona/workspace/ayurgrama-sop && python3 -c " from pptx import Presentation prs = Presentation('Ayurgrama3_SOP_Indriya_Aarogya.pptx') print(f'Slides: {len(prs.slides)}') for i, slide in enumerate(prs.slides): texts = [] for shape in slide.shapes: if shape.has_text_frame: for para in shape.text_frame.paragraphs: t = para.text.strip() if t: texts.append(t) print(f'Slide {i+1}: {texts[:4]}') "
Ayurgrama3 SOP Indriya Aarogya
Presentation ยท PPTX