DEV Community

IronSoftware
IronSoftware

Posted on

Create PDF Forms in C# (.NET Guide)

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");
Enter fullscreen mode Exit fullscreen mode

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");
Enter fullscreen mode Exit fullscreen mode

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");
Enter fullscreen mode Exit fullscreen mode

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");
Enter fullscreen mode Exit fullscreen mode

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");
Enter fullscreen mode Exit fullscreen mode

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");
Enter fullscreen mode Exit fullscreen mode

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");
Enter fullscreen mode Exit fullscreen mode

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");
Enter fullscreen mode Exit fullscreen mode

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");
Enter fullscreen mode Exit fullscreen mode

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");
Enter fullscreen mode Exit fullscreen mode

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");
Enter fullscreen mode Exit fullscreen mode

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)