Fill in a PDF form
Type into the fields. If the form has no real fields, type anywhere on it.
How it works
- Drop the form in.
- Fill in the fields.
- Download the completed form.
What it does
A PDF form with real fields should be filled in properly rather than typed over. This finds the fields the document actually declares, fills them, and can flatten the result so the answers become part of the page and cannot be changed by whoever receives it.
Real fields, not text on top
When a form has proper AcroForm fields, the values go into those fields. That means the text lands where the form intends, in the size the form asks for, and any software that reads the form later gets the answers rather than words floating over the layout.
Flattening, and when to do it
Flattening turns the filled fields into ordinary page content. Do it when you are sending the form somewhere final — it stops the answers being edited or accidentally cleared. Leave it unflattened if the form will go round again and somebody else has to add to it.
Forms without real fields
Plenty of forms are pictures of forms with no fields at all. Those cannot be filled this way, because there is nothing to fill. The editor is the answer there: type the values onto the page where they need to go, and place your signature the same way.
Doing this from your own code
POST
/api/v1/forms
The whole forms API: turn any document into a form, place the fields, send it out through a link that needs no account, and read the answers back as rows or as a spreadsheet.
curl -s https://docubend.com/api/v1/forms \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"Membership form","pdf":"<base64>","detect":true}'
const r = await fetch(`${BASE}/api/v1/forms`, {
method: "POST",
headers: { Authorization: `Bearer ${TOKEN}`,
"Content-Type": "application/json" },
body: JSON.stringify({ title: "Membership form", pdf: b64, detect: true }),
});
const { form } = await r.json();
form = requests.post(f"{BASE}/api/v1/forms",
headers={"Authorization": f"Bearer {TOKEN}"},
json={"title": "Membership form", "pdf": b64, "detect": True},
timeout=120).json()["form"]
Questions
What if my form has no fillable fields?
Then there is nothing for this tool to fill. Use the editor to type onto the page instead.
What does flattening do?
It turns your answers into part of the page so they cannot be edited or cleared afterwards.
Can I sign the form as well?
Yes — the signing tool places a signature on the page, and the two work on the same document.
Do checkboxes and dropdowns work?
Fields declared by the form are filled with the values you give. Very unusual field types may not behave as the form's author intended.
Is my filled form uploaded anywhere?
No. It is filled and written in this browser tab, which matters because a filled form usually contains exactly the details you would not want stored.
Next
| Tool | What it does | Runs in | Same thing, programmatically |
|---|---|---|---|
| Sign a PDF | Draw a signature and place it where it goes. | your browser | the document model |
| Edit a PDF | Change the words already in the PDF, in their original font. | your browser | the document model |
| Annotate a PDF | Highlight, draw and add notes on top of the page. | your browser | the document model |
| Password protect a PDF | Put an AES-256 password on a PDF. | our server | POST /api/free/protect |