Passa al contenuto principale

Compila un PDF Modulo

Cosa fa questo endpoint

PDF4me Compila un modulo PDF popola i campi AcroForm in un PDF modello con valori da un JSON oggetto in un singolo REST chiamata. Invia il modello come Base64 o un pubblico URL, inviare i valori del campo come stringa array di datie ricevere il compilato PDF come byte binari (200) o tramite un polling dell'intestazione Location URL (202). Attiva/disattiva KeepPdfEditable per fornire un modulo modificabile o un record statico non strutturato.

Articoli correlati del blog
Non ci sono ancora post sul blog dedicati a questa funzionalità — in arrivo a breve.
Nel frattempo, dai un'occhiata al blog di PDF4me per trovare tutorial e procedure operative su tutte le piattaforme.
Visita il blog

Autenticazione del tuo API Richiesta

Ogni PDF4me REST la chiamata deve includere il tuo API chiave nel Authorization Intestazione come autenticazione di base. Ottieni o ruota la tua chiave dalla dashboard dello sviluppatore.

Punto finale

INVIARE/api/v2/FillPdfForm

Informazioni importanti da non perdere

array di dati è una STRINGA, non un oggetto
IL API si aspetta una stringa JSON. Avvolgi sempre il payload del tuo modulo in JSON.stringify({...}) prima di pubblicare. L'invio di un oggetto annidato restituisce un errore di deserializzazione.
Le chiavi devono corrispondere esattamente ai nomi dei campi di AcroForm.
I nomi dei campi fanno distinzione tra maiuscole e minuscole. Ispeziona il modello con Adobe Acrobat. Preparare il modulo oppure chiama prima l'endpoint Extract Form Data per ottenere un elenco completo di tutti i campi compilabili.
La funzione asincrona restituisce 202 + intestazione Location
Con IsAsync: true IL API potrebbe rispondere con 202 e un'intestazione Location. GET Quello URL (stessa autorizzazione) finché non restituisce 200 con il PDF binario. Standard PDF4me modello asincrono (pdf4meAsyncRequest).

HTTP impostare

Metodo: INVIARE
URL: https://api.pdf4me.com/api/v2/FillPdfForm
Tipo di contenuto: applicazione/json
Autorizzazione: Base <il tuo PDF4me API chiave>

Inviare IsAsync: true nel corpo. 200 restituisce il riempito PDF come byte binari. 202 restituisce un Posizione intestazione con un sondaggio URL; GET Quello URL con la stessa intestazione di autorizzazione finché non restituisce 200 con il PDF binario (stessa convenzione di pdf4meAsyncRequest).

Matrice variante (rilevante per Postman)

Tre varianti di input coprono ogni chiamata Postman / curl / SDK. Scegli la variante che corrisponde a dove si trova il tuo PDF Modello e dati del modulo in tempo reale.

Variantemodello PDF (templateDocContent)Campi moduloCampi API obbligatori
ABase64 PDFJSON object → stringify → dataArrayAll rows in the JSON-form table below.
BPublic PDF URLJSON object → stringify → dataArraySame as A; templateDocContent is the URL string.
CBase64 PDFBase64-encoded JSON file → decode → stringify into dataArraySame as A; build dataArray from the decoded JSON.

API campi corporei

Sempre inviato

CampoNecessarioTipoPredefinito / note
templateDocNameYes*stringFilename of the template, e.g. template.pdf. Derived from the source URL filename or defaulted to template.pdf. Used for downstream output naming.
templateDocContentYesstringBase64-encoded PDF (no data: prefix) OR a publicly reachable https URL to the PDF.
KeepPdfEditableNobooleanDefault false. Set true to keep AcroForm fields editable in the output PDF; false flattens the form into static text.
IsAsyncYesbooleanDefault true. Toggles the 200 / 202 + Location async pattern.

*templateDocName deve essere sempre specificato nella richiesta; scegli un nome file appropriato in modo che i nomi dei file di output siano puliti a valle.

Quando l'input del modulo è JSON

CampoNecessarioTipoNote
dataArrayYesstringJSON.stringify({ ... }). Keys = AcroForm field names; values = strings to fill.
inputDataTypeYesstringAlways "json" for this path.
outputTypeYesstringAlways "pdf".

Regole dei dati del modulo (JSON sentiero)

RegolaDettaglio
ShapeSingle object: {"fieldName": "value", ...}.
Not allowedEmpty array, or an array of multiple objects.
Base64 form inputDecode the UTF-8 JSON file, then JSON.stringify into dataArray. In Postman: put the decoded-then-stringified result directly into dataArray.
Data URLStrip the data:...;base64, prefix if present (applies to the PDF Base64 in templateDocContent).

Esempi di carichi utili

Variante A. PDF Base64 + modulo JSON

{
"templateDocName": "application-form.pdf",
"templateDocContent": "JVBERi0xLjQKJcfsj6IKNSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZw...",
"dataArray": "{\"firstname\": \"John\", \"lastname\": \"Doe\", \"email\": \"[email protected]\"}",
"inputDataType": "json",
"outputType": "pdf",
"KeepPdfEditable": false,
"IsAsync": true
}

array di dati deve essere una stringa, non un elemento annidato JSON oggetto:
"dataArray": "{"firstname":"John","lastname":"Doe"}"

Variante B. URL PDF + modulo JSON

{
"templateDocName": "application-form.pdf",
"templateDocContent": "https://example.com/forms/application-form.pdf",
"dataArray": "{\"firstname\": \"John\", \"lastname\": \"Doe\", \"email\": \"[email protected]\"}",
"inputDataType": "json",
"outputType": "pdf",
"KeepPdfEditable": false,
"IsAsync": true
}

Variante C. PDF Base64 + modulo da base64 JSON

Segnaposto nel repository: eyJmaXJzdG5hbWUiOiJKb2huIn0={"firstname":"John"}.

Equivalent API corpo dopo aver decodificato il modulo JSON:

{
"templateDocName": "application-form.pdf",
"templateDocContent": "JVBERi0xLjQKJcfsj6IKNSAwIG9iago8PAovVHlwZSAvQ2F0YWxvZw...",
"dataArray": "{\"firstname\": \"John\"}",
"inputDataType": "json",
"outputType": "pdf",
"KeepPdfEditable": false,
"IsAsync": true
}

Opzionale. Mantieni il modulo modificabile

{
"templateDocName": "application-form.pdf",
"templateDocContent": "https://example.com/forms/application-form.pdf",
"dataArray": "{\"firstname\": \"John\", \"lastname\": \"Doe\"}",
"inputDataType": "json",
"outputType": "pdf",
"KeepPdfEditable": true,
"IsAsync": true
}

Consigli per la raccolta del postino

Headers
Content-Type: application/json + Authorization: Basic <apiKey>.
Body
raw JSON. Copy one of the variant payloads above.
Response
Save as .pdf when status is 200 and the body is binary. If 202, GET the Location URL with the same Authorization until 200.
Field names
Must exactly match AcroForm names in the template. Use the Extract Form Data endpoint or a PDF editor if you are unsure.

esempio di riccio

curl -X POST https://api.pdf4me.com/api/v2/FillPdfForm \
-H "Content-Type: application/json" \
-H "Authorization: Basic YOUR_API_KEY" \
-d '{
"templateDocName": "application-form.pdf",
"templateDocContent": "https://example.com/forms/application-form.pdf",
"dataArray": "{\"firstname\":\"John\",\"lastname\":\"Doe\"}",
"inputDataType": "json",
"outputType": "pdf",
"KeepPdfEditable": false,
"IsAsync": true
}' \
--output filled-form.pdf

Riferimento rapido: obbligatorio vs facoltativo (Postino)

CampoA (PDF b64)B (URL del PDF)C (formato b64 → JSON)
templateDocNameRequiredRequiredRequired
templateDocContentRequired (b64)Required (URL)Required (b64)
dataArrayRequiredRequiredRequired (from decoded JSON)
inputDataTypeRequired (json)Required (json)Required (json)
outputTypeRequired (pdf)Required (pdf)Required (pdf)
IsAsyncRequired (true)Required (true)Required (true)
KeepPdfEditableOptionalOptionalOptional

Esempi di codice

FAQ

Why must dataArray be a stringified JSON, not a nested object?+
The API contract defines dataArray as a string field. The engine parses the string server-side. Sending a nested object returns a deserialization error. Always wrap your form values with JSON.stringify before posting.
What happens when KeepPdfEditable is true?+
The output PDF retains its AcroForm field definitions so the recipient can re-edit values in any PDF viewer. KeepPdfEditable false (the default) flattens the form into static text, useful for delivering a locked record of what was submitted.
How do I know the exact AcroForm field names?+
Open the template in Adobe Acrobat (Prepare Form), use any PDF editor with field inspection, or call the PDF4me Extract Form Data endpoint first. Keys in your dataArray JSON must match those names exactly, including case.
When should I use Variant B (PDF URL) over Variant A (Base64)?+
Use Variant B when the template is already hosted at a publicly reachable HTTPS URL. It avoids the Base64 size bloat (~33%) and is the simplest path for templates pinned in S3, CDN, or your own static asset host. Use Variant A when the template is private or local.
How does the async flow work?+
Send IsAsync true. If the API returns 200, the PDF binary is in the body. If it returns 202, read the Location response header for a poll URL. GET that URL with the same Authorization header. Continue polling (commonly 10s intervals up to 15 retries) until it returns 200 with the PDF.
Can I send an array of multiple form-data objects?+
No. The REST contract requires a single object inside dataArray (after JSON.stringify). To fill many forms, call the endpoint once per form.
My PDF Base64 has a data: prefix. Do I strip it?+
Yes. The API expects raw Base64 in templateDocContent. Strip any data:application/pdf;base64, prefix before posting.
How do I get back something other than PDF?+
You cannot. outputType is fixed to pdf for this endpoint. To rasterize the filled PDF into PNG / JPEG, chain a downstream PDF4me Convert PDF to Image call.

Azioni correlate

Stessa attività su altre piattaforme

Richiedi assistenza