Appiattisca i campi PDF come contenuto statico
Ada (Countess) Lovelace scritto in un campo di pagina 1 e una casella spuntata a pagina 2 diventano contenuto fisso, e il resoconto conferma che entrambi sono stati appiattiti. Il modulo non ha più campi attivi modificabili. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Trasformi un modulo PDF interattivo già compilato in una rappresentazione stabile, nella quale i valori inseriti diventano parte del contenuto delle pagine. Questa capacità riceve il contenuto delle pagine e le definizioni dei campi, convalida ogni valore e posizione, crea operazioni di aspetto statiche e deterministiche, rimuove la raccolta interattiva e indica esattamente quali campi sono stati appiattiti. È pensata per un’automazione prevedibile dopo che un PDF è stato analizzato, compilato e approvato, con un errore chiaro quando il modulo fornito non contiene campi.
Che cosa cambia appiattendo un modulo compilato
Un PDF compilato può sembrare definitivo pur contenendo ancora controlli modificabili. Caselle di testo, checkbox, scelte, pulsanti di opzione e valori visibili delle firme possono restare separati dalle normali istruzioni di disegno presenti in ogni pagina. Questa distinzione conta quando il documento passa alla consegna, alla stampa o all’archiviazione: un visualizzatore può mostrare o modificare il controllo e programmi diversi possono renderne l’aspetto in modo differente.
Questa capacità prende i valori forniti e scrive un’operazione di aspetto statica nel contenuto della pagina corretta. L’operazione è ritagliata entro il rettangolo indicato, usa una formattazione numerica stabile e protegge i caratteri che hanno un significato speciale nelle stringhe PDF. Al termine, la raccolta di campi interattivi restituita è vuota.
I valori visibili accompagnano quindi il modello del contenuto senza dipendere da controlli attivi. L’output comprende anche un rapporto campo per campo, nell’ordine ricevuto, affinché il Suo processo registri con precisione ogni modifica.
Preparare correttamente pagine e valori dei campi
Fornisca almeno una pagina, identificata da un numero positivo univoco, con il flusso di contenuto statico esistente rappresentato come testo. Aggiunga poi ogni campo compilato con nome univoco, numero di pagina, tipo, valore testuale e coordinate del rettangolo in punti PDF. Sono supportati testo, checkbox, pulsanti di opzione, scelte e firme.
I valori sono stringhe perché l’appiattimento usa ciò che viene visualizzato: per esempio, una checkbox selezionata può usare “Yes”, mentre una scelta usa l’etichetta selezionata. Ogni campo deve riferirsi a una pagina esistente, mentre larghezza e altezza devono essere maggiori di zero. Coordinate e dimensioni devono essere numeri finiti.
La convalida è volutamente rigorosa. Nomi o pagine duplicati, tipi sconosciuti, geometria non valida, pagine mancanti o valori non testuali generano un errore chiaro invece di un risultato parziale. Soprattutto, un elenco di campi vuoto viene rifiutato esplicitamente, evitando che un’operazione priva di effetti sembri completata con successo.
Usare il rapporto in un flusso documentale affidabile
Inserisca questa trasformazione dopo la compilazione e l’approvazione umana o automatica, ma prima della consegna finale o della preparazione dell’archivio. Il risultato contiene le pagine ordinate per numero, il contenuto originale seguito dalle operazioni di aspetto generate, una raccolta di campi vuota, il conteggio appiattito e il rapporto dettagliato. Ogni voce conserva nome, pagina, tipo e valore visualizzato originali.
Confronti il conteggio con il numero atteso dal Suo processo oppure conservi il rapporto accanto al registro di audit, così da semplificare verifiche future. La capacità modella la fase di appiattimento e non analizza i byte PDF; un sistema binario deve prima interpretare pagine e campi AcroForm e poi serializzare il modello statico restituito.
Casi d'uso
Finalizzare una domanda approvata
Integri i valori del richiedente nel contenuto delle pagine dopo la revisione e conservi il rapporto insieme alla pratica.
Stabilizzare i moduli prima della stampa
Elimini la dipendenza dai controlli interattivi rappresentando i valori con operazioni grafiche deterministiche.
Domande frequenti
Quanto costa questa capacità?
L’implementazione nel browser usa la stessa trasformazione deterministica.
Che cosa accade se il modulo non contiene campi?
La richiesta fallisce con un errore di input non valido che segnala l’assenza di campi. Un modulo vuoto non viene mai dichiarato appiattito.
Quali tipi di campo sono supportati?
Sono accettati testo, checkbox, pulsanti di opzione, scelte e firme. La stringa fornita viene trattata come valore visualizzato.
La capacità analizza direttamente un PDF binario?
No. Trasforma deterministicamente contenuto e valori già analizzati. Un flusso binario deve analizzare prima e serializzare dopo.
Le parentesi o altri segni in un nome rovinano la pagina?
No. I caratteri che hanno un significato speciale in un PDF vengono protetti in scrittura, quindi un nome come Ada (Countess) Lovelace resta esattamente come è stato compilato. Ogni valore viene inoltre ritagliato sul rettangolo del suo campo e non invade il resto della pagina.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/pdf/flatten-form \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pages":[{"number":1,"content":"q 1 0 0 1 0 0 cm Q"}],"fields":[{"name":"full_name","page":1,"type":"text","value":"Ada Lovelace","x":72,"y":680,"width":220,"height":18}]}'const res = await fetch("https://api.kit.forhosting.com/pdf/flatten-form", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pages": [
{
"number": 1,
"content": "q 1 0 0 1 0 0 cm Q"
}
],
"fields": [
{
"name": "full_name",
"page": 1,
"type": "text",
"value": "Ada Lovelace",
"x": 72,
"y": 680,
"width": 220,
"height": 18
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/flatten-form",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pages": [
{
"number": 1,
"content": "q 1 0 0 1 0 0 cm Q"
}
],
"fields": [
{
"name": "full_name",
"page": 1,
"type": "text",
"value": "Ada Lovelace",
"x": 72,
"y": 680,
"width": 220,
"height": 18
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/flatten-form", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pages":[{"number":1,"content":"q 1 0 0 1 0 0 cm Q"}],"fields":[{"name":"full_name","page":1,"type":"text","value":"Ada Lovelace","x":72,"y":680,"width":220,"height":18}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pages":[{"number":1,"content":"q 1 0 0 1 0 0 cm Q"}],"fields":[{"name":"full_name","page":1,"type":"text","value":"Ada Lovelace","x":72,"y":680,"width":220,"height":18}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/flatten-form", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"pages": [
{
"number": 1,
"content": "q 1 0 0 1 0 0 cm Q"
}
],
"fields": [
{
"name": "full_name",
"page": 1,
"type": "text",
"value": "Ada Lovelace",
"x": 72,
"y": 680,
"width": 220,
"height": 18
}
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.flatten_form",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_mb | 25 |
max_pages | 200 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Usare il rapporto in un flusso documentale affidabile
Poiché l’algoritmo non usa rete, scelte casuali, orologio o stato mutabile condiviso, lo stesso input produce sempre lo stesso JSON. Questo determinismo favorisce test di riferimento, hash del contenuto, nuovi tentativi e build riproducibili.
Casi di integrazione
Verificare un flusso documentale automatico
Confronti flattened_count e flattened_fields con lo schema previsto prima di serializzare, consegnare o archiviare.
Domande tecniche
Il risultato identifica i campi appiattiti?
Sì. flattened_fields riporta nome, pagina, tipo e valore di ogni campo, mentre flattened_count indica il totale.