Skip to content

v0.3.3 - guaranteed core survives real-world forms

Choose a tag to compare

@san64777 san64777 released this 08 Jun 19:57
· 13 commits to main since this release
4077c8c

Hardening release, driven by real-world QA over 125 public PDF forms (government, healthcare, legal, business). Found and fixed 4 guaranteed-core bugs that the synthetic test suite could not reach.

Fixes

  • read_fields now returns the fully-qualified field name (the /T chain joined by .), so its output is addressable by fill(). Previously it returned the leaf name, which fill could not find on hierarchical / XFA forms - read-then-fill failed on most real fillable forms. Flat fields are unchanged.
  • build no longer crashes on a single-button radio group (reportlab raised "RadioGroup has 1 < 2 RadioBoxes"); a 1-member radio group is built as a checkbox.
  • fill and flatten no longer crash with KeyError '/N' on a widget that has an /AP with no /N (a malformed real-world form); both enumerations are guarded.

Result

On the 125-form real corpus: read_fields 125/125, fill 108/108, flatten 108/108, build 108/108 - zero crashes. Three regression tests added.

Install: pip install acroforge==0.3.3