Skip to main content

extract_text/
extract_text.rs

1//! Dump a page's extracted text layer, to sanity-check `extract_page_text`.
2//!
3//! `cargo run -p gpui-pdf --example extract_text --features markup -- <file.pdf> [page]`
4
5use std::sync::Arc;
6
7fn main() {
8    let mut args = std::env::args().skip(1);
9    let path = args.next().expect("usage: extract_text <file.pdf> [page]");
10    let page: usize = args.next().and_then(|s| s.parse().ok()).unwrap_or(0);
11
12    let bytes = Arc::new(std::fs::read(&path).expect("read pdf"));
13    let doc = gpui_pdf::parse(bytes).expect("parse pdf");
14
15    match gpui_pdf::extract_page_text(&doc, page) {
16        Some(pt) if !pt.is_empty() => {
17            println!("--- page {page} text ---");
18            println!("{}", pt.text());
19        }
20        Some(_) => eprintln!("page {page}: no extractable text (scanned image?)"),
21        None => eprintln!("no page {page}"),
22    }
23}