use pdfluent::prelude::*;
use std::path::PathBuf;
fn out_path() -> PathBuf {
std::env::temp_dir().join("pdfluent-bootstrap-form_filled.pdf")
}
pub fn run_to(out: &std::path::Path) -> Result<()> {
let mut doc = PdfDocument::open_with(
"tests/fixtures/form.pdf",
OpenOptions::new().with_license_key("tier:developer"),
)?;
{
let mut form = doc.form_mut();
form.set_text("first_name", "Jane")?
.set_text("last_name", "Smith")?
.set_checkbox("agree_terms", true)?;
}
doc.save(out)?;
Ok(())
}
pub fn run() -> Result<()> {
run_to(&out_path())
}
#[test]
fn fill_pdf_form_rust_runs() {
let path = out_path();
let _ = std::fs::remove_file(&path);
run_to(&path).expect("fill-form flow");
let reopened =
PdfDocument::open_with(&path, OpenOptions::new().with_license_key("tier:developer"))
.expect("reopen filled form");
let by_name: std::collections::HashMap<String, String> = reopened
.form_fields()
.expect("form_fields")
.into_iter()
.map(|f| (f.name, f.value))
.collect();
assert_eq!(by_name.get("first_name").map(String::as_str), Some("Jane"));
assert_eq!(by_name.get("last_name").map(String::as_str), Some("Smith"));
assert_eq!(by_name.get("agree_terms").map(String::as_str), Some("Yes"));
let _ = std::fs::remove_file(&path);
}
#[test]
fn fill_pdf_form_rust_compiles() {
let _f: fn() -> Result<()> = run;
}