Validar campos obrigatórios e valores de formulários PDF
Antes de preencher o formulário, o nome Ada Lovelace, a data de nascimento 1815-12-10 e a opção de e-mail são conferidos com quatro regras, e a caixa de newsletter sem resposta aparece como opcional. Uma data como 2025-02-29 é recusada. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Roda direto no seu navegador. Grátis, sem cadastro — seus dados não são enviados para lugar nenhum.
Valide os dados destinados a um formulário PDF antes de começar a preencher o documento. Forneça as definições dos campos e um objeto de valores; esta capacidade verifica campos obrigatórios, tipos exatos, datas reais, opções permitidas, definições duplicadas e chaves inesperadas. Quando tudo corresponde ao contrato, ela devolve um conjunto limpo de valores validados.
Defina claramente o contrato do formulário
Comece descrevendo cada campo do formulário PDF com um nome exclusivo, um tipo aceito e uma indicação opcional de obrigatoriedade. Os tipos disponíveis abrangem texto, números finitos, inteiros, booleanos, datas de calendário ISO, seleções de escolha única e seleções de múltipla escolha. Campos de seleção também precisam de uma lista de opções, para que o validador diferencie uma escolha aprovada de uma string arbitrária.
As definições formam o contrato do objeto de valores: todo valor fornecido deve corresponder a uma definição, e nomes de campos duplicados são rejeitados porque tornariam a validação ambígua. Use exatamente os nomes esperados pela operação posterior de preenchimento do PDF, inclusive maiúsculas e minúsculas. Esta capacidade não inspeciona o PDF nem tenta adivinhar seus campos.
Manter a descoberta dos campos separada da validação simplifica os testes e permite reutilizar o mesmo contrato em muitos registros. Se a indicação de obrigatoriedade for omitida, o padrão será falso; um campo explicitamente obrigatório precisa conter um valor significativo. Em campos de texto, conteúdo formado apenas por espaços é considerado ausente.
Entenda a validação rigorosa dos valores
Os valores são verificados sem conversão automática. Um booleano deve ser true ou false, nunca "yes", 1 ou 0. As datas usam o formato inequívoco YYYY-MM-DD e devem representar um dia real do calendário; por isso, uma entrada como 2025-02-29 é rejeitada.
O valor de uma seleção precisa corresponder exatamente a uma das strings declaradas, respeitando maiúsculas e minúsculas. Uma seleção múltipla deve ser um array de strings permitidas e exclusivas; escolhas repetidas ou desconhecidas falham. Esse rigor identifica erros de mapeamento antes que eles gerem documentos discretamente incorretos.
As mesmas representações vazias causam erro em campos obrigatórios. A operação para no primeiro problema e apresenta uma questão específica que um formulário ou processo pode mostrar ao usuário.
Valide antes de gerar o PDF
Use esta capacidade logo após mapear os dados da aplicação para os nomes dos campos PDF e antes de chamar uma ferramenta que grave no documento. Um resultado bem-sucedido inclui valid true, a quantidade de definições examinadas, os valores aceitos e os campos opcionais não fornecidos. Chaves desconhecidas são rejeitadas porque um nome de campo digitado incorretamente poderia desaparecer silenciosamente durante o preenchimento do PDF.
Isso torna o validador especialmente útil em fluxos em lote, nos quais um mapeamento errado pode afetar centenas de documentos. Armazene as definições junto à versão do modelo, valide cada registro contra essa versão e encaminhe apenas os registros aprovados para o preenchimento. O algoritmo roda localmente, sem rede, aleatoriedade, inferência de modelos ou estado armazenado; portanto, entradas idênticas sempre produzem resultados idênticos.
Casos de uso
Conferir formulários de integração
Verifique nomes, datas, consentimentos booleanos e escolhas obrigatórias antes de gerar formulários preenchidos de funcionários ou clientes.
Proteger trabalhos documentais em lote
Rejeite um registro inválido antes que ele chegue à fila de gravação de PDF e gere um documento incompleto.
Perguntas frequentes
Esta capacidade altera o PDF?
Não. Ela apenas valida definições e valores de campos. Envie os valores validados para outra capacidade de preenchimento de PDF.
Como as datas são validadas?
Elas devem usar YYYY-MM-DD e representar um dia real, incluindo o comportamento correto dos anos bissextos.
Os valores podem conter campos ausentes das definições?
Não. Chaves desconhecidas são rejeitadas para revelar erros de digitação e mapeamentos desatualizados.
O que acontece se um campo obrigatório tiver só espaços?
Ele conta como vazio, então a verificação falha e a mensagem indica qual campo é. Só um valor com conteúdo completa um texto obrigatório; os campos opcionais que faltarem são apenas listados como não enviados.
Ele aceita “sim” numa caixa de seleção ou um número inteiro escrito como texto?
Não. Nada é convertido automaticamente: uma caixa de sim ou não precisa de um valor verdadeiro ou falso, não da palavra sim nem do dígito 1, e um número inteiro deve chegar como número, não como o texto 12.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/pdf/fill-form-fields \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"fields":[{"name":"full_name","type":"text","required":true},{"name":"age","type":"integer","required":false}],"values":{"full_name":"Ada Lovelace","age":36}}'const res = await fetch("https://api.kit.forhosting.com/pdf/fill-form-fields", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"fields": [
{
"name": "full_name",
"type": "text",
"required": true
},
{
"name": "age",
"type": "integer",
"required": false
}
],
"values": {
"full_name": "Ada Lovelace",
"age": 36
}
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/pdf/fill-form-fields",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"fields": [
{
"name": "full_name",
"type": "text",
"required": true
},
{
"name": "age",
"type": "integer",
"required": false
}
],
"values": {
"full_name": "Ada Lovelace",
"age": 36
}
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/pdf/fill-form-fields", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"fields":[{"name":"full_name","type":"text","required":true},{"name":"age","type":"integer","required":false}],"values":{"full_name":"Ada Lovelace","age":36}}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"fields":[{"name":"full_name","type":"text","required":true},{"name":"age","type":"integer","required":false}],"values":{"full_name":"Ada Lovelace","age":36}}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/pdf/fill-form-fields", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"fields": [
{
"name": "full_name",
"type": "text",
"required": true
},
{
"name": "age",
"type": "integer",
"required": false
}
],
"values": {
"full_name": "Ada Lovelace",
"age": 36
}
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "pdf.fill_form_fields",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_mb | 25 |
max_pages | 200 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Como a validação é determinística e não abre nem altera o PDF, ela funciona como uma etapa de conferência tanto no navegador quanto em automações previsíveis pela API.
Entenda a validação rigorosa dos valores
Um inteiro deve chegar como número JSON sem parte fracionária, e não como a string "12". Campos numéricos aceitam somente números JSON finitos. Campos opcionais podem estar ausentes, ser null ou conter uma string vazia; nesse caso, aparecem em missing_optional e não são copiados para validated_values.
Valide antes de gerar o PDF
O objeto validated_values preserva exatamente os valores JSON aprovados: ele não formata datas, arredonda números, reorganiza seleções nem inventa padrões. O uso no navegador atende a verificações interativas, enquanto uma solicitação de API custa US$ 0,002 quando a validação integra uma produção documental automatizada.
Casos de integração
Testar mapeamentos de modelos
Confirme que as chaves de saída e os tipos JSON da aplicação ainda correspondem ao contrato de um modelo PDF versionado.
Perguntas técnicas
O que acontece quando falta um campo obrigatório?
A solicitação falha com um erro invalid_input que informa o nome do campo obrigatório.
Strings numéricas são convertidas em números?
Não. A validação é rigorosa, portanto um número ou inteiro deve ser fornecido como número JSON.
Quanto custa uma solicitação de API?
Cada solicitação custa US$ 0,002. O validador determinístico também pode ser executado no navegador.