怎么使用源码建网站,如何制作wordpress短代码,北京市丰台区建设部官方网站,wordpress修改模板文件通常情况下#xff0c;PDF文件是不可编辑的#xff0c;但PDF表单提供了一些可编辑区域#xff0c;允许用户填写和提交信息。PDF表单通常用于收集信息、反馈或进行在线申请#xff0c;是许多行业中数据收集和交换的重要工具。
PDF表单可以包含各种类型的输入控件#xff0…通常情况下PDF文件是不可编辑的但PDF表单提供了一些可编辑区域允许用户填写和提交信息。PDF表单通常用于收集信息、反馈或进行在线申请是许多行业中数据收集和交换的重要工具。
PDF表单可以包含各种类型的输入控件如文本框、复选框、下拉菜单、单选按钮等。本文将介绍如何使用C# 和一个免费.NET库来操作PDF表单包括以下三个示例
目录
使用C# 创建PDF表单域
使用C# 填写PDF表单域
使用C# 删除PDF表单域 安装免费.NET PDF库 Free Spire.PDF for .NET 可通过 NuGet安装或下载后手动引用dll
PM Install-Package FreeSpire.PDF 常见PDF表单域
Free Spire.PDF for .NET 支持创建、操作多种PDF表域包括文本框、复选框、组合框、列表框和单选按钮等。下表列出了一些常见的域及其在该免费库中对应的类名。
表单域名类名文本域PdfTextBoxField复选框PdfCheckBoxField组合框PdfComboBoxField列表框PdfListBoxField单选按钮PdfRadioButtonListField普通按钮PdfButtonField签名域PdfSignatureField 使用C# 创建PDF表单域
使用Free Spire.PDF制作表单域需要先创建以上各表单域类的对象然后通过 Bounds 属性设置表单域的位置和大小最后再通过PdfFormFieldCollection.Add() 方法将表单域绘制到PDF页面指定位置处。
以下是如何在PDF中创建上述常见PDF表单域的C#代码
using Spire.Pdf;
using Spire.Pdf.Actions;
using Spire.Pdf.Fields;
using Spire.Pdf.Graphics;
using System.Drawing;namespace CreateFillableFormsInPdf
{class Program{static void Main(string[] args){//创建PdfDocument对象PdfDocument pdf new PdfDocument();//添加一页PdfPageBase page pdf.Pages.Add();//初始化x、y坐标float baseX 60;float baseY 20;//创建两个画刷PdfSolidBrush brush1 new PdfSolidBrush(new PdfRGBColor(Color.Brown));PdfSolidBrush brush2 new PdfSolidBrush(new PdfRGBColor(Color.Black));//创建字体PdfTrueTypeFont font new PdfTrueTypeFont(new Font(微软雅黑, 11f, FontStyle.Regular), true);//添加文本框 page.Canvas.DrawString(姓名:, font, brush1, new PointF(10, baseY));RectangleF tbxBounds new RectangleF(baseX, baseY, 150, 18);PdfTextBoxField textBox new PdfTextBoxField(page, 姓名);textBox.Bounds tbxBounds;textBox.Font font;pdf.Form.Fields.Add(textBox);baseY 30;//添加两个复选框page.Canvas.DrawString(民族:, font, brush1, new PointF(10, baseY));RectangleF checkboxBound1 new RectangleF(baseX, baseY, 15, 15);PdfCheckBoxField checkBoxField1 new PdfCheckBoxField(page, 选项1);checkBoxField1.Bounds checkboxBound1;checkBoxField1.Checked false;page.Canvas.DrawString(汉族, font, brush2, new PointF(baseX 20, baseY));RectangleF checkboxBound2 new RectangleF(baseX 70, baseY, 15, 15);PdfCheckBoxField checkBoxField2 new PdfCheckBoxField(page, 选项2);checkBoxField2.Bounds checkboxBound2;checkBoxField2.Checked false;page.Canvas.DrawString(少数民族, font, brush2, new PointF(baseX 90, baseY));pdf.Form.Fields.Add(checkBoxField1);pdf.Form.Fields.Add(checkBoxField2);baseY 30;//添加列表框page.Canvas.DrawString(分公司:, font, brush1, new PointF(10, baseY));RectangleF listboxBound new RectangleF(baseX, baseY, 150, 50);PdfListBoxField listBoxField new PdfListBoxField(page, 分公司);listBoxField.Items.Add(new PdfListFieldItem(成都, 成都));listBoxField.Items.Add(new PdfListFieldItem(武汉, 武汉));listBoxField.Items.Add(new PdfListFieldItem(深圳, 深圳)); ;listBoxField.Bounds listboxBound;listBoxField.Font font;pdf.Form.Fields.Add(listBoxField);baseY 60;//添加两个单选按钮page.Canvas.DrawString(性别:, font, brush1, new PointF(10, baseY));PdfRadioButtonListField radioButtonListField new PdfRadioButtonListField(page, 性别);PdfRadioButtonListItem radioItem1 new PdfRadioButtonListItem(选项1);RectangleF radioBound1 new RectangleF(baseX, baseY, 15, 15);radioItem1.Bounds radioBound1;page.Canvas.DrawString(男, font, brush2, new PointF(baseX 20, baseY));PdfRadioButtonListItem radioItem2 new PdfRadioButtonListItem(选项2);RectangleF radioBound2 new RectangleF(baseX 70, baseY, 15, 15);radioItem2.Bounds radioBound2;page.Canvas.DrawString(女, font, brush2, new PointF(baseX 90, baseY));radioButtonListField.Items.Add(radioItem1);radioButtonListField.Items.Add(radioItem2);pdf.Form.Fields.Add(radioButtonListField);baseY 30;//添加组合框page.Canvas.DrawString(部门:, font, brush1, new PointF(10, baseY));RectangleF cmbBounds new RectangleF(baseX, baseY, 150, 18);PdfComboBoxField comboBoxField new PdfComboBoxField(page, 部门);comboBoxField.Bounds cmbBounds;comboBoxField.Items.Add(new PdfListFieldItem(财务, 财务));comboBoxField.Items.Add(new PdfListFieldItem(技术, 技术));comboBoxField.Items.Add(new PdfListFieldItem(采购, 采购));comboBoxField.Items.Add(new PdfListFieldItem(销售, 销售));comboBoxField.Font font;pdf.Form.Fields.Add(comboBoxField);baseY 30;//添加签名域page.Canvas.DrawString(签名:, font, brush1, new PointF(10, baseY));PdfSignatureField sgnField new PdfSignatureField(page, 签名域);RectangleF sgnBounds new RectangleF(baseX, baseY, 150, 80);sgnField.Bounds sgnBounds;pdf.Form.Fields.Add(sgnField);baseY 90;//添加按钮page.Canvas.DrawString(按钮:, font, brush1, new PointF(10, baseY));RectangleF btnBounds new RectangleF(baseX, baseY, 50, 18);PdfButtonField buttonField new PdfButtonField(page, 按钮);buttonField.Bounds btnBounds;buttonField.Text 提交;buttonField.Font font;PdfSubmitAction submitAction new PdfSubmitAction(https://www.****.com);submitAction.DataFormat SubmitDataFormat.Html;buttonField.Actions.MouseDown submitAction;pdf.Form.Fields.Add(buttonField);//保存文件pdf.SaveToFile(PDF表单.pdf, FileFormat.PDF);}}
}生成文件 使用C# 填写PDF表单域
填充表单域需要先获取PDF中的所有表单字段然后确定其表单类型最后再填写数据或从预定列表中选择值。
以下是如何填充现有PDF表单域的C#代码
using Spire.Pdf;
using Spire.Pdf.Fields;
using Spire.Pdf.Widget;namespace FillFormFields
{class Program{static void Main(string[] args){//加载PDF表单PdfDocument pdf new PdfDocument();pdf.LoadFromFile(PDF表单.pdf);//获取文档中的表单PdfFormWidget form (PdfFormWidget)pdf.Form;//获取表单域集合PdfFormFieldWidgetCollection formWidgetCollection form.FieldsWidget;//遍历表单域for (int i 0; i formWidgetCollection.Count; i){//获取指定域PdfField field formWidgetCollection[i];//判断该表单域是否为文本框if (field is PdfTextBoxFieldWidget){if (field.Name 姓名){//填充文本PdfTextBoxFieldWidget textBoxField (PdfTextBoxFieldWidget)field;textBoxField.Text 张三;}}//判断该表单域是否为单选按钮if (field is PdfRadioButtonListFieldWidget){if (field.Name 性别){//为单选按钮选定一个值PdfRadioButtonListFieldWidget radioButtonListField (PdfRadioButtonListFieldWidget)field;radioButtonListField.SelectedIndex 0;}}//判断该表单域是否为组合框if (field is PdfComboBoxWidgetFieldWidget){if (field.Name 部门){//为组合框选定一个值PdfComboBoxWidgetFieldWidget comboBoxField (PdfComboBoxWidgetFieldWidget)field;int[] index { 1 };comboBoxField.SelectedIndex index;}}//判断该表单域是否为复选框if (field is PdfCheckBoxWidgetFieldWidget){//设置复选框的已选中状态PdfCheckBoxWidgetFieldWidget checkBoxField (PdfCheckBoxWidgetFieldWidget)field;switch (checkBoxField.Name){case 选项1:checkBoxField.Checked true;break;}}//判断该表单域是否为列表框if (field is PdfListBoxWidgetFieldWidget){if (field.Name 分公司){//为列表框选定一个值PdfListBoxWidgetFieldWidget listBox (PdfListBoxWidgetFieldWidget)field;int[] index { 1 };listBox.SelectedIndex index;}}}//保存文件pdf.SaveToFile(填充PDF表单域.pdf, FileFormat.PDF);}}
}输出结果 使用C# 删除PDF表单域
Free Spire.PDF支持通过索引或名称删除指定的表单域或删除所有表单域。
以下是如何删除PDF表单域的C#代码
using Spire.Pdf;
using Spire.Pdf.Fields;
using Spire.Pdf.Widget;namespace RemoveFormFields
{class Program{static void Main(string[] args){//加载PDF表单PdfDocument pdf new PdfDocument();pdf.LoadFromFile(PDF表单.pdf);//获取文档中的表单域PdfFormWidget formWidget pdf.Form as PdfFormWidget;//遍历表单域for (int i formWidget.FieldsWidget.List.Count - 1; i 0; i--){//获取指定表单域PdfField field formWidget.FieldsWidget.List[i] as PdfField;//删除表单域formWidget.FieldsWidget.Remove(field);}//通过表单域名获取指定表单//PdfField field formWidget.FieldsWidget[name];//删除该表单域//formWidget.FieldsWidget.Remove(field);//保存PDF文件pdf.SaveToFile(删除PDF表单域.pdf);}}
}以上代码演示了PDF表单的基本操作包括添加文本框、复选框、组合框、单选按钮等各种常见的表单域填写现有PDF表单以及删除PDF表单。Free Spire.PDF免费库该支持其他多种PDF元素点击查看更多示例。