Registry
California FL-100 — programmatic fill compatibility
Petition — Marriage/Domestic Partnership (family law) · Judicial Council of California · Rev. January 1, 2020. Tested 2026-08-06 on the unmodified upstream blank — every number below comes from a recorded run, not from documentation.
Verdict at a glance
| Tool | Version | Result | Detail |
|---|---|---|---|
| pdfops API | hosted, tested 2026-08-06 | fails at parse | invalid_pdf: Error: Input document to `PDFDocument.load` is encrypted. You can use `PDFDocument.load(..., { ignoreEncryption: true })` if you wish to load the document anyways. |
| pdf-lib | 1.17.1 | fails at load | Error: Input document to `PDFDocument.load` is encrypted. You can use `PDFDocument.load(..., { ignoreEncryption: true })` if you wish to load the document anyways. |
| @cantoo/pdf-lib (fork) | 2.6.5 | fails at load | Error: Input document to `PDFDocument.load` is encrypted. You can use `PDFDocument.load(..., { ignoreEncryption: true })` if you wish to load the document anyways. |
| pypdf | 6.15.0 | text fields verified (66/66) | 66 text fields written and re-read (text fields only) |
| pdftk-java | 3.3.3 | verified (148/148) | 148 fields filled via FDF and re-dumped |
| qpdf --check | 11.9.0 | warnings | WARNING: public/registry/blank/ca-fl-100.pdf: page 2: shared object 1171: in hint table but not computed list | qpdf: operation succeeded with warnings |
| poppler render check | no filled output to render | no filled PDF from the pdf-lib leg to render |
File facts
- Source: https://courts.ca.gov/sites/default/files/courts/default/2024-11/fl100.pdf (issuer page: here)
- Blank tested: ca-fl-100.pdf · 188 KB · sha256
fa30a2916677af5aecbd555aeceb06ef410eb1221da1b5f928348a5e7b17b6b6 - License: California Judicial Council form, adopted for mandatory use. Published for public court filing; the hash-verified blank is redistributed here unmodified.
- Structure: ? pages · no AcroForm · encrypted
- Fields: not enumerable on the unmodified file (post-load access failed: Error: Expected instance of PDFDict, but got instance of undefined)
Quirks & limitations
- The failure case this registry exists to document: the blank ships AES-encrypted (R=4) with an EMPTY user password — anyone can open it in a viewer, but the owner password restricts modification, and pdf-lib-family parsers (including pdfops today) refuse it outright at parse time.
- Verified workaround: `qpdf --decrypt fl100.pdf fl100-dec.pdf` removes the restriction losslessly; the decrypted file then loads as a normal hybrid AcroForm/XFA form with 158 fields across 3 pages and fills fine.
- pypdf opens it directly — but only with the optional `cryptography` package installed (`pip install pypdf[crypto]`); without it the load fails with DependencyError. With it, pypdf filled and verified all 66 text fields on the unmodified blank.
- Court e-filing pipelines hit this constantly: California Judicial Council forms are a large family and many ship with the same owner-password encryption.
- This entry intentionally records failures. A tool showing 'fails at load' below is the honest, reproducible result on the unmodified upstream file.
Tested request
The unmodified blank is rejected at parse time, so there is no working direct request to show — see the quirks above for the verified decrypt-first workaround.
Frequently asked
Can I fill the California FL-100 programmatically?
Not directly with pdf-lib-family tooling — the unmodified blank ships encrypted, and pdf-lib and the pdfops API refuse it at parse time. Verified workaround: decrypt first (qpdf --decrypt), after which it fills as a normal AcroForm; pypdf with the cryptography extra opens it directly (text fields only). pdftk-java fills the encrypted blank natively — 148 fields across all field types via fill_form, no decrypt step — and writes a decrypted output.
Why do PDF libraries reject the California FL-100?
The blank is AES-encrypted with an empty user password: anyone can open it in a viewer, but the owner password restricts modification, and strict parsers refuse the file outright. qpdf --decrypt removes the restriction losslessly; pypdf can open it directly when its optional cryptography dependency is installed; pdftk-java both reads and fills it natively (its output is decrypted).
← All forms in the registry · Inspect your own PDF · Make a flat PDF fillable