| |
| |
|
|
|
|
| from pptx import Presentation |
| from pptx.util import Inches, Pt |
|
|
| class PresentationGenerator: |
| def __init__(self): |
| pass |
|
|
| def parse_presentation_content(self, content): |
| slides = [] |
| current_slide = None |
|
|
| for line in content.split('\n'): |
| line = line.strip() |
| if line.startswith('TITRE:'): |
| slides.append({'type': 'title', 'title': line[6:].strip()}) |
| elif line.startswith('DIAPO'): |
| if current_slide: |
| slides.append(current_slide) |
| current_slide = {'type': 'content', 'title': '', 'points': []} |
| elif line.startswith('Titre:') and current_slide: |
| current_slide['title'] = line[6:].strip() |
| elif line.startswith('- ') and current_slide: |
| current_slide['points'].append(line[2:].strip()) |
|
|
| if current_slide: |
| slides.append(current_slide) |
|
|
| return slides |
|
|
| def create_presentation(self, slides): |
| prs = Presentation() |
|
|
| title_slide = prs.slides.add_slide(prs.slide_layouts[0]) |
| title_slide.shapes.title.text = slides[0]['title'] |
|
|
| for slide in slides[1:]: |
| content_slide = prs.slides.add_slide(prs.slide_layouts[1]) |
| content_slide.shapes.title.text = slide['title'] |
|
|
| if slide['points']: |
| body = content_slide.shapes.placeholders[1].text_frame |
| body.clear() |
| for point in slide['points']: |
| p = body.add_paragraph() |
| p.text = point |
| p.level = 0 |
|
|
| return prs |
|
|
|
|