Registry
California DE 1 — programmatic fill compatibility
Commercial Employer Account Registration and Update Form · California Employment Development Department (EDD) · DE 1 Rev. 79 (3-16). 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 | verified + deterministic flatten | 111/111 supported fields landed; flatten=true byte-deterministic (sha256 3945140af6d4…) |
| pdf-lib | 1.17.1 | verified (111/111) | 111 fields filled in-process |
| @cantoo/pdf-lib (fork) | 2.6.5 | verified (111/111) | 111 fields filled in-process |
| pypdf | 6.15.0 | text fields verified (91/91) | 91 text fields written and re-read (text fields only) |
| pdftk-java | 3.3.3 | verified (111/111) | 111 fields filled via FDF and re-dumped |
| qpdf --check | 11.9.0 | structurally clean | errors that qpdf cannot detect |
| poppler render check | 24.02.0 | values render (91/91) | 91/91 filled text values present in pdftotext output of the pdf-lib-filled file; page-1 raster sha256 6b3f5b50659e… |
File facts
- Source: https://edd.ca.gov/siteassets/files/pdf_pub_ctr/de1.pdf (issuer page: here)
- Blank tested: ca-edd-de1.pdf · 810 KB · sha256
0b08cd4144da7fbd8b81214c413d777ad4cc0c0ef9f77a17f517f40a5feae8c2 - License: California state government form, published for public employer-registration use. The hash-verified blank is redistributed here unmodified.
- Structure: 2 pages · AcroForm
- Fields: 112 (91 text, 18 radiogroup, 2 checkbox, 1 button)
Quirks & limitations
- The compatibility trap this entry exists to document: `Producer: Adobe Acrobat Pro DC 20 Paper Capture Plug-in` — every one of the 91 text-field widgets was auto-detected by Acrobat's OCR-based field recognizer over a scanned image, and NONE of them carry an /AP (appearance) dictionary on the blank form. Verified directly: iterating the field/widget objects with pypdf shows /AP entirely absent on all 91 (checked field-by-field, not just spot-checked) — every widget is a flat Widget annotation with no /Kids, so this isn't a parent/child appearance-inheritance false negative.
- The AcroForm's own /NeedAppearances flag is NOT set (confirmed absent via direct dict inspection) — so this form is actually worse than the textbook NeedAppearances=true case: there is no flag telling a compliant viewer to synthesize appearances, and there is no baked appearance either. A naive filler that only writes /V (the field value) without generating its own appearance stream will produce a PDF that displays nothing in that field in any viewer, Adobe included, until a human clicks into it.
- This registry's own fill legs are unaffected by the gap: pdf-lib and cantoo both always generate their own appearance stream from /V on save regardless of what the source PDF declares (verified by grepping both libraries' full source for `NeedAppearances` — zero references in either), so this registry's pdfops/pdf-lib/cantoo legs render the filled values fine. The hazard is specifically for any filler that sets /V and stops — a class of tool this registry doesn't itself ship, but one the wider ecosystem (raw low-level PDF writers, some CLI stampers) does.
- Old and unrevised: created October 2015, last formally revised March 2016, still the live form at the same URL a decade later — a good stand-in for the long tail of small-agency forms that were digitized once via scan-and-OCR and never rebuilt.
Tested request
This exact shape ran against the live API during the recorded test (values here shortened to two fields; the test filled all 111 supported fields). With flatten=true, two identical runs produced byte-identical output — sha256 3945140af6d499664ed11026efaffa9b8bc674919e56fc022864d8683e61ee74.
curl -X POST https://pdfops.dev/api/fill-form \
-F "pdf=@ca-edd-de1.pdf" \
-F 'fields={"2.0 EAN":"P","2.1 EAN":"P"}' \
-F "flatten=true" \
-o filled.pdf
Enumerate all 112 field names first with the inspector or POST /api/inspect.
Field schema
All 112 fields (name, type, maxLength, options)
| Field name | Type | maxLength | Options |
|---|---|---|---|
I WANT TO | RadioGroup | 11 options | |
Reason for Closing Account | RadioGroup | 2 options | |
EMPLOYER TYPE | RadioGroup | 3 options | |
Same as above | CheckBox | ||
PRINT | Button | ||
TAXPAYER TYPE | RadioGroup | 13 options | |
INDIVIDUAL OWNER - Do you only employ your spouse, parent(s), or minor child(ren) (under 18)? If yes, you are not subject to Unemployment Insurance (UI) and State Disability Insurance (SDI) but may be subject to Personal Income Tax (PIT) | RadioGroup | 2 options | |
CO-OWNERSHIP - Do you only employ your minor child(ren) (under 18)? If yes, you are not subject to UI and SDI but may be subject to PIT | RadioGroup | 2 options | |
PARTNERSHIP: Do you only employ your parent(s)? If yes, you are not subject to UI and SDI but may be subject to PIT | RadioGroup | 2 options | |
LOCATION OF EMPLOYEE SERVICES - Do you have employees working in California? | RadioGroup | 2 options | |
LOCATION OF EMPLOYEE SERVICES - Do you have employees residing in California that are working outside of California? | RadioGroup | 2 options | |
INDIVIDUAL OWNER/CO-OWNER INFORMATION (1) | RadioGroup | 3 options | |
INDUSTRY ACTIVITY - Select your business industry | RadioGroup | 8 options | |
Report a Purchase of Business - Business Purchase | RadioGroup | 2 options | |
Report a Sale of Business - Business Sold | RadioGroup | 2 options | |
2.0 EAN | TextField | 1 | |
2.1 EAN | TextField | 1 | |
2.2 EAN | TextField | 1 | |
2.3 EAN | TextField | 1 | |
2.4 EAN | TextField | 1 | |
2.5 EAN | TextField | 1 | |
2.6 EAN | TextField | 1 | |
2.7 EAN | TextField | 1 | |
3.5 date | TextField | 2 | |
3.6 date | TextField | 2 | |
3.7 date | TextField | 4 | |
4.2 date | TextField | 2 | |
4.3 date | TextField | 2 | |
4.4 date | TextField | 4 | |
4.5 price | TextField | 12 | |
5.2 date | TextField | 2 | |
5.3 date | TextField | 2 | |
5.4 date | TextField | 4 | |
7.3 date | TextField | 2 | |
7.4 date | TextField | 2 | |
7.5 date | TextField | 4 | |
8.1 Report a Change | TextField | ||
8.2 Reason-Change | TextField | ||
8.3 Change From | TextField | ||
8.5 date | TextField | 2 | |
8.6 date | TextField | 2 | |
8.7 date | TextField | 4 | |
10.2 Other | TextField | ||
11.1 date | TextField | 2 | |
11.2 date | TextField | 2 | |
11.3 date | TextField | 4 | |
15.1 Name | TextField | ||
15.2 Title | TextField | ||
15.3 SSN | TextField | 11 | |
15.4 CDL | TextField | 8 | |
16.1 Name | TextField | ||
16.2 Title | TextField | ||
16.3 SSN | TextField | 11 | |
16.4 CDL | TextField | 8 | |
17.1 Name | TextField | ||
17.2 Title | TextField | ||
17.3 SSN | TextField | 11 | |
17.4 CDL | TextField | 8 | |
18.1 Name | TextField | ||
18.2 Title | TextField | ||
18.3 SSN | TextField | 11 | |
18.4 CDL | TextField | 8 | |
19.1 Name | TextField | ||
19.2 Title | TextField | ||
19.3 SSN | TextField | 11 | |
19.4 CDL | TextField | 8 | |
20.1 Name | TextField | ||
20.2 Title | TextField | ||
20.3 SSN | TextField | 11 | |
20.4 CDL | TextField | 8 | |
20.1 Legal Name | TextField | ||
21.1 DBA | TextField | ||
22.1 FEIN | TextField | ||
22.2 date | TextField | 2 | |
22.3 date | TextField | 2 | |
22.4 date | TextField | 4 | |
23.1 State | TextField | ||
23.2 State Entity Number | TextField | 12 | |
24.1 Street # | TextField | ||
24.2 Street Name | TextField | ||
24.3 Unit # | TextField | ||
25.1 City | TextField | ||
25.2 State | TextField | ||
25.3 ZIP | TextField | ||
25.4 Country | TextField | ||
25.5 Business Phone | TextField | 14 | |
26.1 Street # | TextField | ||
26.2 Street Name | TextField | ||
26.3 Unit # | TextField | ||
27.1 City | TextField | ||
27.2 State | TextField | ||
27.3 ZIP | TextField | ||
27.5 Phone | TextField | 14 | |
27.4 Country | TextField | ||
28.1 email | TextField | ||
28.0 email | CheckBox | ||
29.1 product-services | TextField | ||
29.2 Other | TextField | ||
30.1 Name | TextField | ||
30.2 Phone | TextField | 14 | |
30.3 E-mail | TextField | ||
31.1 Relation | TextField | ||
31.2 Address | TextField | ||
32.1 date | TextField | 10 | |
33.1 Name | TextField | ||
33.2 Title | TextField | ||
33.3 phone | TextField | 14 | |
INDIVIDUAL OWNER/CO-OWNER INFORMATION (2) | RadioGroup | 3 options | |
CORPORATE OFFICER(S), PARTNERS, OR LLC MEMBER(S), MANAGER(S), AND/OR OFFICER INFORMATION (1) | RadioGroup | 3 options | |
CORPORATE OFFICER(S), PARTNERS, OR LLC MEMBER(S), MANAGER(S), AND/OR OFFICER INFORMATION (2) | RadioGroup | 3 options | |
CORPORATE OFFICER(S), PARTNERS, OR LLC MEMBER(S), MANAGER(S), AND/OR OFFICER INFORMATION (3) | RadioGroup | 3 options | |
CORPORATE OFFICER(S), PARTNERS, OR LLC MEMBER(S), MANAGER(S), AND/OR OFFICER INFORMATION (4) | RadioGroup | 3 options |
Frequently asked
Can I fill the California DE 1 programmatically?
Yes — the blank DE 1 Rev. 79 (3-16) California DE 1 is a fillable AcroForm with 112 fields. In our tested run, all 111 supported fields were filled through the pdfops API and verified by re-inspecting the output; upstream pdf-lib also round-trips it, and pypdf handled its text fields. Field names are listed in the schema on this page.
← All forms in the registry · Inspect your own PDF · Make a flat PDF fillable