Cómo llenar campos de formulario PDF en Python

This article was translated from English: Does it need improvement?
Translated
View the article in English

Llene formularios PDF programáticamente en Python utilizando IronPDF: cargue un PDF existente, localice cada campo por nombre, asigne valores y guarde el resultado en solo unas pocas líneas.

Inicio rápido: Llenar campos de formulario PDF

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-fill-pdf-form/quickstart.py
1. Install IronPDF: `pip install ironpdf`
2. Load your PDF: `form_document = PdfDocument.FromFile("form.pdf")`
3. Find form field: `field = form_document.Form.FindFormField("fieldname")`
4. Set field value: `field.Value = "Your Value"`
5. Save filled PDF: `form_document.SaveAs("filled_form.pdf")`
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
1. Install IronPDF: `pip install ironpdf`
2. Load your PDF: `form_document = PdfDocument.FromFile("form.pdf")`
3. Find form field: `field = form_document.Form.FindFormField("fieldname")`
4. Set field value: `field.Value = "Your Value"`
5. Save filled PDF: `form_document.SaveAs("filled_form.pdf")`
PYTHON

Recopilar datos a través de una interfaz web y luego generar un PDF completo para archivado o procesamiento posterior es un patrón común de automatización de documentos. En lugar de transcribir manualmente datos en formularios PDF, los scripts en Python pueden manejar esto al instante: leer nombres de campos, rellenar valores y producir documentos terminados listos para almacenamiento o distribución.

IronPDF hace este flujo de trabajo directo: una API para crear formularios desde HTML, un método para localizar un campo por nombre, una propiedad para establecer su valor. Los formularios PDF en el mundo contienen más que entradas de texto. Las casillas de verificación, los botones de opción y los campos de lista desplegable son compatibles a través del mismo enfoque FindFormField y Value. El resto de esta guía recorre los escenarios clave: generar un formulario desde marcado HTML, llenar campos en un documento existente, leer todos los tipos de campo y ejecutar llenados masivos desde una fuente de datos.

¿Cómo creo y lleno un formulario PDF usando HTML en Python?

IronPDF puede convertir elementos HTML <input> directamente en campos PDF editables, ofreciéndote un camino directo desde una definición de formulario estilo web a un documento PDF rellenable. Puede diseñar formularios con HTML y CSS familiares, luego rellenarlos de inmediato sin un paso manual intermedio.

El ejemplo a continuación renderiza un formulario HTML como PDF, luego llena los campos firstname y lastname antes de guardar el resultado.

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-fill-pdf-form/fill-form-from-html.py
from ironpdf import *

# Define HTML content for a simple form
form_html = """
<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>
"""

# Instantiate a PDF renderer
renderer = ChromePdfRenderer()

# Enable HTML form-to-PDF-field conversion
renderer.RenderingOptions.CreatePdfFormsFromHtml = True

# Render the HTML content to a PDF file
renderer.RenderHtmlAsPdf(form_html).SaveAs("BasicForm.pdf")

# Load the created PDF document
form_document = PdfDocument.FromFile("BasicForm.pdf")

# Access the "firstname" field and set its value
first_name_field = form_document.Form.FindFormField("firstname")
first_name_field.Value = "Minnie"
print("FirstNameField value: {}".format(first_name_field.Value))

# Access the "lastname" field and set its value
last_name_field = form_document.Form.FindFormField("lastname")
last_name_field.Value = "Mouse"
print("LastNameField value: {}".format(last_name_field.Value))

# Save the filled form
form_document.SaveAs("FilledForm.pdf")
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
from ironpdf import *

# Define HTML content for a simple form
form_html = """
<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>
"""

# Instantiate a PDF renderer
renderer = ChromePdfRenderer()

# Enable HTML form-to-PDF-field conversion
renderer.RenderingOptions.CreatePdfFormsFromHtml = True

# Render the HTML content to a PDF file
renderer.RenderHtmlAsPdf(form_html).SaveAs("BasicForm.pdf")

# Load the created PDF document
form_document = PdfDocument.FromFile("BasicForm.pdf")

# Access the "firstname" field and set its value
first_name_field = form_document.Form.FindFormField("firstname")
first_name_field.Value = "Minnie"
print("FirstNameField value: {}".format(first_name_field.Value))

# Access the "lastname" field and set its value
last_name_field = form_document.Form.FindFormField("lastname")
last_name_field.Value = "Mouse"
print("LastNameField value: {}".format(last_name_field.Value))

# Save the filled form
form_document.SaveAs("FilledForm.pdf")
PYTHON

Establecer CreatePdfFormsFromHtml en True en el atributo RenderingOptions indica al renderizador traducir cada elemento <input> en el HTML en un campo PDF interactivo correspondiente. Sin este indicador, las entradas de texto se renderizan como elementos visuales estáticos y no se pueden llenar programáticamente.

Después de renderizar, PdfDocument.FromFile carga nuevamente el archivo guardado en la memoria. El método FindFormField acepta el atributo name del campo como una cadena y devuelve un objeto FormField. Asignar a Value escribe los datos en el campo. La llamada SaveAs escribe el documento modificado en el disco.

ConsejosAl diseñar formularios HTML para conversión a PDF, mantén los atributos name de los campos cortos y aptos para URLs. Espacios y caracteres especiales en los nombres de campos funcionan pero pueden complicar las búsquedas FindFormField posteriores.

¿Cómo se ve el formulario vacío antes de llenarlo?

 PDF renderizado por IronPDF mostrando un formulario vacío con campos de texto 'Nombre' y 'Apellido' listos para entrada de datos

El PDF generado preserva el diseño visual del formulario HTML. Cada entrada de texto aparece como un campo clickeable y editable. Cuando el formulario se abre en un lector de PDF, los usuarios aún pueden escribir en los campos manualmente o los campos pueden ser llenados a través de la API como se muestra arriba.

¿Cómo se ve el formulario completado después de llenarlo?

 Formulario PDF llenado por IronPDF mostrando 'Minnie' en el campo de 'Nombre' y 'Mouse' en el campo de 'Apellido' después de la llenado programático

El documento llenado muestra los valores escritos en cada campo. La estructura del formulario y la interactividad de los campos están completamente intactas: el PDF puede guardarse tal cual para archivado o ser aplanado para fijar los valores en su lugar para distribución.

¿Cómo llenó campos en un documento PDF existente?

Muchos flujos de trabajo del mundo real implican formularios PDF creados en Adobe Acrobat, Word u otras herramientas. IronPDF puede cargar cualquier PDF que contenga campos AcroForm y llenarlos con la misma API FindFormField y Value utilizada al crear formularios desde HTML. AcroForm es el formato estándar de formularios interactivos definido en la especificación PDF y es soportado por todos los principales lectores de PDF.

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-fill-pdf-form/fill-existing-form.py
from ironpdf import *

# Load a pre-existing PDF with form fields
form_document = PdfDocument.FromFile("existing_form.pdf")

# Enumerate available field names (helpful when exploring an unfamiliar form)
for field in form_document.Form.Fields:
    print("Field name:", field.Name, "| Current value:", field.Value)

# Fill a specific field by name
applicant_name_field = form_document.Form.FindFormField("applicant_name")
applicant_name_field.Value = "Jane Smith"

# Fill a second field
date_field = form_document.Form.FindFormField("application_date")
date_field.Value = "2026-05-03"

# Save the filled document
form_document.SaveAs("submitted_application.pdf")
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
from ironpdf import *

# Load a pre-existing PDF with form fields
form_document = PdfDocument.FromFile("existing_form.pdf")

# Enumerate available field names (helpful when exploring an unfamiliar form)
for field in form_document.Form.Fields:
    print("Field name:", field.Name, "| Current value:", field.Value)

# Fill a specific field by name
applicant_name_field = form_document.Form.FindFormField("applicant_name")
applicant_name_field.Value = "Jane Smith"

# Fill a second field
date_field = form_document.Form.FindFormField("application_date")
date_field.Value = "2026-05-03"

# Save the filled document
form_document.SaveAs("submitted_application.pdf")
PYTHON

Iterar form_document.Form.Fields antes de llenar es útil cuando se trabaja con formularios cuyos nombres de campos no están documentados. El bucle imprime cada nombre de campo y su valor actual, dando un mapa completo de lo que el formulario espera antes de que se escriban valores.

Por favor notaIronPDF soporta campos AcroForm, el formato estándar de formularios interactivos. Los PDFs escaneados y documentos solo de imagen no contienen datos de campos; utilice IronOCR para extraer texto de esos documentos primero.

¿Cómo trabajo con checkboxes y otros tipos de campo?

Los campos de texto son el elemento de formulario más común, pero los formularios del mundo real incluyen casillas de verificación, botones de opción y cuadros desplegables (combo box). IronPDF expone todos estos a través de la misma colección Form.Fields. La propiedad Value acepta la cadena apropiada para cada tipo.

La tabla a continuación muestra los valores aceptados para los tres tipos de campo no de texto más comunes:

Convenciones de valor de campo de formulario PDF en IronPDF para tipos de entrada no de texto
Tipo de campoTipo de entrada HTMLValor a establecerNotas
Casilla de verificación"true" o "false"Sensible a mayúsculas y minúsculas; use cadena, no booleano
Botón de opciónEl atributo value de la opción a seleccionarMismo nombre, valores diferentes por opción
Desplegable (cuadro combo)El texto de visualización de la opción deseadaDebe coincidir exactamente con una opción existente
:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-fill-pdf-form/fill-field-types.py
from ironpdf import *

# Load a form with multiple field types
form_document = PdfDocument.FromFile("application_form.pdf")

# Fill a text field
form_document.Form.FindFormField("full_name").Value = "Alex Rivera"

# Check a checkbox (use string "true")
form_document.Form.FindFormField("agree_terms").Value = "true"

# Select a radio button option by its value attribute
form_document.Form.FindFormField("employment_status").Value = "full_time"

# Select a dropdown option by display text
form_document.Form.FindFormField("country").Value = "United States"

form_document.SaveAs("completed_application.pdf")
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
from ironpdf import *

# Load a form with multiple field types
form_document = PdfDocument.FromFile("application_form.pdf")

# Fill a text field
form_document.Form.FindFormField("full_name").Value = "Alex Rivera"

# Check a checkbox (use string "true")
form_document.Form.FindFormField("agree_terms").Value = "true"

# Select a radio button option by its value attribute
form_document.Form.FindFormField("employment_status").Value = "full_time"

# Select a dropdown option by display text
form_document.Form.FindFormField("country").Value = "United States"

form_document.SaveAs("completed_application.pdf")
PYTHON

Al iterar form_document.Form.Fields, cada objeto FormField expone una propiedad Name y una propiedad Value. Para grupos de radio y listas desplegables, imprimir el Value existente antes de escribir te mostrará la selección actual y confirmará el formato esperado para ese campo.

PrecauciónSi FindFormField devuelve None, el nombre del campo no existe en el documento. Imprime todos los nombres a través de form_document.Form.Fields para verificar la ortografía y confirmar que el campo está presente. Los nombres de los campos hacen distinción entre mayúsculas y minúsculas.

¿Cómo llenó formularios en masa desde una fuente de datos?

Generar un PDF lleno por cada registro de una hoja de cálculo o consulta de base de datos es una de las razones más comunes por las que los equipos recurren al llenado de formularios programáticos. IronPDF maneja esto tratando cada operación de llenado como sin estado: cargue la plantilla, llene campos, guarde bajo un nombre único y repita.

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-fill-pdf-form/bulk-fill-forms.py
from ironpdf import *

# Sample data records (replace with database or CSV source)
applicants = [
    {"name": "Alice Johnson", "id": "A001", "date": "2026-05-03"},
    {"name": "Bob Williams", "id": "B002", "date": "2026-05-03"},
    {"name": "Carol Davis",  "id": "C003", "date": "2026-05-03"},
]

for applicant in applicants:
    # Load template from disk on each iteration to avoid cross-contamination
    form_document = PdfDocument.FromFile("application_template.pdf")

    # Fill each field from the data record
    form_document.Form.FindFormField("applicant_name").Value = applicant["name"]
    form_document.Form.FindFormField("applicant_id").Value   = applicant["id"]
    form_document.Form.FindFormField("submission_date").Value = applicant["date"]

    # Save each filled form with a unique filename
    output_path = f"output/application_{applicant['id']}.pdf"
    form_document.SaveAs(output_path)
    print(f"Saved: {output_path}")
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
from ironpdf import *

# Sample data records (replace with database or CSV source)
applicants = [
    {"name": "Alice Johnson", "id": "A001", "date": "2026-05-03"},
    {"name": "Bob Williams", "id": "B002", "date": "2026-05-03"},
    {"name": "Carol Davis",  "id": "C003", "date": "2026-05-03"},
]

for applicant in applicants:
    # Load template from disk on each iteration to avoid cross-contamination
    form_document = PdfDocument.FromFile("application_template.pdf")

    # Fill each field from the data record
    form_document.Form.FindFormField("applicant_name").Value = applicant["name"]
    form_document.Form.FindFormField("applicant_id").Value   = applicant["id"]
    form_document.Form.FindFormField("submission_date").Value = applicant["date"]

    # Save each filled form with a unique filename
    output_path = f"output/application_{applicant['id']}.pdf"
    form_document.SaveAs(output_path)
    print(f"Saved: {output_path}")
PYTHON

Cargar la plantilla dentro del ciclo, en lugar de una vez antes, previene que los valores de los campos se acumulen en las iteraciones. Cada llamada a PdfDocument.FromFile produce una copia nueva del template, por lo que llenar un registro no puede afectar al siguiente.

ImportantePara ejecuciones por lotes de gran volumen, considera cargar el template una vez con PdfDocument.FromFile y utilizar un mecanismo de copia si la API lo admite. Compare ambas aproximaciones con sus necesidades de volumen antes de implementar.

IronPDF no impone un límite artificial sobre cuántos documentos un script puede generar en una sola ejecución. El rendimiento está determinado por la memoria disponible y la velocidad de I/O del destino de salida. Para lotes muy grandes, escribir en un SSD local y luego transferir a almacenamiento en red es más rápido que escribir directamente en una unidad de red.

¿Cómo aplanó un formulario PDF lleno?

El aplanamiento convierte campos de formulario interactivos en contenido de página estático, fijando los valores actuales en su lugar. Un PDF aplanado es la elección correcta para archivar, imprimir o enviar a destinatarios que no deberían alterar los valores de los campos.

IronPDF proporciona un método de aplanar campos de formulario que opera en cualquier PdfDocument cargado. Llámelo después de llenar campos, luego guarde el resultado.

:path=/static-assets/ironpdf-python/content-code-examples/how-to/python-fill-pdf-form/flatten-form.py
from ironpdf import *

# Load and fill a form
form_document = PdfDocument.FromFile("application_template.pdf")
form_document.Form.FindFormField("full_name").Value = "Jordan Lee"
form_document.Form.FindFormField("application_date").Value = "2026-05-03"

# Flatten all form fields to lock values as static content
form_document.Form.Flatten()

# Save the flattened, non-editable PDF
form_document.SaveAs("archived_application.pdf")
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
from ironpdf import *

# Load and fill a form
form_document = PdfDocument.FromFile("application_template.pdf")
form_document.Form.FindFormField("full_name").Value = "Jordan Lee"
form_document.Form.FindFormField("application_date").Value = "2026-05-03"

# Flatten all form fields to lock values as static content
form_document.Form.Flatten()

# Save the flattened, non-editable PDF
form_document.SaveAs("archived_application.pdf")
PYTHON

Después de Flatten(), el documento ya no contiene objetos de campo interactivos. Los sistemas posteriores que reciben el archivo ven contenido de texto ordinario en lugar de widgets de formulario. Esto es importante para el cumplimiento de archivo PDF/A y para prevenir ediciones no deseadas en cadenas de revisión de múltiples etapas.

ConsejosAplane inmediatamente antes de guardar cuando el documento está destinado a ser archivado. Si el mismo documento será revisado y corregido primero, mantenga los campos interactivos hasta el guardado final.

¿Cómo instalar IronPDF en Python?

IronPDF está disponible desde PyPI. Instálelo con pip:

 pip install ironpdf

Después de la instalación, importa la biblioteca en la parte superior de cada script con from ironpdf import *. Una licencia de prueba gratuita está disponible para evaluación. Los despliegues en producción requieren una clave de licencia comercial establecida a través de la propiedad License.LicenseKey antes de que se ejecuten operaciones PDF.

Por favor notaIronPDF requiere Python 3.6 o superior. El paquete incluye un motor Chromium sin cabeza utilizado para la conversión de HTML a PDF, por lo que la primera importación puede tardar un momento mientras el motor se inicializa.

¿Cuáles son los siguientes pasos para la automatización de formularios PDF en Python?

Esta guía cubrió la creación de formularios PDF desde HTML, llenado de campos en documentos existentes, trabajo con casillas de verificación y campos desplegables, generación de lotes de formularios llenos desde registros de datos, y aplanamiento de PDFs llenos para archivo. Cada técnica utiliza la misma API central: FindFormField para localizar un campo por nombre, Value para asignar datos, y SaveAs para escribir el resultado.

Para explorar capacidades relacionadas en IronPDF for Python:

Comience una prueba gratuita para probar el llenado de formularios en su propio proyecto de Python. Cuando esté listo para implementar, vea las opciones de licencia para paquetes de desarrollador individual y paquetes empresariales.

Preguntas Frecuentes

¿Cuáles son los pasos básicos para rellenar un formulario PDF mediante programación en Python?

Instala IronPDF con pip install ironpdf, carga tu PDF usando PdfDocument.FromFile(), encuentra el campo objetivo con form_document.Form.FindFormField(), asigna un valor a field.Value, luego guarda con SaveAs().

¿Cómo puedo acceder a campos de formulario específicos de un documento PDF y modificarlos?

Usa el método FindFormField en el atributo Form de un PdfDocument cargado, pasando el nombre del campo como una cadena. El método devuelve un objeto FormField cuya propiedad Value puedes leer o establecer.

¿Cómo lleno casillas de verificación y campos de listas desplegables con IronPDF?

Para casillas de verificación, establece Value a la cadena "true" o "false". Para botones de radio, establece Value al atributo de valor de la opción deseada. Para listas desplegables, establece Value en el texto de visualización exacto de la opción que deseas seleccionar.

¿Puedo automatizar el rellenado masivo de formularios PDF para varios documentos?

Sí. Carga la plantilla dentro de un bucle con PdfDocument.FromFile() en cada iteración para obtener una copia nueva, llena los campos desde tu fuente de datos, y guarda cada resultado con un nombre de archivo único usando SaveAs().

¿Qué es el aplanado de formularios y cuándo debería usarlo?

El aplanado convierte campos de formulario interactivos en contenido de página estático, bloqueando valores en su lugar. Llama a form_document.Form.Flatten() antes de guardar cuando el documento esté destinado para archivo, impresión, o distribución a destinatarios que no deberían editar los valores de campo.

¿Qué sucede si FindFormField no puede encontrar un campo?

Si no existe un campo con el nombre dado, FindFormField devuelve None. Itera form_document.Form.Fields para imprimir todos los nombres de campo disponibles y confirmar la ortografía correcta. Los nombres de campo son sensibles a mayúsculas y minúsculas.

¿Qué tipos de formularios PDF admite IronPDF?

IronPDF admite campos AcroForm, el formato de formulario interactivo estándar usado por Adobe Acrobat y la mayoría de las herramientas de autoría de PDF. Los PDFs escaneados y los documentos solo de imagen no contienen campos AcroForm y requieren procesamiento OCR antes de que sea posible la extracción de texto.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
¿Listo para empezar?
Versión: 2026.5 just released
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida?
ejecutar una muestra Mira cómo tu HTML se convierte en PDF.