Skip to main content

layout_demo/
layout_demo.rs

1use ppt_rs::generator::{create_pptx_with_content, SlideContent, SlideLayout};
2
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4    let slides = vec![
5        // Slide 1: Title Only
6        SlideContent::new("Welcome to Layout Demo")
7            .layout(SlideLayout::TitleOnly),
8
9        // Slide 2: Centered Title (good for cover slides)
10        SlideContent::new("Centered Title Slide")
11            .layout(SlideLayout::CenteredTitle)
12            .title_size(60)
13            .title_color("4F81BD"),
14
15        // Slide 3: Title and Content (standard layout)
16        SlideContent::new("Standard Layout")
17            .add_bullet("Point 1: Title at top")
18            .add_bullet("Point 2: Content below")
19            .add_bullet("Point 3: Most common layout")
20            .layout(SlideLayout::TitleAndContent),
21
22        // Slide 4: Title and Big Content
23        SlideContent::new("Big Content Area")
24            .add_bullet("More space for content")
25            .add_bullet("Smaller title area")
26            .add_bullet("Good for detailed slides")
27            .add_bullet("Maximizes content space")
28            .layout(SlideLayout::TitleAndBigContent),
29
30        // Slide 5: Two Column Layout
31        SlideContent::new("Two Column Layout")
32            .add_bullet("Left column content")
33            .add_bullet("Organized side by side")
34            .add_bullet("Great for comparisons")
35            .layout(SlideLayout::TwoColumn),
36
37        // Slide 6: Blank Slide
38        SlideContent::new("")
39            .layout(SlideLayout::Blank),
40
41        // Slide 7: Summary with different formatting
42        SlideContent::new("Summary")
43            .title_size(48)
44            .title_bold(true)
45            .title_color("C0504D")
46            .add_bullet("Layout types implemented:")
47            .add_bullet("• TitleOnly - Just title")
48            .add_bullet("• CenteredTitle - Title centered")
49            .add_bullet("• TitleAndContent - Standard")
50            .add_bullet("• TitleAndBigContent - Large content")
51            .add_bullet("• TwoColumn - Side by side")
52            .add_bullet("• Blank - Empty slide")
53            .content_size(20)
54            .layout(SlideLayout::TitleAndContent),
55    ];
56
57    let pptx_data = create_pptx_with_content("Layout Demo Presentation", slides)?;
58    std::fs::write("layout_demo.pptx", pptx_data)?;
59    println!("✓ Created layout_demo.pptx with 7 slides demonstrating different layouts");
60
61    Ok(())
62}