pdfer_forms 0.2.0

Fast pure-Rust PDF form filling, AcroForm inspection, and document operations (merge, split, rotate, encrypt) — a pypdf / PyPDF2 compatibility layer.
Documentation
use pdfer_forms::{FieldInput, PageSelection, PdfReaderCompat, PdfWriterCompat};
use std::collections::BTreeMap;

fn main() -> pdfer_forms::Result<()> {
    let reader = PdfReaderCompat::load("input.pdf")?;
    println!("text fields: {:#?}", reader.get_form_text_fields(false)?);

    let mut writer = PdfWriterCompat::from_reader(&reader);
    writer.set_need_appearances_writer(false)?;

    let mut updates = BTreeMap::new();
    updates.insert("name".to_owned(), FieldInput::from("Alice Example"));
    updates.insert("city".to_owned(), FieldInput::from(("Paris", "/Helv", 12.0)));
    updates.insert("checkbox_1".to_owned(), FieldInput::from("/Yes"));

    writer.update_page_form_field_values(PageSelection::All, &updates, 0, Some(false), true)?;
    writer.remove_annotations(Some(&["/Widget"]))?;
    writer.save("output.pdf")?;
    Ok(())
}