Untitled
unknown
python
a year ago
1.8 kB
9
Indexable
from pptx import Presentation
from pptx.util import Inches, Pt
import reveal_slides as rs
def create_pptx_from_reveal_config(content, reveal_config, output_file):
prs = Presentation()
# Map reveal.js theme to PowerPoint theme (simplified)
theme_mapping = {
'black': prs.slide_layouts[0],
'white': prs.slide_layouts[1],
# Add more mappings as needed
}
# Use reveal.js theme to select PowerPoint layout
slide_layout = theme_mapping.get(reveal_config.get('theme', 'black'), prs.slide_layouts[0])
# Split content into slides
slides = content.split('---')
for slide_content in slides:
slide = prs.slides.add_slide(slide_layout)
# Add text to slide
title_shape = slide.shapes.title
body_shape = slide.shapes.placeholders[1]
# Simple parsing of markdown (you might need a more robust parser)
lines = slide_content.strip().split('\n')
if lines:
title_shape.text = lines[0].lstrip('#').strip()
body_shape.text = '\n'.join(lines[1:])
# Apply font size from reveal.js config
font_size = reveal_config.get('fontSize', 24)
for paragraph in body_shape.text_frame.paragraphs:
paragraph.font.size = Pt(font_size)
# Save the presentation
prs.save(output_file)
# Example usage
content_markdown = """
# Slide 1
Content for slide 1
---
# Slide 2
Content for slide 2
"""
reveal_config = {
'theme': 'black',
'transition': 'slide',
'fontSize': 24,
# Other reveal.js config parameters
}
create_pptx_from_reveal_config(content_markdown, reveal_config, 'output.pptx')Editor is loading...
Leave a Comment