Skip to main content

table_text_formatting/
table_text_formatting.rs

1use ppt_rs::generator::{SlideContent, Table, TableRow, TableCell, create_pptx_with_content};
2
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4    let slides = vec![
5        // Slide 1: Title
6        SlideContent::new("Table Text Formatting Examples")
7            .add_bullet("Demonstrating rich text content in table cells"),
8
9        // Slide 2: Text formatting examples
10        SlideContent::new("Text Formatting in Tables")
11            .table(create_text_formatting_table()),
12
13        // Slide 3: Color examples
14        SlideContent::new("Text and Background Colors")
15            .table(create_color_table()),
16
17        // Slide 4: Font examples
18        SlideContent::new("Font Size and Family")
19            .table(create_font_table()),
20
21        // Slide 5: Combined formatting
22        SlideContent::new("Combined Formatting")
23            .table(create_combined_table()),
24    ];
25
26    let pptx_data = create_pptx_with_content("Table Text Formatting", slides)?;
27    std::fs::write("examples/output/table_text_formatting.pptx", pptx_data)?;
28    println!("✓ Created table_text_formatting.pptx with rich text formatting examples");
29
30    Ok(())
31}
32
33fn create_text_formatting_table() -> Table {
34    let header_cells = vec![
35        TableCell::new("Style").bold().background_color("4F81BD"),
36        TableCell::new("Example").bold().background_color("4F81BD"),
37        TableCell::new("Description").bold().background_color("4F81BD"),
38    ];
39    let header_row = TableRow::new(header_cells);
40
41    let rows = vec![
42        TableRow::new(vec![
43            TableCell::new("Bold"),
44            TableCell::new("Bold Text").bold(),
45            TableCell::new("Text with bold formatting"),
46        ]),
47        TableRow::new(vec![
48            TableCell::new("Italic"),
49            TableCell::new("Italic Text").italic(),
50            TableCell::new("Text with italic formatting"),
51        ]),
52        TableRow::new(vec![
53            TableCell::new("Underline"),
54            TableCell::new("Underlined Text").underline(),
55            TableCell::new("Text with underline formatting"),
56        ]),
57        TableRow::new(vec![
58            TableCell::new("Bold + Italic"),
59            TableCell::new("Bold Italic Text").bold().italic(),
60            TableCell::new("Text with both bold and italic"),
61        ]),
62        TableRow::new(vec![
63            TableCell::new("All Three"),
64            TableCell::new("Bold Italic Underlined").bold().italic().underline(),
65            TableCell::new("Text with all formatting options"),
66        ]),
67    ];
68
69    Table::new(
70        vec![vec![header_row], rows].concat(),
71        vec![2000000, 3000000, 3000000],
72        500000,
73        1500000,
74    )
75}
76
77fn create_color_table() -> Table {
78    let header_cells = vec![
79        TableCell::new("Text Color").bold().background_color("1F497D"),
80        TableCell::new("Background").bold().background_color("1F497D"),
81        TableCell::new("Example").bold().background_color("1F497D"),
82    ];
83    let header_row = TableRow::new(header_cells);
84
85    let rows = vec![
86        TableRow::new(vec![
87            TableCell::new("Red"),
88            TableCell::new("White"),
89            TableCell::new("Red Text").text_color("FF0000").background_color("FFFFFF"),
90        ]),
91        TableRow::new(vec![
92            TableCell::new("Blue"),
93            TableCell::new("Yellow"),
94            TableCell::new("Blue Text").text_color("0000FF").background_color("FFFF00"),
95        ]),
96        TableRow::new(vec![
97            TableCell::new("Green"),
98            TableCell::new("Light Gray"),
99            TableCell::new("Green Text").text_color("00FF00").background_color("E0E0E0"),
100        ]),
101        TableRow::new(vec![
102            TableCell::new("Purple"),
103            TableCell::new("White"),
104            TableCell::new("Purple Text").text_color("800080").background_color("FFFFFF"),
105        ]),
106    ];
107
108    Table::new(
109        vec![vec![header_row], rows].concat(),
110        vec![2000000, 2000000, 4000000],
111        500000,
112        1500000,
113    )
114}
115
116fn create_font_table() -> Table {
117    let header_cells = vec![
118        TableCell::new("Font Size").bold().background_color("366092"),
119        TableCell::new("Font Family").bold().background_color("366092"),
120        TableCell::new("Example").bold().background_color("366092"),
121    ];
122    let header_row = TableRow::new(header_cells);
123
124    let rows = vec![
125        TableRow::new(vec![
126            TableCell::new("12pt"),
127            TableCell::new("Arial"),
128            TableCell::new("Small Arial Text").font_size(12).font_family("Arial"),
129        ]),
130        TableRow::new(vec![
131            TableCell::new("18pt"),
132            TableCell::new("Calibri"),
133            TableCell::new("Medium Calibri Text").font_size(18).font_family("Calibri"),
134        ]),
135        TableRow::new(vec![
136            TableCell::new("24pt"),
137            TableCell::new("Times New Roman"),
138            TableCell::new("Large Times Text").font_size(24).font_family("Times New Roman"),
139        ]),
140        TableRow::new(vec![
141            TableCell::new("32pt"),
142            TableCell::new("Arial"),
143            TableCell::new("Extra Large Arial").font_size(32).font_family("Arial"),
144        ]),
145    ];
146
147    Table::new(
148        vec![vec![header_row], rows].concat(),
149        vec![2000000, 2500000, 3500000],
150        500000,
151        1500000,
152    )
153}
154
155fn create_combined_table() -> Table {
156    let header_cells = vec![
157        TableCell::new("Feature").bold().background_color("C0504D"),
158        TableCell::new("Styled Example").bold().background_color("C0504D"),
159    ];
160    let header_row = TableRow::new(header_cells);
161
162    let rows = vec![
163        TableRow::new(vec![
164            TableCell::new("Important Header"),
165            TableCell::new("Critical Data")
166                .bold()
167                .text_color("FFFFFF")
168                .background_color("C0504D")
169                .font_size(20),
170        ]),
171        TableRow::new(vec![
172            TableCell::new("Emphasis"),
173            TableCell::new("Highlighted Text")
174                .bold()
175                .italic()
176                .text_color("0000FF")
177                .font_size(18)
178                .font_family("Calibri"),
179        ]),
180        TableRow::new(vec![
181            TableCell::new("Warning"),
182            TableCell::new("Warning Message")
183                .bold()
184                .underline()
185                .text_color("FF6600")
186                .background_color("FFF4E6")
187                .font_size(16),
188        ]),
189        TableRow::new(vec![
190            TableCell::new("Success"),
191            TableCell::new("Success Indicator")
192                .bold()
193                .text_color("00AA00")
194                .background_color("E6F7E6")
195                .font_size(18)
196                .font_family("Arial"),
197        ]),
198    ];
199
200    Table::new(
201        vec![vec![header_row], rows].concat(),
202        vec![3000000, 5000000],
203        500000,
204        1500000,
205    )
206}
207