Untitled
unknown
python
a year ago
4.9 kB
15
Indexable
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
import json
import textwrap
def create_smart_presentation_from_json(data, output_file):
prs = Presentation()
# Iterate through lessons
for lesson in data['lessons']:
# Add lesson title slide
add_title_slide(prs, lesson['title'])
# Iterate through pages in the lesson
for page in lesson['pages']:
add_title_slide(prs, page['title'], "\n".join(page['subtitles']))
# Check content length and split if necessary
content_chunks = split_content(page['content'])
for chunk in content_chunks:
add_text_slide(prs, chunk)
prs.save(output_file)
def split_content(content, max_chars=500):
# Split content into chunks that fit within the slide
return textwrap.wrap(content, max_chars)
def add_title_slide(prs, title, subtitle=""):
layout = prs.slide_layouts[0] # Title Slide layout
slide = prs.slides.add_slide(layout)
title_shape = slide.shapes.title
subtitle_shape = slide.placeholders[1]
title_shape.text = title
subtitle_shape.text = subtitle
def add_text_slide(prs, content):
layout = prs.slide_layouts[5] # Blank Slide layout
slide = prs.slides.add_slide(layout)
title_box = slide.shapes.add_textbox(Inches(0.5), Inches(0.5), Inches(9), Inches(1))
title_frame = title_box.text_frame
title_frame.text = "Content"
title_frame.paragraphs[0].font.size = Pt(24)
title_frame.paragraphs[0].font.bold = True
title_frame.paragraphs[0].font.color.rgb = RGBColor(0, 51, 102) # Dark blue color
left = Inches(0.5)
top = Inches(1.5)
width = Inches(9)
height = Inches(5)
textbox = slide.shapes.add_textbox(left, top, width, height)
tf = textbox.text_frame
# Adjust text size based on content length
font_size = calculate_font_size(content)
tf.text = content
for paragraph in tf.paragraphs:
paragraph.font.size = Pt(font_size)
paragraph.font.color.rgb = RGBColor(0, 0, 0) # Black color
def calculate_font_size(content, base_size=18, min_size=12, max_size=24):
length = len(content)
if length > 1000:
return min_size
elif length > 500:
return base_size
else:
return max_size
# JSON data
json_data = """
{
"subject": "python",
"lessons": [
{
"title": "Python Basics",
"pages": [
{
"title": "Introduction to Python",
"subtitles": [
"Why Learn Python?"
],
"content": "Python is a high-level, interpreted programming language known for its readability and simplicity. It is widely used for web development, data analysis, machine learning, and automation. Python's syntax is concise and easy to learn, making it an ideal language for beginners."
},
{
"title": "Setting Up Your Python Environment",
"subtitles": [
"Installing Python",
"Using an Integrated Development Environment (IDE)",
"Basic Python Commands"
],
"content": "To start coding in Python, you'll need to install the Python interpreter on your computer. Popular IDEs for Python include PyCharm, Jupyter Notebook, and Visual Studio Code. Once Python is installed, you can run basic commands such as print() and input() to display output and receive user input."
}
]
},
{
"title": "Python Data Types and Control Structures",
"pages": [
{
"title": "Python Data Types",
"subtitles": [
"Numbers",
"Strings",
"Lists"
],
"content": "Python supports various data types including numbers (integers, float, complex), strings, lists (ordered, mutable), tuples (ordered, immutable), and dictionaries (unordered, mutable). Understanding these data types is crucial for writing effective Python code."
},
{
"title": "Python Control Structures",
"subtitles": [
"Conditional Statements",
"Loops",
"Functions"
],
"content": "Python includes control structures such as if/else statements and while/for loops for conditional execution of code. Functions are reusable blocks of code that can accept arguments and return values, making them a powerful tool for organizing and simplifying Python programs."
}
]
}
]
}
"""
data = json.loads(json_data)
# Create the presentation
create_smart_presentation_from_json(data, 'smart_presentation.pptx')
# note - need -> pip install python-pptx
Editor is loading...
Leave a Comment