from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pptx.enum.shapes import MSO_SHAPE

# PPT 생성
prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
content_slide_layout = prs.slide_layouts[1]

# 이미지 경로 (업로드한 이미지로 변경)
images = [
    "스크린샷_2025-11-03_094904.png",  # 전통형
    "스크린샷_2025-11-03_094942.png",  # 현대형
    "스크린샷_2025-11-03_094828.png"   # 퓨전형
]

# 1. 표지
slide = prs.slides.add_slide(title_slide_layout)
slide.shapes.title.text = "공주시 WELCOME SITE 조성계획"
slide.placeholders[1].text = ("공공조형물 디자인 컨셉 제안서\n"
                              "작성일: 2025년 11월 4일\n"
                              "기관: 한국도로공사")
slide.shapes.title.text_frame.paragraphs[0].font.size = Pt(44)
slide.placeholders[1].text_frame.paragraphs[0].font.size = Pt(20)

# 2. 목차
slide = prs.slides.add_slide(content_slide_layout)
slide.shapes.title.text = "목차"
slide.placeholders[1].text = ("1. 제안 개요\n"
                              "2. 전통형 디자인\n"
                              "3. 현대형 디자인\n"
                              "4. 퓨전형 디자인\n"
                              "5. 비교 요약\n"
                              "6. 제안 방향 및 종합 메시지\n"
                              "7. 마무리")

# 제안 개요
slide = prs.slides.add_slide(content_slide_layout)
slide.shapes.title.text = "제안 개요"
slide.placeholders[1].text = ("- 목적: 공주시 방문객 맞이 공간 조성\n"
                              "- 기획 배경: 지역 정체성 강화 및 관광 활성화\n"
                              "- 디자인 방향: 전통, 현대, 융합형 3가지 콘셉트")

# 디자인 슬라이드 생성 함수
def add_design_slide(title, image_path, keywords, description, bg_color=None):
    slide = prs.slides.add_slide(content_slide_layout)
    slide.shapes.title.text = title
    # 배경색
    if bg_color:
        fill = slide.background.fill
        fill.solid()
        fill.fore_color.rgb = RGBColor(*bg_color)
    # 본문 내용
    tf = slide.placeholders[1].text_frame
    tf.clear()
    p1 = tf.add_paragraph()
    p1.text = keywords
    p1.font.bold = True
    p1.font.size = Pt(18)
    p2 = tf.add_paragraph()
    p2.text = description
    p2.font.size = Pt(16)
    # 이미지 삽입 (오른쪽)
    slide.shapes.add_picture(image_path, Inches(4), Inches(1.5), width=Inches(5), height=Inches(3))
    return slide

# 전통형 (청색 배경)
for i in range(4):
    add_design_slide(f"전통형 디자인 ({i+1})", images[0],
                     "- 키워드: 품격, 역사성, 한국적 정체성",
                     "- 전통적 상징성과 현대 조형미 조화",
                     bg_color=(0, 51, 102))

# 현대형 (연한 블루/회색 배경)
for i in range(4):
    add_design_slide(f"현대형 디자인 ({i+1})", images[1],
                     "- 키워드: 빛, 곡선, 역동성, 미래지향",
                     "- 도시 혁신과 개방성을 시각화",
                     bg_color=(230, 245, 255))

# 퓨전형 (네이비 배경)
for i in range(4):
    add_design_slide(f"퓨전형 디자인 ({i+1})", images[2],
                     "- 키워드: 조화, 융합, 시간의 연결",
                     "- 전통문양+현대적 감각 혼합",
                     bg_color=(25, 25, 112))

# 비교 요약
slide = prs.slides.add_slide(content_slide_layout)
slide.shapes.title.text = "3가지 콘셉트 비교 요약"
slide.placeholders[1].text = ("전통형: 역사성 강조\n"
                              "현대형: 미래지향, 역동적\n"
                              "퓨전형: 전통과 현대의 조화")

# 제안 방향
slide = prs.slides.add_slide(content_slide_layout)
slide.shapes.title.text = "제안 방향"
slide.placeholders[1].text = "전통을 담고, 미래를 잇다."

# 종합 메시지
slide = prs.slides.add_slide(content_slide_layout)
slide.shapes.title.text = "종합 메시지"
slide.placeholders[1].text = "도시의 기억과 미래를 연결하는 디자인 언어"

# 마무리
slide = prs.slides.add_slide(content_slide_layout)
slide.shapes.title.text = "마무리"
slide.placeholders[1].text = "감사합니다.\n한국도로공사 / 공주시 WELCOME SITE 조성계획"

# 저장
prs.save("공주시_WELCOME_SITE_보고용_최적화_2025.pptx")
print("공공기관 보고용 PPT 생성 완료!")

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: