Interactive PDF forms let users fill in text fields, check boxes, and select options—then submit or save their responses. Here's how to create them programmatically in C#.
using IronPdf;
// Install via NuGet: Install-Package IronPdf
var renderer = new [ChromePdfRenderer](https://ironpdf.com/java/how-to/java-fill-pdf-form-tutorial/)();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
var pdf = renderer.RenderHtmlAsPdf(@"
<form>
<label>Name:</label>
<input type='text' name='fullName' />
<br>
<input type='checkbox' name='agree' /> I agree to terms
</form>");
pdf.SaveAs("form.pdf");
The HTML form elements become interactive PDF form fields.
What Types of Form Fields Can I Create?
PDF forms support several field types:
| Field Type | HTML Element | PDF Equivalent |
|---|---|---|
| Text input | <input type="text"> |
Text field |
| Text area | <textarea> |
Multi-line text field |
| Checkbox | <input type="checkbox"> |
Checkbox |
| Radio buttons | <input type="radio"> |
Radio button group |
| Dropdown | <select> |
Combo box |
| Button | <button> |
Push button |
Each maps naturally from HTML to PDF form fields.
How Do I Create Text Fields?
Simple text inputs for names, emails, and other data:
using IronPdf;
// Install via NuGet: Install-Package IronPdf
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
var html = @"
<html>
<head>
<style>
label { display: block; margin: 10px 0 5px; }
input[type='text'], input[type='email'] {
width: 300px;
padding: 8px;
border: 1px solid #ccc;
}
</style>
</head>
<body>
<h1>Contact Information</h1>
<label>Full Name:</label>
<input type='text' name='fullName' />
<label>Email:</label>
<input type='email' name='email' />
<label>Phone:</label>
<input type='text' name='phone' />
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("contact-form.pdf");
Each name attribute becomes the field's identifier in the PDF.
How Do I Create Checkboxes?
For yes/no questions and multiple selections:
using IronPdf;
// Install via NuGet: Install-Package IronPdf
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
var html = @"
<html>
<body>
<h1>Preferences</h1>
<h3>Select your interests:</h3>
<input type='checkbox' name='tech' id='tech' />
<label for='tech'>Technology</label><br>
<input type='checkbox' name='sports' id='sports' />
<label for='sports'>Sports</label><br>
<input type='checkbox' name='music' id='music' />
<label for='music'>Music</label><br>
<h3>Agreement:</h3>
<input type='checkbox' name='terms' id='terms' />
<label for='terms'>I agree to the terms and conditions</label>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("preferences-form.pdf");
Users can check multiple boxes—each checkbox is independent.
How Do I Create Radio Buttons?
For single-selection from multiple options:
using IronPdf;
// Install via NuGet: Install-Package IronPdf
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
var html = @"
<html>
<body>
<h1>Survey</h1>
<h3>How satisfied are you?</h3>
<input type='radio' name='satisfaction' value='very' id='very' />
<label for='very'>Very Satisfied</label><br>
<input type='radio' name='satisfaction' value='somewhat' id='somewhat' />
<label for='somewhat'>Somewhat Satisfied</label><br>
<input type='radio' name='satisfaction' value='neutral' id='neutral' />
<label for='neutral'>Neutral</label><br>
<input type='radio' name='satisfaction' value='unsatisfied' id='unsatisfied' />
<label for='unsatisfied'>Unsatisfied</label>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("survey-form.pdf");
Radio buttons with the same name form a group—only one can be selected.
How Do I Create Dropdown Lists?
For selecting from predefined options:
using IronPdf;
// Install via NuGet: Install-Package IronPdf
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
var html = @"
<html>
<body>
<h1>Registration</h1>
<label>Country:</label>
<select name='country'>
<option value=''>Select...</option>
<option value='us'>United States</option>
<option value='uk'>United Kingdom</option>
<option value='ca'>Canada</option>
<option value='au'>Australia</option>
</select>
<br><br>
<label>Department:</label>
<select name='department'>
<option value='sales'>Sales</option>
<option value='support'>Support</option>
<option value='engineering'>Engineering</option>
<option value='marketing'>Marketing</option>
</select>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("registration-form.pdf");
Dropdowns save space while offering many choices.
How Do I Create Multi-Line Text Areas?
For longer responses like comments or descriptions:
using IronPdf;
// Install via NuGet: Install-Package IronPdf
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
var html = @"
<html>
<head>
<style>
textarea {
width: 400px;
height: 150px;
padding: 10px;
border: 1px solid #ccc;
}
</style>
</head>
<body>
<h1>Feedback Form</h1>
<label>Your Comments:</label><br>
<textarea name='comments'></textarea>
<br><br>
<label>Suggestions for Improvement:</label><br>
<textarea name='suggestions'></textarea>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("feedback-form.pdf");
Text areas allow scrolling and multi-line input.
How Do I Add Form Fields Programmatically?
Create fields without HTML using the Form API:
using IronPdf;
// Install via NuGet: Install-Package IronPdf
// Start with a blank or existing PDF
var pdf = new PdfDocument(1); // 1 blank page
// Add text field
var textField = new TextFormField("customerName")
{
X = 100,
Y = 700,
Width = 200,
Height = 25
};
pdf.Form.Add(textField);
// Add checkbox
var checkbox = new CheckBoxFormField("agreeTerms")
{
X = 100,
Y = 650,
Width = 20,
Height = 20
};
pdf.Form.Add(checkbox);
pdf.SaveAs("programmatic-form.pdf");
This gives you precise control over field placement.
How Do I Style Form Fields?
CSS styling affects the appearance:
using IronPdf;
// Install via NuGet: Install-Package IronPdf
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
var html = @"
<html>
<head>
<style>
.form-field {
width: 100%;
padding: 12px;
margin: 8px 0;
border: 2px solid #007bff;
border-radius: 4px;
font-size: 14px;
}
.form-field:focus {
border-color: #0056b3;
outline: none;
}
.checkbox-label {
display: flex;
align-items: center;
gap: 10px;
}
input[type='checkbox'] {
width: 20px;
height: 20px;
}
</style>
</head>
<body>
<h1>Styled Form</h1>
<input type='text' name='name' class='form-field' placeholder='Enter your name' />
<input type='email' name='email' class='form-field' placeholder='Enter your email' />
<div class='checkbox-label'>
<input type='checkbox' name='subscribe' />
<span>Subscribe to newsletter</span>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("styled-form.pdf");
Most CSS properties translate to the PDF form appearance.
How Do I Pre-Fill Form Values?
Set default values:
using IronPdf;
// Install via NuGet: Install-Package IronPdf
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
// Pre-fill via HTML attributes
var html = @"
<form>
<input type='text' name='company' value='Acme Corp' />
<input type='text' name='date' value='" + DateTime.Today.ToString("yyyy-MM-dd") + @"' />
<input type='checkbox' name='premium' checked />
<select name='plan'>
<option value='basic'>Basic</option>
<option value='pro' selected>Professional</option>
<option value='enterprise'>Enterprise</option>
</select>
</form>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("prefilled-form.pdf");
Or set values on existing PDFs:
using IronPdf;
// Install via NuGet: Install-Package IronPdf
var pdf = PdfDocument.FromFile("existing-form.pdf");
// Set field values
pdf.Form.SetFieldValue("customerName", "John Doe");
pdf.Form.SetFieldValue("email", "john@example.com");
pdf.SaveAs("filled-form.pdf");
How Do I Create a Complete Application Form?
Full example with multiple field types:
using IronPdf;
// Install via NuGet: Install-Package IronPdf
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
var html = @"
<html>
<head>
<style>
body { font-family: Arial, sans-serif; padding: 40px; }
h1 { color: #333; }
.section { margin: 20px 0; padding: 15px; border: 1px solid #ddd; }
label { display: block; margin: 10px 0 5px; font-weight: bold; }
input[type='text'], input[type='email'], select, textarea {
width: 100%; padding: 8px; margin-bottom: 10px;
border: 1px solid #ccc; box-sizing: border-box;
}
.inline { display: inline-block; margin-right: 20px; }
</style>
</head>
<body>
<h1>Job Application</h1>
<div class='section'>
<h3>Personal Information</h3>
<label>Full Name:</label>
<input type='text' name='fullName' />
<label>Email:</label>
<input type='email' name='email' />
<label>Phone:</label>
<input type='text' name='phone' />
</div>
<div class='section'>
<h3>Position</h3>
<label>Applying for:</label>
<select name='position'>
<option value=''>Select position...</option>
<option value='developer'>Software Developer</option>
<option value='designer'>UI/UX Designer</option>
<option value='manager'>Project Manager</option>
</select>
<label>Employment Type:</label>
<div class='inline'>
<input type='radio' name='type' value='full' id='full' />
<label for='full' style='display:inline'>Full-time</label>
</div>
<div class='inline'>
<input type='radio' name='type' value='part' id='part' />
<label for='part' style='display:inline'>Part-time</label>
</div>
</div>
<div class='section'>
<h3>Additional Information</h3>
<label>Cover Letter:</label>
<textarea name='coverLetter' rows='6'></textarea>
<input type='checkbox' name='relocate' id='relocate' />
<label for='relocate' style='display:inline'>Willing to relocate</label>
</div>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("job-application.pdf");
This creates a professional, fillable application form.
Quick Reference
| Task | Approach |
|---|---|
| Enable form creation | CreatePdfFormsFromHtml = true |
| Text input | <input type="text" name="..."> |
| Checkbox | <input type="checkbox" name="..."> |
| Radio group | <input type="radio" name="same"> |
| Dropdown | <select name="..."> |
| Pre-fill values |
value="..." attribute or SetFieldValue()
|
PDF forms turn static documents into interactive data collection tools.
For the complete form API, see the IronPDF forms documentation.
Written by Jacob Mellor, CTO at Iron Software. Jacob created IronPDF and leads a team of 50+ engineers building .NET document processing libraries.
Top comments (0)