Fill a PDF Form (AcroForm) Online
List the fields of a fillable PDF, fill them from JSON with full Vietnamese text, flatten the result and batch-fill many forms into a zip.
Result
Press “Run” to see the result.
Upload a fillable PDF (AcroForm) and the API lists its fields: name, type (text, checkbox, radio, dropdown, list box, signature, button), current value, options, maximum length and the page and position of each widget, plus a template object you can fill in. Send values as {"field name": value} to fill it: text, true / false for checkboxes, an option (or its index) for radio groups and dropdowns, an array for list boxes.
Appearances are regenerated with the Be Vietnam Pro font embedded, so Vietnamese diacritics display correctly in every viewer (the standard PDF fonts cannot show them). flatten=true burns the values into the page and removes the fields, for a final, non-editable copy. rows fills the same form once per object and returns a zip, named with filename such as don_{ho_ten}.
Unknown field names are ignored and reported (x-unknown-fields header, or an error with strict=true). XFA-only forms and scanned PDFs without fields cannot be filled; encrypted PDFs are refused. Files are processed in memory and not stored.
Use this in your code
curl -X POST "https://apibox.io.vn/v1/pdf-form" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "0=@./my-file"const form = new FormData();
form.append('0', fileInput.files[0]);
const res = await fetch('https://apibox.io.vn/v1/pdf-form', {
method: 'POST',
headers: { Authorization: 'Bearer YOUR_API_KEY' },
body: form,
});
console.log(await res.json());import requests
res = requests.post(
"https://apibox.io.vn/v1/pdf-form",
headers={"Authorization": "Bearer YOUR_API_KEY"},
files={"0": open("my-file", "rb")},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/pdf-form');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
CURLOPT_POSTFIELDS => ['0' => new CURLFile('my-file')],
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));API documentation → Get a free API key
FAQ
Why are Vietnamese characters shown correctly?
Field appearances are redrawn with an embedded Vietnamese-capable font (Be Vietnam Pro, OFL licence) instead of the standard Helvetica, which has no Vietnamese glyphs.
What does flatten do?
It draws the filled values into the page content and removes the form fields, so the PDF can no longer be edited in a viewer.
Which PDFs cannot be filled?
Scanned or flat PDFs without form fields, XFA-only forms (LiveCycle) and password-protected files.