푸터 콘텐츠로 바로가기
IRONPDF 사용하기

.NET SDK를 사용하여 C#에서 PDF 양식을 생성, 채우고, 추출하는 방법

인터랙티브 PDF 양식은 정적인 문서를 코드로 완전히 생성하고 처리할 수 있는 데이터 수집 도구로 바꿉니다. 환자 등록 포털을 구축하거나, 대출 신청을 자동화하거나, 데이터베이스에서 수천 개의 사전 작성된 준수 양식을 생성하든, IronPDF는 .NET 개발자에게 모든 양식 작업(생성, 필드 채우기, 데이터 추출, 일괄 처리)에 대한 일관된 단일 API를 제공합니다.

이 가이드는 .NET 10 프로젝트에서 직접 사용할 수 있는 C# 코드 예제를 사용하여 이러한 작업을 하나씩 안내합니다.

PDF Forms .NET SDK: C#를 사용하여 IronPDF로 작성 가능한 PDF 생성: 이미지 1 - IronPDF

IronPDF를 어떻게 시작합니까?

IronPDF는 NuGet에서 사용할 수 있으며, 모든 .NET 프로젝트에 추가하는 데 약 1분이 소요됩니다. Visual Studio에서 패키지 관리자 콘솔을 열고 다음을 실행하세요:

Install-Package IronPdf
Install-Package IronPdf
SHELL

NuGet 패키지 관리 GUI에서 IronPdf을(를) 검색하거나, dotnet add package IronPdf을 사용하여 .NET CLI에서 추가할 수 있습니다. 추가 실행 종속성이나 구성 파일이 필요하지 않습니다. 이 라이브러리는 Windows, Linux, macOS, Docker 및 Kubernetes에서 PDF를 렌더링하는 데 필요한 모든 것을 포함하여 제공됩니다.

PDF Forms .NET SDK: C#를 사용하여 IronPDF로 작성 가능한 PDF 생성: 이미지 3 - 설치

패키지는 .NET Framework 4.6.2+와 .NET 8, .NET 9, .NET 10을 포함한 모든 최신 .NET 버전을 대상으로 합니다. Install-Package 후, 파일 상단에 using IronPdf;을 추가하고 첫 번째 PDF 양식 생성을 준비할 수 있습니다.

크로스 플랫폼 배포의 유연성은 프로덕션 환경에서 중요합니다. IronPDF는 애플리케이션이 Windows Server, Linux 컨테이너 또는 Azure Function App을 대상으로 하든지 관계없이 일관되게 실행되며, 동일한 코드가 모든 환경에서 동일한 출력을 생성합니다.

PDF 양식은 무엇으로 구성되나요? AcroForms 이해

코드를 작성하기 전에 무엇을 구축할 것인지 이해하는 것이 도움이 됩니다. AcroForm 명세는 1998년부터 PDF 표준의 일부로서 모든 표준 PDF 뷰어에서 표시하고 완료할 수 있는 대화형 양식 필드를 정의합니다. 이 명세를 참조하세요. AcroForms는 텍스트 필드, 체크박스, 라디오 버튼, 드롭다운 목록, 리스트 박스, 서명 필드를 지원합니다.

AcroForms는 IronPDF가 생성하고 읽는 형식입니다. XFA 폼(오래된 Adobe 독점 형식)과 달리, AcroForms는 Adobe Reader, 브라우저 기반 PDF 뷰어 및 모바일 앱에서 호환성 문제 없이 작동합니다. IronPDF로 PDF 양식을 생성하면 모든 뷰어가 열 수 있는 표준 준수 AcroForm PDF가 출력됩니다.

각 양식 필드는 이름, 유형, 값을 가집니다. 이름은 프로그래밍적으로 데이터를 읽거나 쓸 때 사용하는 키입니다. 필드 이름은 문서 내에서 고유해야 하며 이름과 정확히 일치하지 않으면 작성이 조용히 무시됩니다. 이는 데이터베이스 스키마에서 양식을 채울 때 일반적인 버그의 원인입니다.

필드 유형은 수락되는 값을 결정합니다. 텍스트 필드는 모든 문자열을 수용합니다. 체크박스는 '예' 또는 '아니오'를 수용합니다. 라디오 버튼은 선택된 옵션의 문자열 값을 수용합니다. 드롭다운은 선택된 항목의 문자열 값을 수용하며, 이는 필드가 생성될 때 정의된 옵션 중 하나여야 합니다.

HTML로 PDF 양식을 어떻게 만드나요?

채울 수 있는 PDF 양식을 빠르게 작성하는 방법은 표준 HTML로 작성하고 변환하는 것입니다. 모든 HTML 폼 요소는 AcroForm의 동등한 것으로 직접 매핑됩니다: <input type="text">은(는) 텍스트 필드로, <input type="checkbox">은(는) 체크박스로, <select>은(는) 드롭다운으로, <textarea>은(는) 다중 행 텍스트 필드로 변환됩니다.

렌더러의 RenderingOptions에서 CreatePdfFormsFromHtml = true을 설정하여 폼 생성을 활성화하십시오. 그 플래그가 없으면 HTML 폼 요소가 정적 시각 콘텐츠로 렌더링됩니다. PDF에서 볼 수는 있지만 대화형 필드는 아닙니다.

using IronPdf;

// HTML with form elements for PDF generation
string formHtml = @"
<html>
<body>
    <h2>Customer Registration</h2>
    <form>
        <label>Full Name:</label><br/>
        <input type='text' name='fullName'><br/>
        <label>Email Address:</label><br/>
        <input type='email' name='email'><br/>
        <label>Account Type:</label><br/>
        <select name='accountType'>
            <option value='personal'>Personal</option>
            <option value='business'>Business</option>
        </select><br/>
        <label>Newsletter:</label><br/>
        <input type='checkbox' name='newsletter' value='yes'>Subscribe<br/>
        <label>Comments:</label><br/>
        <textarea name='comments' rows='4' style='width:300px'></textarea>
    </form>
</body>
</html>";

// Enable form field generation from HTML
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

// Render and save the PDF with interactive fields
PdfDocument pdf = renderer.RenderHtmlAsPdf(formHtml);
pdf.SaveAs("registration-form.pdf");
using IronPdf;

// HTML with form elements for PDF generation
string formHtml = @"
<html>
<body>
    <h2>Customer Registration</h2>
    <form>
        <label>Full Name:</label><br/>
        <input type='text' name='fullName'><br/>
        <label>Email Address:</label><br/>
        <input type='email' name='email'><br/>
        <label>Account Type:</label><br/>
        <select name='accountType'>
            <option value='personal'>Personal</option>
            <option value='business'>Business</option>
        </select><br/>
        <label>Newsletter:</label><br/>
        <input type='checkbox' name='newsletter' value='yes'>Subscribe<br/>
        <label>Comments:</label><br/>
        <textarea name='comments' rows='4' style='width:300px'></textarea>
    </form>
</body>
</html>";

// Enable form field generation from HTML
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

// Render and save the PDF with interactive fields
PdfDocument pdf = renderer.RenderHtmlAsPdf(formHtml);
pdf.SaveAs("registration-form.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

각 HTML 입력의 name 속성은 PDF 내 필드 이름이 됩니다. 그 이름은 나중에 프로그래밍적으로 필드 값을 읽거나 쓸 때 사용하는 것입니다. 데이터 모델과 일치하는 이름을 선택하세요. 데이터베이스 객체에서 이 양식을 채울 계획이라면 필드를 객체의 속성에 따라 이름을 지정하세요.

출력

PDF Forms .NET SDK: C#를 사용하여 IronPDF로 작성 가능한 PDF 생성: 이미지 4 - PDF 출력

텍스트 입력 및 textarea는 편집 가능한 텍스트 필드로 렌더링됩니다. 일치하는 name 속성을 가진 라디오 버튼은 그룹으로 묶여 하나만 선택할 수 있습니다. 체크박스는 토글 가능한 필드로 렌더링됩니다. 결과 PDF는 모든 표준 뷰어에서 모든 양식 필드를 완료할 준비가 된 상태로 열립니다.

이 HTML 기반 방법은 양식 디자인이 이미 웹 페이지로 존재하거나, 팀이 마크업으로 양식을 유지관리하기를 선호하거나, 응용 프로그램의 기존 HTML 템플릿과 정확히 일치하는 양식을 생성해야 할 때 잘 작동합니다. 렌더러가 모든 PDF 명세 세부 사항을 처리합니다.

PDF Forms .NET SDK: C#를 사용하여 IronPDF로 작성 가능한 PDF 생성: 이미지 5 - 기능

PDF에 프로그래밍적으로 양식 필드를 어떻게 추가합니까?

정확한 좌표 제어가 필요하거나 기존 PDF 문서에 양식 필드를 추가할 때, 프로그래밍적 양식 필드 API는 각 필드의 위치, 크기 및 기본값에 대한 직접 제어 권한을 제공합니다.

명확한 페이지 좌표와 함께 필드 객체를 생성하세요. 원점 (0, 0)은 페이지의 좌하단에 있으며, x는 오른쪽으로 증가하고 y는 위쪽으로 증가합니다 - PDF 명세서 전반에서 사용되는 동일한 좌표 시스템입니다.

using IronPdf;
using IronSoftware.Forms;

// Generate a base PDF document to add fields to
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(
    "<h1>Application Form</h1><p>Please complete all fields below.</p>");

// Text field: name, default value, page index, x, y, width, height
var nameField = new TextFormField("applicantName", "", 0, 50, 700, 200, 20);
pdf.Form.Add(nameField);

// Checkbox field with default unchecked state
var termsCheckbox = new CheckboxFormField("agreeTerms", "no", 0, 50, 650, 15, 15);
pdf.Form.Add(termsCheckbox);

// Dropdown with a defined list of options
var departmentCombo = new ComboboxFormField(
    "department", "", 0, 50, 600, 150, 20,
    new List<string> { "Engineering", "Marketing", "Sales", "Support" });
pdf.Form.Add(departmentCombo);

// Save the output document
pdf.SaveAs("application-with-fields.pdf");
using IronPdf;
using IronSoftware.Forms;

// Generate a base PDF document to add fields to
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(
    "<h1>Application Form</h1><p>Please complete all fields below.</p>");

// Text field: name, default value, page index, x, y, width, height
var nameField = new TextFormField("applicantName", "", 0, 50, 700, 200, 20);
pdf.Form.Add(nameField);

// Checkbox field with default unchecked state
var termsCheckbox = new CheckboxFormField("agreeTerms", "no", 0, 50, 650, 15, 15);
pdf.Form.Add(termsCheckbox);

// Dropdown with a defined list of options
var departmentCombo = new ComboboxFormField(
    "department", "", 0, 50, 600, 150, 20,
    new List<string> { "Engineering", "Marketing", "Sales", "Support" });
pdf.Form.Add(departmentCombo);

// Save the output document
pdf.SaveAs("application-with-fields.pdf");
Imports IronPdf
Imports IronSoftware.Forms

' Generate a base PDF document to add fields to
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Application Form</h1><p>Please complete all fields below.</p>")

' Text field: name, default value, page index, x, y, width, height
Dim nameField As New TextFormField("applicantName", "", 0, 50, 700, 200, 20)
pdf.Form.Add(nameField)

' Checkbox field with default unchecked state
Dim termsCheckbox As New CheckboxFormField("agreeTerms", "no", 0, 50, 650, 15, 15)
pdf.Form.Add(termsCheckbox)

' Dropdown with a defined list of options
Dim departmentCombo As New ComboboxFormField("department", "", 0, 50, 600, 150, 20, New List(Of String) From {"Engineering", "Marketing", "Sales", "Support"})
pdf.Form.Add(departmentCombo)

' Save the output document
pdf.SaveAs("application-with-fields.pdf")
$vbLabelText   $csharpLabel

TextFormField은(는) 단일 행 텍스트 입력을 생성합니다. CheckboxFormField은(는) 토글 가능한 체크박스를 배치합니다. ComboboxFormField은(는) 제공된 옵션 목록으로 제한된 드롭다운을 생성합니다. 각 클래스는 탭 순서, 도구 팁 텍스트, 읽기 전용 상태 및 필수 필드 플래그를 설정하는 추가 속성을 노출합니다.

HTML 변환 및 프로그래밍 필드 생성의 두 가지 접근법을 결합할 수 있습니다. 효율적인 템플릿 제어를 위해 HTML에서 기본 레이아웃을 생성한 다음 API를 사용하여 정밀한 위치 지정으로 특수 필드를 추가합니다. 채우기 및 편집 양식 가이드는 사용 가능한 전체 필드 유형을 다룹니다.

PDF Forms .NET SDK: C#를 사용하여 IronPDF로 작성 가능한 PDF 생성: 이미지 6 - PDF Forms .NET SDK - IronPDF

기존 PDF 양식을 어떻게 채우나요?

많은 워크플로우는 이미 존재하는 정부 양식, 벤더 계약서, 또는 파트너의 표준화된 응용 양식과 함께 시작됩니다. 이 양식을 프로그래밍 방식으로 채우면 원래 디자인을 재창조하지 않고도 문서 생성을 자동화할 수 있습니다.

PdfDocument.FromFile으로 기존 PDF를 로드하고 FindFormField을 사용하여 이름으로 각 필드를 찾아 해당 필드의 Value 속성에 값을 할당합니다.

using IronPdf;

// Load the existing PDF containing AcroForm fields
PdfDocument pdf = PdfDocument.FromFile("existing-application.pdf");

// Fill text fields by exact field name
var nameField = pdf.Form.FindFormField("applicantName");
nameField.Value = "Sarah Johnson";

var emailField = pdf.Form.FindFormField("email");
emailField.Value = "sarah.johnson@example.com";

// Set checkbox and radio button values
var termsField = pdf.Form.FindFormField("agreeTerms");
termsField.Value = "Yes";

var accountTypeField = pdf.Form.FindFormField("accountType");
accountTypeField.Value = "business";

// Set dropdown selection to one of its defined options
var departmentField = pdf.Form.FindFormField("department");
departmentField.Value = "Engineering";

// Save the completed form
pdf.SaveAs("completed-application.pdf");
using IronPdf;

// Load the existing PDF containing AcroForm fields
PdfDocument pdf = PdfDocument.FromFile("existing-application.pdf");

// Fill text fields by exact field name
var nameField = pdf.Form.FindFormField("applicantName");
nameField.Value = "Sarah Johnson";

var emailField = pdf.Form.FindFormField("email");
emailField.Value = "sarah.johnson@example.com";

// Set checkbox and radio button values
var termsField = pdf.Form.FindFormField("agreeTerms");
termsField.Value = "Yes";

var accountTypeField = pdf.Form.FindFormField("accountType");
accountTypeField.Value = "business";

// Set dropdown selection to one of its defined options
var departmentField = pdf.Form.FindFormField("department");
departmentField.Value = "Engineering";

// Save the completed form
pdf.SaveAs("completed-application.pdf");
Imports IronPdf

' Load the existing PDF containing AcroForm fields
Dim pdf As PdfDocument = PdfDocument.FromFile("existing-application.pdf")

' Fill text fields by exact field name
Dim nameField = pdf.Form.FindFormField("applicantName")
nameField.Value = "Sarah Johnson"

Dim emailField = pdf.Form.FindFormField("email")
emailField.Value = "sarah.johnson@example.com"

' Set checkbox and radio button values
Dim termsField = pdf.Form.FindFormField("agreeTerms")
termsField.Value = "Yes"

Dim accountTypeField = pdf.Form.FindFormField("accountType")
accountTypeField.Value = "business"

' Set dropdown selection to one of its defined options
Dim departmentField = pdf.Form.FindFormField("department")
departmentField.Value = "Engineering"

' Save the completed form
pdf.SaveAs("completed-application.pdf")
$vbLabelText   $csharpLabel

FindFormField은(는) 폼 생성 시 할당된 이름으로 필드를 찾습니다. 필드 이름 일치에는 대소문자를 구분하며 정확해야 합니다. 'applicantName'과 'ApplicantName'은 서로 다른 필드입니다. 타사 폼을 작성 중이며 필드 이름이 확실하지 않으면, pdf.Form을 반복하여 이름으로 작성해보기 전에 각 필드의 이름을 출력합니다.

입력

PDF Forms .NET SDK: C#를 사용하여 IronPDF로 작성 가능한 PDF 생성: 이미지 7 - 샘플 PDF 입력

출력

PDF Forms .NET SDK: C#를 사용하여 IronPDF로 작성 가능한 PDF 생성: 이미지 8 - 채워진 PDF 출력

다른 필드 유형은 적절한 값 형식을 요구합니다. 텍스트 필드는 모든 문자열을 허용합니다. 체크박스는 '예' 또는 '아니오'를 수용합니다. 라디오 버튼은 원하는 옵션의 문자열 값을 허용합니다. 드롭다운은 정의된 옵션 중 하나의 문자열 값을 허용합니다. 옵션 목록에 없는 값을 설정해도 효과가 없습니다.

필드가 많은 폼을 처리할 때 pdf.Form을 직접 반복하는 것이 FindFormField을 반복해서 호출하는 것보다 낫습니다. 반복 처리는 대량 작업에 더 효율적이며 필드 모음을 통한 반복적인 선형 검색을 피합니다.

양식 필드 데이터를 읽고 추출하는 방법은 무엇입니까?

제출된 PDF의 양식 데이터 추출하기는 반대 작업으로, 완료된 양식을 로드한 다음 각 필드의 이름과 현재 값을 읽어 후속 처리를 합니다. 이 패턴은 사용자가 PDF 양식을 작성하고 업로드하며, 애플리케이션이 수동 데이터 입력 없이 데이터를 처리하는 자동 수집 워크플로우를 가능하게 합니다.

using IronPdf;

// Load the completed, submitted PDF form
PdfDocument pdf = PdfDocument.FromFile("submitted-form.pdf");

// Iterate all fields to extract names, values, and types
Console.WriteLine("Form Data Extraction:");
Console.WriteLine("----------------------");
foreach (var field in pdf.Form)
{
    Console.WriteLine($"Field: {field.Name}");
    Console.WriteLine($"Value: {field.Value}");
    Console.WriteLine($"Type:  {field.GetType().Name}");
    Console.WriteLine();
}

// Or retrieve specific fields for targeted processing
var customerName  = pdf.Form.FindFormField("applicantName")?.Value ?? "Not provided";
var customerEmail = pdf.Form.FindFormField("email")?.Value ?? "Not provided";
Console.WriteLine($"Customer: {customerName} ({customerEmail})");
using IronPdf;

// Load the completed, submitted PDF form
PdfDocument pdf = PdfDocument.FromFile("submitted-form.pdf");

// Iterate all fields to extract names, values, and types
Console.WriteLine("Form Data Extraction:");
Console.WriteLine("----------------------");
foreach (var field in pdf.Form)
{
    Console.WriteLine($"Field: {field.Name}");
    Console.WriteLine($"Value: {field.Value}");
    Console.WriteLine($"Type:  {field.GetType().Name}");
    Console.WriteLine();
}

// Or retrieve specific fields for targeted processing
var customerName  = pdf.Form.FindFormField("applicantName")?.Value ?? "Not provided";
var customerEmail = pdf.Form.FindFormField("email")?.Value ?? "Not provided";
Console.WriteLine($"Customer: {customerName} ({customerEmail})");
Imports IronPdf

' Load the completed, submitted PDF form
Dim pdf As PdfDocument = PdfDocument.FromFile("submitted-form.pdf")

' Iterate all fields to extract names, values, and types
Console.WriteLine("Form Data Extraction:")
Console.WriteLine("----------------------")
For Each field In pdf.Form
    Console.WriteLine($"Field: {field.Name}")
    Console.WriteLine($"Value: {field.Value}")
    Console.WriteLine($"Type:  {field.GetType().Name}")
    Console.WriteLine()
Next

' Or retrieve specific fields for targeted processing
Dim customerName As String = If(pdf.Form.FindFormField("applicantName")?.Value, "Not provided")
Dim customerEmail As String = If(pdf.Form.FindFormField("email")?.Value, "Not provided")
Console.WriteLine($"Customer: {customerName} ({customerEmail})")
$vbLabelText   $csharpLabel

Form 속성은 문서 내의 모든 필드의 열거 가능한 컬렉션을 노출합니다. 각 필드 객체는 자신의 Name, 현재 Value 및 유형 정보를 제공합니다. 일반적인 양식 프로세서는 하드 코딩된 필드 이름 없이도 모든 PDF 양식 구조를 처리하기 위해 이 패턴을 사용합니다.

출력

PDF Forms .NET SDK: C#를 사용하여 IronPDF로 작성 가능한 PDF 생성: 이미지 9 - 콘솔 출력

널 조건부 연산자 ?.은(는) FindFormField에서 예상된 필드가 없는 경우를 처리합니다 - 여러 출처의 폼을 처리할 때 유용하며, 각기 약간 다른 필드 구조를 가질 수 있습니다. 필드가 존재한다고 가정하지 말고 항상 대체 값이나 null 확인을 제공하세요.

추출된 데이터는 데이터베이스 쓰기를 위한 Entity Framework 또는 ADO.NET, API 응답을 위한 JSON 직렬화, 보고를 위한 CSV 생성과 직접 통합됩니다. IronPDF와 IronOCR을 함께 사용하면 디지털로 채워지지 않은 스캔이나 이미지 기반 양식 제출에서 데이터를 추출할 수 있습니다.

개인화된 양식을 대량으로 생성하는 방법은 무엇입니까?

PDF 양식 자동화에서 가장 많은 볼륨의 사용 사례는 배치 생성입니다. 데이터베이스, API, 또는 CSV 파일의 데이터를 통해 사전에 채워진 수백 또는 수천 개의 양식을 생성합니다. 단순한 반복문으로 이를 처리하며 추가 인프라가 필요하지 않습니다.

using IronPdf;

// Retrieve customer records from your data source
var customers = GetCustomersFromDatabase();

ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

foreach (var customer in customers)
{
    // Build an HTML template with static data pre-filled and interactive fields for user input
    string formHtml = $@"
    <html><body>
        <h2>Annual Review Form</h2>
        <p>Customer: {customer.Name}</p>
        <p>Account:  {customer.AccountNumber}</p>
        <label>Satisfaction Rating (1-5):</label><br/>
        <input type='text' name='rating' maxlength='1'><br/>
        <label>Feedback:</label><br/>
        <textarea name='feedback' rows='5' style='width:100%'></textarea>
    </body></html>";

    PdfDocument pdf = renderer.RenderHtmlAsPdf(formHtml);
    pdf.SaveAs($"review-form-{customer.AccountNumber}.pdf");
}
using IronPdf;

// Retrieve customer records from your data source
var customers = GetCustomersFromDatabase();

ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

foreach (var customer in customers)
{
    // Build an HTML template with static data pre-filled and interactive fields for user input
    string formHtml = $@"
    <html><body>
        <h2>Annual Review Form</h2>
        <p>Customer: {customer.Name}</p>
        <p>Account:  {customer.AccountNumber}</p>
        <label>Satisfaction Rating (1-5):</label><br/>
        <input type='text' name='rating' maxlength='1'><br/>
        <label>Feedback:</label><br/>
        <textarea name='feedback' rows='5' style='width:100%'></textarea>
    </body></html>";

    PdfDocument pdf = renderer.RenderHtmlAsPdf(formHtml);
    pdf.SaveAs($"review-form-{customer.AccountNumber}.pdf");
}
Imports IronPdf

' Retrieve customer records from your data source
Dim customers = GetCustomersFromDatabase()

Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.CreatePdfFormsFromHtml = True

For Each customer In customers
    ' Build an HTML template with static data pre-filled and interactive fields for user input
    Dim formHtml As String = $"
    <html><body>
        <h2>Annual Review Form</h2>
        <p>Customer: {customer.Name}</p>
        <p>Account:  {customer.AccountNumber}</p>
        <label>Satisfaction Rating (1-5):</label><br/>
        <input type='text' name='rating' maxlength='1'><br/>
        <label>Feedback:</label><br/>
        <textarea name='feedback' rows='5' style='width:100%'></textarea>
    </body></html>"

    Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(formHtml)
    pdf.SaveAs($"review-form-{customer.AccountNumber}.pdf")
Next
$vbLabelText   $csharpLabel

HTML 템플릿은 정적 고객 데이터를 직접 포함하여, 수신자가 이름과 계정 번호를 사전 인쇄된 형태로 볼 수 있게 하고 제공해야 할 데이터에 대해 상호작용하는 필드를 제공합니다. 수백 개의 기록을 배치 처리하면 수작업 준비에 필요한 시간 대신 초 단위로 완료됩니다.

루프 구조는 Entity Framework 쿼리, API 응답, 또는 CSV 가져오기 등 모든 데이터 소스와 함께 작동합니다. 각 반복은 해당 기록에 맞게 맞춤화된 완전한 상태의 배포 준비가 된 PDF를 생성합니다. 고처리량 시나리오에서는 await과(와) Task.WhenAll을 병행하여 폼을 렌더링하십시오 - IronPDF의 RenderHtmlAsPdfAsync 메서드는 완전한 비동기 렌더링을 지원합니다.

배치 생성 후, 양식은 종종 IronZIP을 사용하여 배포를 위한 ZIP 아카이브로 패키징되거나 이메일 통합을 통해 전송되거나, 클라우드 스토리지에 업로드되거나, 완료 바인딩을 위한 전자 서명 플랫폼으로 라우팅됩니다.

양식 완료 후 PDF 양식을 평면화 또는 잠그는 방법은 무엇입니까?

양식이 완전히 작성 및 검증되면 값이 더 이상 편집될 수 없도록 잠가야 하는 경우가 많습니다. 평면화는 모든 상호작용 가능한 양식 필드를 정적으로, 편집할 수 없는 시각적 콘텐츠로 변환하면서 완료된 양식의 정확한 외관을 유지합니다.

using IronPdf;

// Load a completed, signed form
PdfDocument pdf = PdfDocument.FromFile("completed-application.pdf");

// Flatten all form fields - converts interactive fields to static content
pdf.Form.Flatten();

// Save the locked, non-editable version
pdf.SaveAs("locked-application.pdf");
using IronPdf;

// Load a completed, signed form
PdfDocument pdf = PdfDocument.FromFile("completed-application.pdf");

// Flatten all form fields - converts interactive fields to static content
pdf.Form.Flatten();

// Save the locked, non-editable version
pdf.SaveAs("locked-application.pdf");
Imports IronPdf

' Load a completed, signed form
Dim pdf As PdfDocument = PdfDocument.FromFile("completed-application.pdf")

' Flatten all form fields - converts interactive fields to static content
pdf.Form.Flatten()

' Save the locked, non-editable version
pdf.SaveAs("locked-application.pdf")
$vbLabelText   $csharpLabel

평면화는 완료된 양식을 아카이브하고, 장기 저장을 위한 PDF/A 규격 문서를 생성하며, 배포를 위한 최종 본을 만드는 올바른 방법입니다. 평면화 후에도 양식 데이터는 여전히 보이지만 수정할 수 없습니다. PDF 평면화 가이드는 선택적 필드 평면화를 포함한 추가 평면화 옵션을 다룹니다.

법적으로 완결되야 하는 시나리오의 경우, IronPDF는 디지털 서명(연결 방법)을 지원하며, 이는 서명자의 신원을 문서에 암호화적으로 결합합니다. 디지털 서명 및 양식 평면화는 서로 다른 목적을 제공합니다 - 서명은 진위를 증명하고, 평면화는 수정을 방지합니다.

다음 단계는 무엇입니까?

.NET의 PDF 양식은 네 가지 핵심 작업을 다룹니다: HTML로 양식 생성 또는 API를 통한 생성, 데이터 소스로부터 기존 양식을 채우기, 제출된 데이터 추출, 그리고 대량으로 맞춤형 사본 생성. IronPDF는 Windows, Linux, macOS, 컨테이너 내부에서 같은 코드를 실행하여 일관된 API로 네 가지 모두를 처리합니다.

PDF 양식 생성 방법 가이드는 모든 사용 가능한 필드 유형을 코드 예제와 함께 다룹니다. 양식 채우기 및 편집 가이드는 대량 필드 업데이트, 라디오 버튼 그룹 및 목록 상자 처리를 심도 있게 다룹니다. IronPDF 문서 허브는 전체 API 참조 및 다중 페이지 양식, 양식 필드 검증 및 고용량 파이프라인을 위한 성능 조정과 같은 고급 주제를 제공합니다.

무료 체험판 시작하기하여 귀하의 프로젝트에서 PDF 양식 기능을 탐색하거나, 라이센스 옵션 검토를 통해 본격적인 배포를 준비하세요.

PDF Forms .NET SDK: C#를 사용하여 IronPDF로 작성 가능한 PDF 생성: 이미지 10 - 라이선스

자주 묻는 질문

IronPDF에서 사용하는 PDF 양식 표준은 무엇입니까?

IronPDF는 1998년부터 PDF 명세에 정의된 대화형 양식 표준인 AcroForms를 생성하고 읽습니다. AcroForms는 Adobe Reader, 브라우저 기반 PDF 뷰어 및 모바일 앱에서 지원됩니다. 호환성이 제한된 이전 XFA 형식과는 다릅니다.

IronPDF에서 HTML로부터 양식 필드 생성은 어떻게 활성화합니까?

`renderer.RenderingOptions.CreatePdfFormsFromHtml = true`를 `RenderHtmlAsPdf` 호출 전 설정하세요. 이 플래그 없이 HTML 양식 요소는 대화형 AcroForm 필드 대신 정적 시각적 콘텐츠로 렌더링됩니다.

기존 PDF 양식의 특정 필드를 어떻게 작성합니까?

`PdfDocument.FromFile`로 PDF를 로드하고 `pdf.Form.FindFormField("fieldName")`를 호출하여 필드 객체를 가져오고, 그 `Value` 속성에 문자열을 할당하세요. 필드 이름 매칭은 대소문자를 구분합니다. `pdf.SaveAs`로 결과를 저장하세요.

제출된 PDF에서 모든 양식 필드 값을 어떻게 추출합니까?

`pdf.Form`을 `foreach (var field in pdf.Form)`로 반복하며 각 필드의 `Name` 및 `Value` 속성을 읽으세요. 목표한 추출을 위해 `pdf.Form.FindFormField("name")?.Value`를 사용하여, 누락된 필드를 안전하게 처리하세요.

IronPDF는 데이터베이스에서 루프로 수백 개의 양식을 생성할 수 있습니까?

네. `ChromePdfRenderer`를 `CreatePdfFormsFromHtml = true`와 함께 생성하고, 데이터 기록을 반복하며 각 기록마다 HTML 문자열을 작성하고 `RenderHtmlAsPdf`를 호출하고 각 결과를 저장하세요. 높은 처리량을 위해 `RenderHtmlAsPdfAsync`와 `Task.WhenAll`을 사용하여 병렬 렌더링을 수행하세요.

PDF 양식을 평면화하면 무엇이 변합니까?

평면화는 모든 대화형 양식 필드를 정적, 편집 불가능한 시각적 콘텐츠로 변환하면서 채워진 양식의 정확한 외관을 유지합니다. `pdf.Form.Flatten()`을 호출한 후 저장하세요. 그 결과는 아카이브, PDF/A 준수 및 필드 편집 방지 배포에 적합합니다.

IronPDF는 Linux 및 Docker 컨테이너에서 작동합니까?

네. IronPDF는 Windows, Linux, macOS, Docker 및 Kubernetes에서 실행됩니다. 동일한 C# 코드는 모든 플랫폼에서 동일한 PDF 출력을 생성합니다. 플랫폼별 설정을 위해 문서에서 IronPDF Linux 및 Docker 가이드를 참조하세요.

IronPDF가 PDF 양식을 지원하는 플랫폼과 .NET 버전은 무엇입니까?

IronPDF는 .NET Framework 4.6.2 이상 및 .NET 6, .NET 7, .NET 8, .NET 9, .NET 10을 포함한 최신 .NET 버전을 지원합니다. 또한 ASP.NET, ASP.NET Core, Blazor Server, Azure Functions, MAUI 응용 프로그램을 지원합니다.

커티스 차우
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해