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 SlideContent::new("Table Text Formatting Examples")
7 .add_bullet("Demonstrating rich text content in table cells"),
8
9 SlideContent::new("Text Formatting in Tables")
11 .table(create_text_formatting_table()),
12
13 SlideContent::new("Text and Background Colors")
15 .table(create_color_table()),
16
17 SlideContent::new("Font Size and Family")
19 .table(create_font_table()),
20
21 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