- Restructure to KONEPS (조달청 협상계약 별지5호) standard TOC: I general / II strategy-methodology / III tech-function / IV performance-quality / V PM / VI support / VII misc - 9 new slides: staffing M/M, quantitative eval, standard framework, PM methodology, handover/training, SM/SLA, incident/BCP, managerial security, subcontracting - Scoring alignment updated to tech 90 (70 qual + 20 quant) / price 10 - Nanobanana win-theme dual placement (II applied-tech + III function) - Appendix D screen gallery (19 Stitch drafts) with AI-draft disclosure - QA PASS: RTM 142/142 (3 fixes: F-008/F-010/F-026), no secrets, honesty labels verified - Preserve rebuild toolchain + source docs in deliverables/제안서/_gen (16 files) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
24 lines
926 B
Python
24 lines
926 B
Python
# -*- coding: utf-8 -*-
|
|
"""PowerPoint COM 렌더링 검증 — 전 슬라이드 PNG export."""
|
|
import sys, os, glob
|
|
import win32com.client as win32
|
|
|
|
PPTX = sys.argv[1] if len(sys.argv) > 1 else r"C:\GUARDiA\workspace\kintex\docs\deliverables\제안서.pptx"
|
|
OUT = sys.argv[2] if len(sys.argv) > 2 else r"C:\Users\ython\AppData\Local\Temp\claude\C--GUARDiA-workspace-kintex\85f77606-5d61-424b-8a38-f8b61b56b54c\scratchpad\render"
|
|
os.makedirs(OUT, exist_ok=True)
|
|
for f in glob.glob(os.path.join(OUT, "*.png")):
|
|
try: os.remove(f)
|
|
except: pass
|
|
|
|
app = win32.Dispatch("PowerPoint.Application")
|
|
try:
|
|
app.Visible = True
|
|
except Exception:
|
|
pass
|
|
pres = app.Presentations.Open(PPTX, ReadOnly=True, Untitled=False, WithWindow=False)
|
|
n = pres.Slides.Count
|
|
for i in range(1, n+1):
|
|
pres.Slides(i).Export(os.path.join(OUT, f"s{i:03d}.png"), "PNG", 1280, 720)
|
|
pres.Close(); app.Quit()
|
|
print("RENDERED", n, "slides ->", OUT)
|