最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在.NET平臺使用C#為PDF添加各種類型的表單域的方法

 更新時間:2025年05月03日 09:18:42   作者:Eiceblue  
在日常辦公系統(tǒng)開發(fā)中,涉及 PDF 處理相關(guān)的開發(fā)時,生成可填寫的 PDF 表單是一種常見需求,與靜態(tài) PDF 不同,帶有**表單域的文檔支持用戶直接在 PDF 內(nèi)部輸入、勾選、選擇等交互操作,本文將介紹如何使用 C# 為 PDF 添加各種類型的表單域,需要的朋友可以參考下

引言

在日常辦公系統(tǒng)開發(fā)中,涉及 PDF 處理相關(guān)的開發(fā)時,生成可填寫的 PDF 表單是一種常見需求,例如員工信息登記表、用戶注冊表、問卷調(diào)查或協(xié)議確認(rèn)頁等。與靜態(tài) PDF 不同,帶有**表單域(Form Field)**的文檔支持用戶直接在 PDF 內(nèi)部輸入、勾選、選擇等交互操作,極大提升了表單使用體驗。

本文將介紹如何使用 C# 為 PDF 添加各種類型的表單域,包括文本框、下拉框、復(fù)選框、單選框、列表框和按鈕,并通過完整示例演示如何將這些域組合成一個實際可用的表單頁。

本文所使用的方法需要用到Free Spire.PDF for .NET,NuGet安裝:PM> Install-Package FreeSpire.PDF

使用 PdfTextBoxField 添加文本輸入域

PdfTextBoxField 表示文本輸入域,適用于姓名、地址、日期等自由輸入內(nèi)容。

PdfTextBoxField textBox = new PdfTextBoxField(page, "textBox");
textBox.Bounds = new RectangleF(100, 50, 150, 20);
textBox.Text = "Enter your name";
textBox.Font = new PdfFont(PdfFontFamily.Helvetica, 12f);
doc.Form.Fields.Add(textBox);

使用 PdfComboBoxField 添加下拉選擇域

PdfComboBoxField 是用于顯示可選列表的下拉框,適合性別、部門、國籍等字段。

PdfComboBoxField comboBox = new PdfComboBoxField(page, "comboBox");
comboBox.Bounds = new RectangleF(100, 110, 150, 20);
comboBox.Items.Add(new PdfListFieldItem("Option A", "A"));
comboBox.Items.Add(new PdfListFieldItem("Option B", "B"));
comboBox.Items.Add(new PdfListFieldItem("Option C", "C"));
comboBox.SelectedIndex = 0;
comboBox.Font = new PdfFont(PdfFontFamily.Helvetica, 12f);
doc.Form.Fields.Add(comboBox);

使用 PdfCheckBoxField 添加復(fù)選框域

PdfCheckBoxField 表示復(fù)選框,適用于“是否同意”、“是否接收通知”等二元布爾選項。

PdfCheckBoxField checkBox = new PdfCheckBoxField(page, "checkBox");
checkBox.Bounds = new RectangleF(100, 80, 15, 15);
checkBox.Checked = false;
doc.Form.Fields.Add(checkBox);

綜合示例:包含所有類型表單域的 PDF 表單

以下代碼創(chuàng)建了一個“用戶信息登記表”,整合了所有常見表單域類型,包括文本框、下拉框、復(fù)選框、列表框、單選按鈕和按鈕。

using Spire.Pdf;
using Spire.Pdf.Actions;
using Spire.Pdf.Fields;
using Spire.Pdf.Graphics;
using System.Drawing;

class Program
{
    static void Main(string[] args)
    {
        // 創(chuàng)建文檔和頁面
        PdfDocument doc = new PdfDocument();
        PdfPageBase page = doc.Pages.Add();

        // 坐標(biāo)和樣式初始化
        float baseX = 100;
        float baseY = 30;
        PdfSolidBrush titleBrush = new PdfSolidBrush(new PdfRGBColor(Color.Blue));
        PdfSolidBrush labelBrush = new PdfSolidBrush(new PdfRGBColor(Color.Black));
        PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 12f, PdfFontStyle.Regular);

        // 文本框
        page.Canvas.DrawString("TextBox:", font, titleBrush, new PointF(10, baseY));
        RectangleF textBoxBounds = new RectangleF(baseX, baseY, 150, 15);
        PdfTextBoxField textBox = new PdfTextBoxField(page, "textbox");
        textBox.Bounds = textBoxBounds;
        textBox.Text = "Hello World";
        textBox.Font = font;
        doc.Form.Fields.Add(textBox);
        baseY += 25;

        // 復(fù)選框
        page.Canvas.DrawString("CheckBox:", font, titleBrush, new PointF(10, baseY));
        RectangleF checkBox1Bounds = new RectangleF(baseX, baseY, 15, 15);
        PdfCheckBoxField checkBox1 = new PdfCheckBoxField(page, "checkbox1");
        checkBox1.Bounds = checkBox1Bounds;
        checkBox1.Checked = false;
        page.Canvas.DrawString("Option 1", font, labelBrush, new PointF(baseX + 20, baseY));

        RectangleF checkBox2Bounds = new RectangleF(baseX + 70, baseY, 15, 15);
        PdfCheckBoxField checkBox2 = new PdfCheckBoxField(page, "checkbox2");
        checkBox2.Bounds = checkBox2Bounds;
        checkBox2.Checked = false;
        page.Canvas.DrawString("Option 2", font, labelBrush, new PointF(baseX + 90, baseY));

        doc.Form.Fields.Add(checkBox1);
        doc.Form.Fields.Add(checkBox2);
        baseY += 25;

        // 下拉列表框
        page.Canvas.DrawString("ComboBox:", font, titleBrush, new PointF(10, baseY));
        RectangleF comboBoxBounds = new RectangleF(baseX, baseY, 150, 15);
        PdfComboBoxField comboBox = new PdfComboBoxField(page, "combobox");
        comboBox.Bounds = comboBoxBounds;
        comboBox.Items.Add(new PdfListFieldItem("Item 1", "item1"));
        comboBox.Items.Add(new PdfListFieldItem("Item 2", "item2"));
        comboBox.Items.Add(new PdfListFieldItem("Item 3", "item3"));
        comboBox.SelectedIndex = 0;
        comboBox.Font = font;
        doc.Form.Fields.Add(comboBox);
        baseY += 25;

        // 列表框
        page.Canvas.DrawString("ListBox:", font, titleBrush, new PointF(10, baseY));
        RectangleF listBoxBounds = new RectangleF(baseX, baseY, 150, 50);
        PdfListBoxField listBox = new PdfListBoxField(page, "listbox");
        listBox.Bounds = listBoxBounds;
        listBox.Items.Add(new PdfListFieldItem("Item 1", "item1"));
        listBox.Items.Add(new PdfListFieldItem("Item 2", "item2"));
        listBox.Items.Add(new PdfListFieldItem("Item 3", "item3"));
        listBox.SelectedIndex = 0;
        listBox.Font = font;
        doc.Form.Fields.Add(listBox);
        baseY += 60;

        // 單選按鈕
        page.Canvas.DrawString("RadioButton:", font, titleBrush, new PointF(10, baseY));
        PdfRadioButtonListField radioGroup = new PdfRadioButtonListField(page, "radioGroup");
        PdfRadioButtonListItem radio1 = new PdfRadioButtonListItem("Option1");
        radio1.Bounds = new RectangleF(baseX, baseY, 15, 15);
        page.Canvas.DrawString("Option 1", font, labelBrush, new PointF(baseX + 20, baseY));

        PdfRadioButtonListItem radio2 = new PdfRadioButtonListItem("Option2");
        radio2.Bounds = new RectangleF(baseX + 70, baseY, 15, 15);
        page.Canvas.DrawString("Option 2", font, labelBrush, new PointF(baseX + 90, baseY));

        radioGroup.Items.Add(radio1);
        radioGroup.Items.Add(radio2);
        radioGroup.SelectedIndex = 0;
        doc.Form.Fields.Add(radioGroup);
        baseY += 25;

        // 簽名域
        page.Canvas.DrawString("Signature Field:", font, titleBrush, new PointF(10, baseY));
        RectangleF signatureBounds = new RectangleF(baseX, baseY, 150, 80);
        PdfSignatureField signatureField = new PdfSignatureField(page, "signatureField");
        signatureField.Bounds = signatureBounds;
        doc.Form.Fields.Add(signatureField);
        baseY += 90;

        // 按鈕
        page.Canvas.DrawString("Button:", font, titleBrush, new PointF(10, baseY));
        RectangleF buttonBounds = new RectangleF(baseX, baseY, 50, 15);
        PdfButtonField button = new PdfButtonField(page, "submitButton");
        button.Bounds = buttonBounds;
        button.Text = "Submit";
        button.Font = font;
        PdfSubmitAction submitAction = new PdfSubmitAction("https://www.google.com/");
        submitAction.DataFormat = SubmitDataFormat.Html;
        button.Actions.MouseDown = submitAction;
        doc.Form.Fields.Add(button);

        // 保存文檔
        doc.SaveToFile("FillableForm.pdf", FileFormat.PDF);
        doc.Close();
    }
}

創(chuàng)建結(jié)果

表單域類型一覽

表單域類型說明
PdfTextBoxField文本輸入域,用戶可鍵入任意內(nèi)容
PdfCheckBoxField勾選框,可用于二選一邏輯判斷
PdfComboBoxField下拉選擇域,提供固定選項
PdfListBoxField多項列表,可啟用多選模式
PdfRadioButtonListField單選按鈕組,用戶僅能選一項
PdfButtonField按鈕,可設(shè)定執(zhí)行特定操作

通過以上方式,開發(fā)者可以快速構(gòu)建結(jié)構(gòu)清晰、功能完備的 PDF 表單,實現(xiàn)用戶信息采集、文檔自動化交互等多種應(yīng)用場景。

到此這篇關(guān)于在.NET平臺使用C#為PDF添加各種類型的表單域的方法的文章就介紹到這了,更多相關(guān)C#為PDF添加表單域內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#?AStar尋路算法詳解

    C#?AStar尋路算法詳解

    AStar算法是一種圖形搜索算法,常用于尋路。他是以廣度優(yōu)先搜索為基礎(chǔ),集Dijkstra算法和最佳優(yōu)先(best?fit)于一身的一種算法,本文主要介紹了AStar尋路算法的原理與實現(xiàn),需要的可以參考一下
    2023-03-03
  • 基于C#的音樂播放器主Form實現(xiàn)代碼

    基于C#的音樂播放器主Form實現(xiàn)代碼

    這篇文章主要介紹了基于C#的音樂播放器主Form實現(xiàn)代碼,很實用的功能,需要的朋友可以參考下
    2014-08-08
  • c#中directory 和directoryinfo的使用小結(jié)

    c#中directory 和directoryinfo的使用小結(jié)

    當(dāng)使用C#處理目錄時,可以使用?System.IO?命名空間中的?Directory?和?DirectoryInfo?類來執(zhí)行各種目錄操作,本文主要介紹了c#中directory 和directoryinfo的使用小結(jié),感興趣的可以了解一下
    2024-02-02
  • 如何在C#中自動化生成PDF表格

    如何在C#中自動化生成PDF表格

    在現(xiàn)代商業(yè)應(yīng)用中,PDF文檔因其跨平臺、內(nèi)容固定和易于共享的特性,成為信息傳遞的重要載體,本文將深入探討C#如何使用Spire.PDF for .NET創(chuàng)建和定制PDF表格,感興趣可以了解下
    2025-11-11
  • Unity實現(xiàn)主角移動與攝像機跟隨

    Unity實現(xiàn)主角移動與攝像機跟隨

    這篇文章主要為大家詳細(xì)介紹了Unity實現(xiàn)主角移動與攝像機跟隨,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • C#中的一些延時函數(shù)

    C#中的一些延時函數(shù)

    這篇文章主要介紹了C#中的一些延時函數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • C#的四個基本技巧

    C#的四個基本技巧

    C#的四個基本技巧...
    2007-03-03
  • C#實現(xiàn)無限級聯(lián)下拉列表框

    C#實現(xiàn)無限級聯(lián)下拉列表框

    這篇文章主要為大家詳細(xì)介紹了C#實現(xiàn)無限級聯(lián)下拉列表框的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-03-03
  • C#反射調(diào)用拓展類方法實例代碼

    C#反射調(diào)用拓展類方法實例代碼

    這篇文章主要給大家介紹了關(guān)于C#反射調(diào)用拓展類方法的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-01-01
  • C#使用位域技術(shù)進(jìn)行對象二進(jìn)制序列化優(yōu)

    C#使用位域技術(shù)進(jìn)行對象二進(jìn)制序列化優(yōu)

    在操作系統(tǒng)中,進(jìn)程信息對于系統(tǒng)監(jiān)控和性能分析至關(guān)重要,這個過程中,如何將捕獲到的進(jìn)程對象轉(zhuǎn)換為二進(jìn)制數(shù)據(jù),并進(jìn)行優(yōu)化,以減小數(shù)據(jù)包的大小,成為了一個關(guān)鍵問題,下面我們就來看看如何使用位域技術(shù)對C#對象進(jìn)行二進(jìn)制序列化優(yōu)化吧
    2024-01-01

最新評論

新巴尔虎右旗| 治县。| 诏安县| 灵丘县| 绩溪县| 嘉祥县| 威远县| 南投市| 米泉市| 凉山| 大港区| 宁波市| 阳高县| 朝阳区| 凤山市| 罗平县| 平潭县| 定兴县| 海晏县| 济宁市| 武乡县| 肇庆市| 湘西| 大竹县| 宝山区| 潼关县| 双鸭山市| 陇南市| 常熟市| 武定县| 长治市| 连江县| 济源市| 昌宁县| 会泽县| 五峰| 巴彦淖尔市| 苏尼特右旗| 大渡口区| 清水县| 搜索|