basic_usage/
basic_usage.rs1use pptx_to_md::{PptxContainer, Result, ParserConfig, ImageHandlingMode};
8use std::env;
9use std::fs::File;
10use std::io::Write;
11use std::path::Path;
12
13fn main() -> Result<()> {
14 let args: Vec<String> = env::args().collect();
16 let pptx_path = if args.len() > 1 {
17 &args[1]
18 } else {
19 eprintln!("Usage: cargo run --example basic_usage <path/to/presentation.pptx> <extract_images>\ncargo run --example basic_usage sample.pptx true");
20 return Ok(());
21 };
22
23 let extract_images = if args.len() > 2 {
25 !(args[2] == "false" || args[2] == "False" || args[2] == "0")
26 } else {
27 true
28 };
29
30 println!("Processing PPTX file: {}", pptx_path);
31
32 let config = ParserConfig::builder()
34 .extract_images(extract_images)
35 .compress_images(true)
36 .quality(75)
37 .image_handling_mode(ImageHandlingMode::InMarkdown)
38 .include_slide_comment(true)
39 .build();
40
41 let mut container = PptxContainer::open(Path::new(pptx_path), config)?;
43
44 let slides = container.parse_all()?;
46
47 println!("Found {} slides", slides.len());
48
49 let mut md_file = File::create("output.md")?;
51
52 for slide in slides {
54 if let Some(md_content) = slide.convert_to_md() {
55 println!("{}", md_content);
56 writeln!(md_file, "{}", md_content).expect("Couldn't write to file");
57 }
58 }
59
60 println!("All slides converted successfully!");
61
62 Ok(())
63}