render_page/
render_page.rs1use justpdf::Document;
6
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let args: Vec<String> = std::env::args().collect();
9 if args.len() < 2 {
10 eprintln!("Usage: render_page <pdf-file> [page] [dpi] [output.png]");
11 std::process::exit(1);
12 }
13
14 let doc = Document::open(&args[1])?;
15 let page_idx: usize = args.get(2).and_then(|s| s.parse().ok()).unwrap_or(0);
16 let dpi: f64 = args.get(3).and_then(|s| s.parse().ok()).unwrap_or(150.0);
17 let output = args.get(4).map(|s| s.as_str()).unwrap_or("output.png");
18
19 let page = doc.page(page_idx)?;
20 println!("Page {}: {:.0}x{:.0} pt, rotation {}", page_idx + 1, page.width(), page.height(), page.rotation());
21
22 let png = page.render_png(dpi)?;
23 std::fs::write(output, &png)?;
24 println!("Rendered to {output} ({} bytes, {dpi} DPI)", png.len());
25
26 Ok(())
27}