Skip to main content

render_page/
render_page.rs

1//! Render a PDF page to an image file.
2//!
3//! Usage: cargo run --example render_page -- <pdf-file> [page] [dpi] [output.png]
4
5use 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}