44 lines
1.3 KiB
Rust
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(())
|
|
}
|