跳過到頁腳內容
使用IRONPDF

如何使用.NET SDK在C#中創建、填寫和提取PDF表單

互動式 PDF 表單能將靜態文件轉化為資料收集工具,讓您完全透過程式碼來建立與處理。 無論是建置病患登記入口網站、自動化貸款申請流程,還是從資料庫生成數千份預填妥的合規表單,IronPDF 皆為 .NET 開發人員提供單一且一致的 API,以處理所有表單相關任務——包含表單建立、欄位填入、資料擷取及批次處理。

本指南將透過可直接套用至 .NET 10 專案的 C# 程式碼範例,逐步引導您完成各項任務。

PDF Forms .NET SDK:使用 IronPDF 在 C# 中建立可填寫的 PDF:圖片 1 - IronPDF

如何開始使用 IronPDF?

IronPDF 可在 NuGet 上取得,並只需約一分鐘即可新增至任何 .NET 專案中。 在 Visual Studio 中開啟套件管理員控制台並執行:

Install-Package IronPdf
Install-Package IronPdf
SHELL

您也可以在 NuGet 套件管理器 GUI 中搜尋IronPdf ,或使用 .NET CLI 新增它 dotnet add package IronPdf。 無需額外的執行時依賴項或設定檔——此函式庫已內建所有必要元件,可在 Windows、Linux、macOS、Docker 及 Kubernetes 環境中渲染 PDF 檔案。

PDF Forms .NET SDK:使用 IronPDF 在 C# 中建立可填寫的 PDF:圖片 3 - 安裝

此軟體套件適用於 .NET Framework 4.6.2+ 和所有現代 .NET 版本,包括 .NET 8、.NET 9 和 .NET 10。安裝軟體包後,在文件頂部新增 using IronPdf;,即可產生您的第一個 PDF 表單。

在生產環境中,跨平台部署的靈活性至關重要。 無論您的應用程式目標是 Windows Server、Linux 容器或 Azure Function App,IronPDF 都能穩定運行——相同的程式碼在每個環境中都會產生相同的輸出結果。

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> 變成下拉式列表,@@--CODE-26560--@@ 變成多行文字欄位。

透過在渲染器的 @@--CODE-26562--@@ 上設定 @@--CODE-26561--@@ 來啟用表單建立。 若未啟用該標記,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:使用 IronPDF 在 C# 中建立可填寫的 PDF:圖片 4 - PDF 輸出

文字輸入欄位和文字區域將顯示為可編輯的文字欄位。 具有匹配 name 屬性的單選按鈕會組合在一起,因此只能選擇一個。 核取方塊會顯示為可切換的欄位。 生成的 PDF 檔案可在任何標準檢視器中開啟,且所有表單欄位皆已預先設定好,可直接填寫。

當表單設計已存在於網頁中、您的團隊傾向於以標記語言維護表單,或您需要生成與應用程式現有 HTML 範本完全匹配的表單時,這種基於 HTML 的方法效果極佳。 渲染器負責處理所有 PDF 規格的細節。

PDF Forms .NET SDK:使用 IronPDF 在 C# 中建立可填寫的 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 建立一個僅限於所提供選項清單的下拉清單。每個類別都公開了用於設定 Tab 鍵順序、工具提示文字、唯讀狀態和必填欄位標誌的附加屬性。

這兩種方法——HTML 轉換與程式化欄位建立——皆可結合使用。 先從 HTML 生成基礎佈局以實現高效的範本控制,再透過 API 添加精準定位的專用欄位。 《表單填寫與編輯指南》涵蓋了所有可用的欄位類型。

PDF Forms .NET SDK:使用 IronPDF 在 C# 中建立可填寫的 PDF:Image 6 - PDF Forms .NET SDK - IronPDF

如何填寫現有的 PDF 表單?

許多工作流程都始於現有的 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:使用 IronPDF 在 C# 中建立可填寫的 PDF:圖片 7 - PDF 輸入範例

輸出

PDF Forms .NET SDK:使用 IronPDF 在 C# 中建立可填寫的 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:使用 IronPDF 在 C# 中建立可填寫的 PDF:圖片 9 - 控制台輸出

空條件運算子 ?. on FindFormField 處理預期欄位缺失的情況 - 在處理來自多個來源的表單時非常有用,這些表單可能具有略微不同的欄位結構。 請務必提供備用值或進行 null 檢查,切勿預設該欄位必然存在。

擷取的資料可直接與 Entity Framework 或 ADO.NET Framework 整合,用於資料庫寫入,並透過 JSON 序列化處理 API 回應,以及生成 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 檔案。 對於高吞吐量場景,使用 async/awaitTask.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 Core 中的 PDF 表單涵蓋四項核心操作:從 HTML 或透過 API 建立表單、從資料來源填寫現有表單、擷取已提交的資料,以及大規模批次產生個人化副本。 IronPDF 透過一致的 API 處理這四項功能,相同的程式碼可在 Windows、Linux、macOS 以及容器環境中運行。

建立 PDF 表單操作指南涵蓋了所有可用的欄位類型,並附有程式碼範例。 《表單填寫與編輯指南》將深入探討批次欄位更新、單選按鈕群組以及下拉式清單的處理方式。 IronPDF 文件中心提供完整的 API 參考指南及進階主題,包括多頁表單、表單欄位驗證,以及針對高流量處理流程的效能調校。

立即開始免費試用,在您的專案中探索 PDF 表單功能,或查看生產環境部署的授權選項

PDF Forms .NET SDK:使用 IronPDF 在 C# 中建立可填寫的 PDF:圖片 10 - 授權

常見問題解答

IronPDF使用的是什麼PDF表單標準?

IronPDF創建和讀取AcroForms——這是從1998年PDF規範中定義的交互式表單標準。AcroForms得到Adobe Reader、基於瀏覽器的PDF查看器和移動應用的支持,而較舊的XFA格式則兼容性有限。

如何在IronPDF中啟用從HTML創建表單字段?

在調用`RenderHtmlAsPdf`之前設置`renderer.RenderingOptions.CreatePdfFormsFromHtml = true`。如果沒有此標誌,HTML表單元素將被渲染為靜態的視覺內容,而非交互式AcroForm字段。

如何填寫現有PDF表單中的特定字段?

使用`PdfDocument.FromFile`加載PDF,調用`pdf.Form.FindFormField("fieldName")`檢索字段對象,然後將字符串分配給其`Value`屬性。字段名稱匹配是區分大小寫的。使用`pdf.SaveAs`保存結果。

如何從提交的PDF中提取所有表單字段值?

使用`foreach (var field in pdf.Form)`迭代`pdf.Form`,並閱讀每個字段的`Name`和`Value`屬性。對於有針對性的提取,使用`pdf.Form.FindFormField("name")?.Value`與空條件運算符安全地處理缺失的字段。

IronPDF可以在迴圈中從數據庫生成數百個表單嗎?

可以。創建一個設置了`CreatePdfFormsFromHtml = true`的`ChromePdfRenderer`,迭代您的數據記錄,為每個記錄構建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支持哪些平台和.NET版本的PDF表單?

IronPDF支持.NET Framework 4.6.2及以上,和所有現代.NET版本,包括.NET 6、.NET 7、.NET 8、.NET 9和.NET 10。它還支持ASP.NET、ASP.NET Core、Blazor Server、Azure Functions和MAUI應用。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我