Điền form PDF API
Liệt kê trường của file PDF điền được, điền từ JSON với tiếng Việt đầy đủ dấu, làm phẳng (flatten) và điền hàng loạt nhiều bản ra file zip.
Tải lên file PDF có form (AcroForm), API liệt kê các trường: tên, loại (ô chữ, ô đánh dấu, nút chọn, danh sách thả xuống, danh sách chọn, chữ ký, nút bấm), giá trị hiện tại, các lựa chọn, độ dài tối đa và trang, vị trí của từng ô, kèm đối tượng template để điền sẵn. Gửi values dạng {"tên trường": giá trị} để điền: chữ, true / false cho ô đánh dấu, một lựa chọn (hoặc số thứ tự) cho nút chọn và danh sách thả xuống, mảng cho danh sách chọn nhiều.
Hình hiển thị của các trường được vẽ lại bằng font Be Vietnam Pro nhúng trong file, nên chữ có dấu hiển thị đúng trên mọi trình xem (font PDF chuẩn không có dấu tiếng Việt). flatten=true in giá trị vào trang và xóa các trường, cho bản cuối không sửa được. rows điền cùng một form cho từng đối tượng và trả file zip, đặt tên theo filename như don_{ho_ten}.
Tên trường không tồn tại được bỏ qua và báo lại (header x-unknown-fields, hoặc báo lỗi khi strict=true). Form chỉ có XFA và PDF scan không có trường thì không điền được; PDF có mật khẩu bị từ chối. File được xử lý trong bộ nhớ, không lưu lại.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
file | body | file | có | File PDF có form (multipart, body thô hoặc file_base64). | |
action | body|query | string | không | fields | fields (liệt kê) hoặc fill (mặc định khi có values / rows). |
values | body | object | không | {"tên trường": giá trị} để điền một bản. | |
rows | body | array | không | Điền hàng loạt: mảng các đối tượng giá trị, trả file zip (tối đa 200). | |
flatten | body|query | boolean | không | false | In giá trị vào trang và xóa các trường. |
strict | body|query | boolean | không | false | Báo lỗi khi có tên trường không tồn tại. |
output | body|query | string | không | pdf | pdf (file) hoặc json (base64 + danh sách trường đã điền). |
Ví dụ
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));Kết quả trả về
{
"pages": 1,
"xfa": false,
"field_count": 5,
"fields": [
{
"name": "ho_ten",
"type": "text",
"read_only": false,
"required": false,
"value": null,
"max_length": null,
"multiline": false,
"widgets": [
{
"page": 1,
"x": 119.5,
"y": 749.5,
"width": 301,
"height": 23
}
]
},
{
"name": "dong_y",
"type": "checkbox",
"read_only": false,
"required": false,
"value": false,
"widgets": [
{
"page": 1,
"x": 119.5,
"y": 639.5,
"width": 15,
"height": 15
}
]
},
{
"name": "gioi_tinh",
"type": "radio",
"read_only": false,
"required": false,
"value": null,
"options": [
"Nam",
"Nu"
],
"widgets": [
{
"page": 1,
"x": 119.5,
"y": 609.5,
"width": 15,
"height": 15
},
{
"page": 1,
"x": 159.5,
"y": 609.5,
"width": 15,
"height": 15
}
]
},
{
"name": "tinh",
"type": "dropdown",
"read_only": false,
"required": false,
"value": null,
"options": [
"Hà Nội",
"TP. Hồ Chí Minh",
"Đà Nẵng"
],
"editable": false,
"widgets": [
{
"page": 1,
"x": 119.5,
"y": 569.5,
"width": 201,
"height": 23
}
]
},
{
"…": "…"
}
],
"template": {
"ho_ten": "",
"dia_chi": "",
"dong_y": false,
"gioi_tinh": "",
"tinh": ""
},
"note": "Fill with action=fill and values={\"field name\": \"value\"}. Coordinates are PDF points from the bottom-left corner."
}
Ứng dụng
- Điền đơn ngân hàng, bảo hiểm, visa dạng PDF từ cơ sở dữ liệu
- Tạo bản PDF phẳng của các biểu mẫu nội bộ đã duyệt
- Điền hàng loạt giấy chứng nhận, tờ khai cho nhiều người
- Xem tên các trường trước khi tự động hóa quy trình PDF
Hỏi đáp
Vì sao chữ tiếng Việt hiển thị đúng?
Hình hiển thị của trường được vẽ lại bằng font hỗ trợ tiếng Việt nhúng trong file (Be Vietnam Pro, giấy phép OFL) thay cho Helvetica chuẩn vốn không có dấu tiếng Việt.
Làm phẳng (flatten) là gì?
Giá trị đã điền được vẽ thẳng vào nội dung trang và các trường form bị xóa, nên không ai sửa được trên trình xem PDF nữa.
PDF nào không điền được?
PDF scan hoặc PDF phẳng không có trường form, form chỉ dùng XFA (LiveCycle) và file có mật khẩu.
API liên quan
Metadata ảnh & EXIF
Đọc kích thước, định dạng, thông tin EXIF máy ảnh, thông số chụp và vị trí GPS của ảnh JPEG, PNG, WebP, HEIC, AVIF, GIF… – upload file hoặc qua URL.
PDFMetadata PDF
Đọc metadata file PDF: số trang, tiêu đề, tác giả, phần mềm tạo, ngày tạo, phiên bản PDF, mã hoá, số trường form và khổ giấy từng trang (A4, Letter…).
PDF₫Tạo PDF báo giá, phiếu thu
Tạo PDF báo giá, phiếu thu, đơn đặt hàng, hoá đơn bán hàng gọn đẹp từ JSON: tiếng Việt chuẩn, thuế GTGT, số tiền bằng chữ và mã VietQR để thanh toán.