Como preencher um formulário PDF em Java (Tutorial)
O IronPDF permite que desenvolvedores Java preencham formulários PDF programaticamente, carregando PDFs existentes, acessando os campos do formulário com getForm(), definindo valores com setFieldValue() e salvando o documento preenchido. Isso torna fácil automatizar o processamento de documentos em aplicações empresariais.
Início rápido: Preencha o formulário PDF em Java
```java {title="FillPDFForm.java"} //:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/quickstart.java // 1. Adicione a dependência do IronPDF ao seu projeto Maven // 2. Carregue seu formulário em PDF PdfDocument form = PdfDocument.fromFile("form.pdf"); // 3. Preencha os campos do formulário form.getForm().setFieldValue("firstname", "John"); // 4. Salve o PDF preenchido form.saveAs(Paths.get("filled_form.pdf"));
<div class="hsg-featured-snippet">
<h2>Como preencher um formulário PDF em Java</h2>
<ol>
<li><a class="js-modal-open" data-modal-id="download-modal" href="#download-modal">Instale a biblioteca Java IronPDF via Maven</a></li>
<li>Carregue o PDF existente que contém campos de formulário usando <code>PdfDocument.fromFile()</code></li>
<li>Acesse o formulário com o método <code>getForm()</code></li>
<li>Defina valores dos campos usando <code>setFieldValue(fieldName, value)</code></li>
<li>Salve o documento preenchido com <code>saveAs()</code></li>
</ol>
</div>
Este artigo cobre como preencher formulários PDF programaticamente em Java. Um cenário comum é quando uma aplicação coleta dados do usuário através de uma IU que devem ser persistidos em formato PDF para arquivamento, conformidade ou processamento posterior.
Após os dados do usuário serem capturados, as aplicações frequentemente precisam injetar esses dados diretamente em modelos PDF pré-existentes. Múltiplas bibliotecas de PDF Java lidam com esta tarefa, incluindo [Apache PDFBox](https://pdfbox.apache.org), iText e IronPDF. Este guia explica como usar o IronPDF para preencher formulários interativos com campos de texto, caixas de seleção, botões de opção e listas suspensas. Para desenvolvedores construindo fluxos de documentos relacionados, veja o guia sobre [criação de formulários PDF do zero em Java](https://ironpdf.com/java/how-to/create-forms/).
## O que é o IronPDF for Java?
IronPDF é uma [biblioteca PDF Java](https://ironpdf.com/java/) para criar, editar e manipular documentos PDF. Ela se integra a qualquer projeto baseado em Maven e expõe uma API clara que torna tarefas comuns de PDF alcançáveis com mínimo boilerplate.
A biblioteca cobre o ciclo de vida completo do PDF: renderização de HTML para PDF, leitura e escrita de dados de formulário, adição de assinaturas digitais, aplicação de configurações de segurança, compressão de documentos e impressão. Para trabalhar com formulários especificamente, IronPDF oferece acesso programático a todos os tipos de campos em um documento PDF, preservando a formatação original. Isso o torna bem adequado para processamento de formulários em lote, pré-preenchimento de modelos com registros de banco de dados, ou integração do preenchimento de formulários em um fluxo de trabalho Java maior. Consulte a [referência de API Java do IronPDF](https://ironpdf.com/java/object-reference/api/) para uma lista completa de classes e métodos disponíveis.
## Como instalar o IronPDF em um projeto Maven?
Adicione o seguinte bloco de dependência ao seu arquivo `pom.xml` para instalar o IronPDF for Java.
Abra `pom.xml` e insira a dependência dentro do elemento `<dependencies>`, depois execute `mvn install` para baixar a biblioteca. Versões disponíveis estão listadas no [Maven Central](https://search.maven.org/artifact/com.ironsoftware/ironpdf).
```xml
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/maven-dependency.xml
<dependency>
<groupId>com.ironsoftware</groupId>
<artifactId>ironpdf</artifactId>
<version>2024.9.1</version>
</dependency>
Após a instalação, importe com.ironsoftware.ironpdf.PdfDocument e com.ironsoftware.ironpdf.render.ChromePdfRenderOptions em sua classe Java para acessar a API de preenchimento de formulários. Para orientações sobre implantação em plataformas de nuvem, veja os guias para AWS, Azure, e Google Cloud.
Ao trabalhar com o IronPDF em um ambiente Docker ou conteinerizado, defina a propriedade de sistema antes da primeira chamada para evitar atrasos na verificação da licença em tempo de execução.
Como criar e preencher um formulário PDF usando HTML em Java?
A maneira mais confiável de produzir um PDF preenchível consistentemente estruturado é definir o formulário em HTML e renderizá-lo com IronPDF. A biblioteca converte elementos HTML <input> diretamente em campos de formulário PDF interativos.
O código a seguir cria um formulário PDF de dois campos a partir de uma string HTML e, em seguida, preenche ambos os campos:
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/create-and-fill-form.java
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.render.ChromePdfRenderOptions;
import java.io.IOException;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) throws IOException {
// Define an HTML form with two text input fields
String formHTML = "<html>"
+ "<body>"
+ "<h2>Editable PDF Form</h2>"
+ "<form>"
+ "First name: <br><input type='text' name='firstname' value=''><br>"
+ "Last name: <br><input type='text' name='lastname' value=''>"
+ "</form>"
+ "</body>"
+ "</html>";
// Enable HTML-to-form-field conversion during rendering
ChromePdfRenderOptions renderOptions = new ChromePdfRenderOptions();
renderOptions.setCreatePdfFormsFromHtml(true);
// Render HTML to PDF and save the blank template
PdfDocument.renderHtmlAsPdf(formHTML, renderOptions)
.saveAs(Paths.get("assets/BasicForm.pdf"));
// Load the template and fill in field values
PdfDocument form = PdfDocument.fromFile(Paths.get("assets/BasicForm.pdf"));
form.getForm().setFieldValue("firstname", "Minnie");
form.getForm().setFieldValue("lastname", "Mouse");
// Save the completed form to a new file
form.saveAs(Paths.get("assets/BasicForm_Filled.pdf"));
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/create-and-fill-form.java
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.render.ChromePdfRenderOptions;
import java.io.IOException;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) throws IOException {
// Define an HTML form with two text input fields
String formHTML = "<html>"
+ "<body>"
+ "<h2>Editable PDF Form</h2>"
+ "<form>"
+ "First name: <br><input type='text' name='firstname' value=''><br>"
+ "Last name: <br><input type='text' name='lastname' value=''>"
+ "</form>"
+ "</body>"
+ "</html>";
// Enable HTML-to-form-field conversion during rendering
ChromePdfRenderOptions renderOptions = new ChromePdfRenderOptions();
renderOptions.setCreatePdfFormsFromHtml(true);
// Render HTML to PDF and save the blank template
PdfDocument.renderHtmlAsPdf(formHTML, renderOptions)
.saveAs(Paths.get("assets/BasicForm.pdf"));
// Load the template and fill in field values
PdfDocument form = PdfDocument.fromFile(Paths.get("assets/BasicForm.pdf"));
form.getForm().setFieldValue("firstname", "Minnie");
form.getForm().setFieldValue("lastname", "Mouse");
// Save the completed form to a new file
form.saveAs(Paths.get("assets/BasicForm_Filled.pdf"));
}
}
O primeiro bloco usa ChromePdfRenderOptions com setCreatePdfFormsFromHtml(true) para dizer ao mecanismo de renderização para tratar elementos HTML <input> como campos de formulário PDF ativos em vez de texto estático. O PDF renderizado é salvo como um modelo reutilizável. O segundo bloco carrega esse modelo, chama getForm().setFieldValue() para cada campo pelo nome e grava o resultado em um arquivo de saída separado, deixando o modelo original intacto para uso futuro.
Qual é a aparência do resultado?
A primeira renderização produz um PDF com dois campos de texto vazios, totalmente editáveis em qualquer leitor de PDF.

Após a execução de setFieldValue(), ambos os campos são preenchidos com os dados fornecidos:

Como preencher um formulário PDF existente que eu não criei?
Muitos fluxos de trabalho do mundo real recebem modelos de PDF de terceiros (formulários governamentais, documentos de seguro, contratos de fornecedores) que já contêm campos nomeados. Carregar e preencher esses campos é o mesmo processo: use PdfDocument.fromFile() para carregar o documento e, em seguida, getForm().setFieldValue() para definir cada campo pelo seu nome.
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/fill-existing-form.java
import com.ironsoftware.ironpdf.PdfDocument;
import java.io.IOException;
import java.nio.file.Paths;
public class FillExistingForm {
public static void main(String[] args) throws IOException {
// Load a third-party fillable PDF
PdfDocument form = PdfDocument.fromFile(Paths.get("templates/application.pdf"));
// Set text field values by field name
form.getForm().setFieldValue("applicant_name", "Jane Smith");
form.getForm().setFieldValue("date_of_birth", "1985-06-14");
form.getForm().setFieldValue("reference_number", "REF-2024-00421");
// Save the completed application
form.saveAs(Paths.get("output/application_filled.pdf"));
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/fill-existing-form.java
import com.ironsoftware.ironpdf.PdfDocument;
import java.io.IOException;
import java.nio.file.Paths;
public class FillExistingForm {
public static void main(String[] args) throws IOException {
// Load a third-party fillable PDF
PdfDocument form = PdfDocument.fromFile(Paths.get("templates/application.pdf"));
// Set text field values by field name
form.getForm().setFieldValue("applicant_name", "Jane Smith");
form.getForm().setFieldValue("date_of_birth", "1985-06-14");
form.getForm().setFieldValue("reference_number", "REF-2024-00421");
// Save the completed application
form.saveAs(Paths.get("output/application_filled.pdf"));
}
}
Para descobrir nomes de campos em um PDF existente, abra o documento no Adobe Acrobat Reader, clique com o botão direito em qualquer campo e selecione "Propriedades". O nome do campo aparece na aba Geral. Alternativamente, itere sobre todos os campos programaticamente:
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/list-form-fields.java
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.form.FormField;
import java.nio.file.Paths;
public class ListFormFields {
public static void main(String[] args) throws Exception {
PdfDocument form = PdfDocument.fromFile(Paths.get("templates/application.pdf"));
// Print the name and type of every form field
for (FormField field : form.getForm().getFields()) {
System.out.println("Field: " + field.getName()
+ " | Type: " + field.getType());
}
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/list-form-fields.java
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.form.FormField;
import java.nio.file.Paths;
public class ListFormFields {
public static void main(String[] args) throws Exception {
PdfDocument form = PdfDocument.fromFile(Paths.get("templates/application.pdf"));
// Print the name and type of every form field
for (FormField field : form.getForm().getFields()) {
System.out.println("Field: " + field.getName()
+ " | Type: " + field.getType());
}
}
}
Imprimir os nomes dos campos antes de gravar os dados impede que o setFieldValue() falhe silenciosamente devido a um nome incompatível. Os nomes de campos em documentos PDF diferenciam maiúsculas de minúsculas, portanto, "firstname" e "FirstName" são tratados como campos diferentes.
getForm().getFields() retorna uma lista de objetos FormField. Cada um expõe getName(), getType() e getValue(). Estes são úteis ao construir rotinas de preenchimento de formulários dinâmicos que leem nomes de campos de uma fonte de dados externa, como um banco de dados ou arquivo CSV.Como preencher caixas de seleção e botões de rádio em Java?
Os campos de texto aceitam valores de string diretamente, mas as caixas de seleção e os botões de opção exigem valores exportados específicos que o PDF define no momento da criação. Use setFieldValue() com a string de valor de exportação correta para cada campo.
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/fill-checkboxes-radio.java
import com.ironsoftware.ironpdf.PdfDocument;
import java.nio.file.Paths;
public class FillCheckboxesAndRadio {
public static void main(String[] args) throws Exception {
PdfDocument form = PdfDocument.fromFile(Paths.get("templates/survey.pdf"));
// Check a checkbox by setting its exported value (often "Yes" or "On")
form.getForm().setFieldValue("agree_terms", "Yes");
// Select a radio button option by its exported value
form.getForm().setFieldValue("preferred_contact", "email");
form.saveAs(Paths.get("output/survey_filled.pdf"));
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/fill-checkboxes-radio.java
import com.ironsoftware.ironpdf.PdfDocument;
import java.nio.file.Paths;
public class FillCheckboxesAndRadio {
public static void main(String[] args) throws Exception {
PdfDocument form = PdfDocument.fromFile(Paths.get("templates/survey.pdf"));
// Check a checkbox by setting its exported value (often "Yes" or "On")
form.getForm().setFieldValue("agree_terms", "Yes");
// Select a radio button option by its exported value
form.getForm().setFieldValue("preferred_contact", "email");
form.saveAs(Paths.get("output/survey_filled.pdf"));
}
}
O valor de exportação para uma caixa de seleção é normalmente "Yes", "On" ou uma string personalizada definida pelo autor do formulário. Para grupos de botões de rádio, cada opção no grupo compartilha o mesmo nome de campo, mas tem um valor de exportação único. Use a técnica de listagem de campos da seção anterior para confirmar os valores de exportação exatos antes de escrever rotinas de preenchimento automatizadas.
setFieldValue() não aparecer para marcar uma caixa de seleção ou selecionar um botão de opção, a string de valor de exportação provavelmente está incorreta. Liste o campo com getFields() e inspecione getValue() em uma cópia do PDF verificada manualmente para recuperar a string correta.Como preencher listas suspensas em um formulário PDF usando Java?
Campos de lista suspensa (também chamados de campos de caixa combinada) usam a mesma API que campos de texto. Passe o valor de exportação da opção como uma string para setFieldValue(). O valor de exportação é tipicamente o texto da opção visível, a menos que o autor do formulário tenha definido um valor subjacente separado.
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/fill-dropdown.java
import com.ironsoftware.ironpdf.PdfDocument;
import java.nio.file.Paths;
public class FillDropdown {
public static void main(String[] args) throws Exception {
PdfDocument form = PdfDocument.fromFile(Paths.get("templates/registration.pdf"));
// Set a dropdown/combo box field to a specific option
form.getForm().setFieldValue("country", "United States");
// Set a list box field (multi-select may require comma-separated values)
form.getForm().setFieldValue("subscription_tier", "Professional");
form.saveAs(Paths.get("output/registration_filled.pdf"));
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/fill-dropdown.java
import com.ironsoftware.ironpdf.PdfDocument;
import java.nio.file.Paths;
public class FillDropdown {
public static void main(String[] args) throws Exception {
PdfDocument form = PdfDocument.fromFile(Paths.get("templates/registration.pdf"));
// Set a dropdown/combo box field to a specific option
form.getForm().setFieldValue("country", "United States");
// Set a list box field (multi-select may require comma-separated values)
form.getForm().setFieldValue("subscription_tier", "Professional");
form.saveAs(Paths.get("output/registration_filled.pdf"));
}
}
Quando o valor de exportação da lista suspensa for diferente do rótulo visível, use getFields() para inspecionar as opções disponíveis do campo. Passar um valor que não corresponda a nenhuma opção na definição do campo deixa a seleção inalterada sem lançar uma exceção, então validar os valores de exportação antes de uma execução em lote evita a perda silenciosa de dados.
FormField para FormComboBoxField e chame getOptions(). Isso retorna a lista de valores de exportação válidos para aquele menu suspenso.Como posso achatar um formulário PDF preenchido em Java?
O achatamento converte todos os campos do formulário em conteúdo estático, não editável. Isso impede que os destinatários alterem os dados enviados e é necessário para muitos casos de uso de arquivamento e conformidade. IronPDF suporta o achatamento de formulários como parte de suas capacidades de manipulação de PDF.
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/flatten-form.java
import com.ironsoftware.ironpdf.PdfDocument;
import java.nio.file.Paths;
public class FlattenForm {
public static void main(String[] args) throws Exception {
PdfDocument form = PdfDocument.fromFile(Paths.get("assets/BasicForm_Filled.pdf"));
// Flatten all form fields -- values become static text
form.getForm().flatten();
form.saveAs(Paths.get("output/BasicForm_Archived.pdf"));
}
}
//:path=/static-assets/pdf/content-code-examples/how-to/java-fill-pdf-form-tutorial/flatten-form.java
import com.ironsoftware.ironpdf.PdfDocument;
import java.nio.file.Paths;
public class FlattenForm {
public static void main(String[] args) throws Exception {
PdfDocument form = PdfDocument.fromFile(Paths.get("assets/BasicForm_Filled.pdf"));
// Flatten all form fields -- values become static text
form.getForm().flatten();
form.saveAs(Paths.get("output/BasicForm_Archived.pdf"));
}
}
Após a execução de flatten(), nenhum campo de formulário interativo permanece no PDF de saída. O tamanho do documento geralmente diminui porque as camadas de sobreposição dos campos do formulário são removidas. Os PDFs achatados são seguros para distribuir sem risco de os destinatários editarem os valores enviados.
Quais são os próximos passos para preenchimento de formulários em PDF em Java?
IronPDF fornece uma API focada e de baixo boilerplate para preenchimento de formulários PDF em Java. O método getForm() fornece acesso direto a campos de texto, caixas de seleção, botões de opção e listas suspensas. Quando o arquivamento é necessário, flatten() bloqueia todos os dados preenchidos como conteúdo estático.
Para as próximas etapas do seu fluxo de trabalho de documentos PDF, explore estes guias:
- Criar formulários PDF a partir de HTML em Java: construa modelos de formulário personalizados programaticamente
- Conversão de HTML para PDF em Java: renderize páginas HTML completas e fragmentos como documentos PDF
- Segurança de PDF e proteção por senha: restrinja o acesso a formulários preenchidos antes da distribuição
- Assinaturas digitais para PDF em Java: assine formulários concluídos para estabelecer autenticidade
- Referência de API for Java do IronPDF: documentação completa de classes e métodos
Inicie um teste gratuito do IronPDF for Java para testar o preenchimento de formulários em seu próprio projeto. Quando estiver pronto para implantar, veja as opções de licenciamento do IronPDF para encontrar um plano que atenda às necessidades da sua equipe.
Perguntas frequentes
Quais são os passos básicos para preencher um formulário PDF em Java?
Adicione a dependência do IronPDF Maven, carregue seu PDF com PdfDocument.fromFile(), acesse campos do formulário com getForm(), chame setFieldValue(fieldName, value) para cada campo e salve o resultado com saveAs().
Como descubro nomes de campos em um PDF existente?
Abra o PDF no Adobe Acrobat Reader, clique com o botão direito em qualquer campo e selecione Propriedades. O nome do campo aparece na aba Geral. Alternativamente, chame getForm().getFields() para iterar todos os campos e imprimir cada getName() e getType() programaticamente.
Como preencho caixas de seleção e botões de rádio em Java?
Use setFieldValue() com o valor de exportação da string do campo. Os valores de exportação da caixa de seleção são geralmente Yes ou On. Para grupos de botões de rádio, cada opção compartilha o mesmo nome de campo, mas possui um valor de exportação único. Se o campo não responder, inspecione getValue() em uma cópia do PDF marcada manualmente para encontrar a string correta.
Como preencho um campo de lista suspensa?
Chame setFieldValue(fieldName, optionValue) com o valor de exportação da opção. O valor de exportação é tipicamente o texto visível da opção. Para listar as opções disponíveis programaticamente, faça cast do FormField para FormComboBoxField e chame getOptions().
O que faz a 'achatamento' de um formulário PDF?
Achatar converte todos os campos interativos de formulário em conteúdo estático e não editável. Chame getForm().flatten() antes de salvar. O PDF resultante não pode ser editado por destinatários, o que é necessário para muitos fluxos de trabalho de arquivamento e conformidade.
O IronPDF pode preencher formulários criados por outras ferramentas?
Sim. PdfDocument.fromFile() carrega qualquer PDF preenchível padrão, independentemente de como foi criado. Use getForm().getFields() para inspecionar nomes de campos antes de chamar setFieldValue(), já que nomes de campos diferenciam maiúsculas de minúsculas e variam de acordo com o autor do formulário.


