use std::env; use std::path::{Path, PathBuf}; use lopdf::Document; #[cfg(feature = "async")] use tokio::runtime::Builder; fn main() -> Result<(), Box> { let input = match env::args_os().nth(1) { Some(input) => PathBuf::from(input), None => panic!("Please provide a PDF file as first argument"), }; let output = output_path(&input); let mut doc = load_document(&input)?; doc.delete_outlines()?; doc.save(&output)?; println!("Saved {}", output.display()); Ok(()) } fn output_path(input: &Path) -> PathBuf { let stem = input .file_stem() .expect("input file has no file stem") .to_string_lossy(); input.with_file_name(format!("{stem}-NOTOC.pdf")) } #[cfg(not(feature = "async"))] fn load_document>(path: P) -> Result { Document::load(path) } #[cfg(feature = "async")] fn load_document>(path: P) -> Result { Builder::new_current_thread() .enable_all() .build() .unwrap() .block_on(async move { Document::load(path).await }) }