Kilian Schuettler 7c2749aefa broken rendering
2025-02-15 17:31:11 +01:00

44 lines
1.3 KiB
Rust

use pdf::file::FileOptions;
use pdf_forge_render::render::Renderer;
use show_image::{create_window, event};
use std::thread::sleep;
use std::time::Duration;
macro_rules! timed {
($func_call:expr, $label:expr) => {{
let start = std::time::Instant::now();
let result = $func_call;
let duration = std::time::Instant::now().duration_since(start);
println!("{} took {:?}", $label, duration);
result
}};
}
#[show_image::main]
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("{:?}", std::env::args());
let pdf_path = std::env::args()
.nth(1)
.expect("Please provide a path to a PDF file as an argument");
let page_num = std::env::args()
.nth(2)
.map(|arg| {
arg.parse::<u32>()
.expect("provide a valid page number as an argument")
})
.expect("Please provide a ");
let file = FileOptions::cached().open(pdf_path.as_str())?;
let mut renderer = Renderer::new(&file, 75);
let window = create_window(format!("page-{}", page_num), Default::default())?;
let img = renderer.render(page_num)?;
let _ = window.set_image(format!("im-{}", page_num), img)?;
for event in window.event_channel()? {
if let event::WindowEvent::CloseRequested(event) = event {
break;
}
}
Ok(())
}