MisterAI commited on
Commit
d612297
·
verified ·
1 Parent(s): a733e17

Update python_pptx/python_pptx.py

Browse files
Files changed (1) hide show
  1. python_pptx/python_pptx.py +17 -15
python_pptx/python_pptx.py CHANGED
@@ -4,16 +4,17 @@
4
 
5
  from pptx import Presentation
6
  from pptx.util import Inches, Pt
 
7
  from pptx.enum.text import PP_ALIGN
8
 
9
  class PresentationGenerator:
10
  def __init__(self):
11
- self.theme_colors = {
12
- "title": "1F4E79", # Bleu foncé
13
- "subtitle": "277BC0", # Bleu clair
14
- "text": "2A2A2A", # Gris foncé
15
- "background": "FFFFFF", # Blanc
16
- "accent": "98C1D9" # Bleu pastel
17
  }
18
  self.default_font = "Calibri"
19
 
@@ -59,23 +60,29 @@ class PresentationGenerator:
59
  # Set font sizes based on the maximum content length
60
  base_font_size = 32
61
  title_font_size = 44
62
- if max_content_length > 300: # Example threshold
63
  base_font_size = 24
64
  title_font_size = 36
 
 
 
 
 
 
65
 
66
  # Title Slide
67
  title_slide = prs.slides.add_slide(prs.slide_layouts[0])
68
  title_slide.shapes.title.text = slides[0]['title']
69
  title_slide.shapes.title.text_frame.paragraphs[0].font.size = Pt(title_font_size)
70
  title_slide.shapes.title.text_frame.paragraphs[0].font.name = self.default_font
71
- title_slide.shapes.title.text_frame.paragraphs[0].font.color.rgb = self.rgb_to_tuple(self.theme_colors["title"])
72
 
73
  for slide in slides[1:]:
74
  content_slide = prs.slides.add_slide(prs.slide_layouts[1])
75
  content_slide.shapes.title.text = slide['title']
76
  content_slide.shapes.title.text_frame.paragraphs[0].font.size = Pt(title_font_size)
77
  content_slide.shapes.title.text_frame.paragraphs[0].font.name = self.default_font
78
- content_slide.shapes.title.text_frame.paragraphs[0].font.color.rgb = self.rgb_to_tuple(self.theme_colors["subtitle"])
79
 
80
  if slide['points']:
81
  body = content_slide.shapes.placeholders[1].text_frame
@@ -85,11 +92,6 @@ class PresentationGenerator:
85
  p.text = point
86
  p.font.size = Pt(base_font_size)
87
  p.font.name = self.default_font
88
- p.font.color.rgb = self.rgb_to_tuple(self.theme_colors["text"])
89
 
90
  return prs
91
-
92
- def rgb_to_tuple(self, hex_color):
93
- # Convert hex color to RGB tuple
94
- hex_color = hex_color.lstrip('#')
95
- return tuple(int(hex_color[i:i+2], 16) for i in (0, 2, 4))
 
4
 
5
  from pptx import Presentation
6
  from pptx.util import Inches, Pt
7
+ from pptx.dml.color import RGBColor
8
  from pptx.enum.text import PP_ALIGN
9
 
10
  class PresentationGenerator:
11
  def __init__(self):
12
+ self.default_theme_colors = {
13
+ "title": RGBColor(31, 78, 121), # Bleu foncé
14
+ "subtitle": RGBColor(39, 123, 192), # Bleu clair
15
+ "text": RGBColor(42, 42, 42), # Gris foncé
16
+ "background": RGBColor(255, 255, 255), # Blanc
17
+ "accent": RGBColor(152, 193, 217) # Bleu pastel
18
  }
19
  self.default_font = "Calibri"
20
 
 
60
  # Set font sizes based on the maximum content length
61
  base_font_size = 32
62
  title_font_size = 44
63
+ if max_content_length > 300:
64
  base_font_size = 24
65
  title_font_size = 36
66
+ if max_content_length > 400:
67
+ base_font_size = 20
68
+ title_font_size = 32
69
+ if max_content_length > 500:
70
+ base_font_size = 18
71
+ title_font_size = 28
72
 
73
  # Title Slide
74
  title_slide = prs.slides.add_slide(prs.slide_layouts[0])
75
  title_slide.shapes.title.text = slides[0]['title']
76
  title_slide.shapes.title.text_frame.paragraphs[0].font.size = Pt(title_font_size)
77
  title_slide.shapes.title.text_frame.paragraphs[0].font.name = self.default_font
78
+ title_slide.shapes.title.text_frame.paragraphs[0].font.color.rgb = self.default_theme_colors["title"]
79
 
80
  for slide in slides[1:]:
81
  content_slide = prs.slides.add_slide(prs.slide_layouts[1])
82
  content_slide.shapes.title.text = slide['title']
83
  content_slide.shapes.title.text_frame.paragraphs[0].font.size = Pt(title_font_size)
84
  content_slide.shapes.title.text_frame.paragraphs[0].font.name = self.default_font
85
+ content_slide.shapes.title.text_frame.paragraphs[0].font.color.rgb = self.default_theme_colors["subtitle"]
86
 
87
  if slide['points']:
88
  body = content_slide.shapes.placeholders[1].text_frame
 
92
  p.text = point
93
  p.font.size = Pt(base_font_size)
94
  p.font.name = self.default_font
95
+ p.font.color.rgb = self.default_theme_colors["text"]
96
 
97
  return prs