Kilian Schuettler 30a0f1beb7 initial-commit
2025-01-31 01:44:54 +01:00

38 lines
979 B
Rust

use std::env::args;
use pdf::error::PdfError;
use pdf::file::{FileOptions};
use pdf::object::{FieldDictionary, FieldType, Resolve};
/// extract and print a PDF's metadata
#[cfg(feature="cache")]
fn main() -> Result<(), PdfError> {
let path = args()
.nth(1)
.expect("Please provide a file path to the PDF you want to explore.");
let file = FileOptions::cached().open(&path).unwrap();
let resolver = file.resolver();
if let Some(ref info) = file.trailer.info_dict {
dbg!(info);
}
if let Some(ref forms) = file.get_root().forms {
for field in forms.fields.iter() {
print_field(field, &resolver);
}
}
Ok(())
}
fn print_field(field: &FieldDictionary, resolve: &impl Resolve) {
if field.typ == Some(FieldType::Signature) {
println!("{:?}", field);
}
for &kid in field.kids.iter() {
let child = resolve.get(kid).unwrap();
print_field(&child, resolve);
}
}