Skip to main content

basic_read/
basic_read.rs

1//! Basic PDF reading example.
2//!
3//! Usage: cargo run --example basic_read -- <pdf-file>
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: basic_read <pdf-file>");
11        std::process::exit(1);
12    }
13
14    let doc = Document::open(&args[1])?;
15
16    println!("Version: {}", doc.version_string());
17    println!("Pages: {}", doc.page_count());
18    println!("Encrypted: {}", doc.is_encrypted());
19
20    if let Some(title) = doc.title() {
21        println!("Title: {title}");
22    }
23    if let Some(author) = doc.author() {
24        println!("Author: {author}");
25    }
26
27    // Extract text from first page
28    if let Ok(page) = doc.page(0) {
29        println!("\n--- Page 1 text ---");
30        match page.text() {
31            Ok(text) => println!("{}", &text[..text.len().min(500)]),
32            Err(e) => println!("(text extraction failed: {e})"),
33        }
34    }
35
36    Ok(())
37}