PDF管理控件Spire.PDF使用教程:創(chuàng)建 PDF 表單域并設置屬性
Spire.PDF是一個專業(yè)的PDF組件,能夠獨立地創(chuàng)建、編寫、編輯、操作和閱讀PDF文件,支持 .NET、Java、WPF和Silverlight。Spire.PDF的PDF API擁有豐富的功能,如安全設置(包括數字簽名)、PDF文本/附件/圖片提取、PDF文件合并/拆分、元數據更新、章節(jié)和段落優(yōu)化、圖形/圖像描繪和插入、表格創(chuàng)建和處理、數據導入等等。>>下載Spire.PDF最新試用版
C# 創(chuàng)建 PDF 表單域
Adobe Acrobat Form (AcroForm) 是表單域的集合,用來以交互方式從用戶那里收集信息。Spire.PDF支持創(chuàng)建多種交互式表單域,例如:文本域、單選按鈕、復選框、列表框、組合框,并在特定的表單域添加提示文本(Tooltip),方便用戶輸入正確信息。
創(chuàng)建表單域
//創(chuàng)建PDF文檔并添加一頁 PdfDocument pdf = new PdfDocument(); PdfPageBase page = pdf.Pages.Add(); //設置font, brush PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 10f,FontStyle.Regular), true); PdfBrush brush = PdfBrushes.Black; //定義一些坐標變量并賦初值 float x = 10; float y = 10; float tempX = 0; float tempY = 0; //添加文本框 string text = "文本框: "; page.Canvas.DrawString(text, font, brush, x, y); tempX = font.MeasureString(text).Width + 15; tempY = font.MeasureString(text).Height + 15; PdfTextBoxField textbox = new PdfTextBoxField(page, "TextBox"); textbox.Bounds = new RectangleF(tempX, y, tempX * 2, 15); textbox.BorderWidth = 0.75f; textbox.BorderStyle = PdfBorderStyle.Solid; pdf.Form.Fields.Add(textbox); //添加復選框 text = "復選框: "; y += tempY; page.Canvas.DrawString(text, font, brush, x, y); tempX = font.MeasureString(text).Width + 15; tempY = font.MeasureString(text).Height + 15; PdfCheckBoxField checkbox = new PdfCheckBoxField(page, "CheckBox"); checkbox.Bounds = new RectangleF(tempX, y, 15, 15); checkbox.BorderWidth = 0.75f; checkbox.Style = PdfCheckBoxStyle.Cross; pdf.Form.Fields.Add(checkbox); //添加列表框 text = "列表框: "; y += tempY; page.Canvas.DrawString(text, font, brush, x, y); tempX = font.MeasureString(text).Width + 15; tempY = font.MeasureString(text).Height + 15; PdfListBoxField listbox = new PdfListBoxField(page, "ListBox"); listbox.Bounds = new RectangleF(tempX, y, tempX * 2, tempY * 2); listbox.BorderWidth = 0.75f; for (int i = 0; i < 3; i++) { //添加項目到列表框 string tempText = string.Format("Text {0}", i); string tempValue = string.Format("Value {0}", i); listbox.Items.Add(new PdfListFieldItem(tempText, tempValue)); } pdf.Form.Fields.Add(listbox); //添加單選按鈕 text = "單選按鈕: "; y += tempY * 2 + 15; page.Canvas.DrawString(text, font, brush, x, y); tempX = font.MeasureString(text).Width + 15; tempY = font.MeasureString(text).Height + 15; PdfRadioButtonListField radiobutton = new PdfRadioButtonListField(page, "RadioButton"); for (int i = 0; i < 3; i++) { PdfRadioButtonListItem item = new PdfRadioButtonListItem(string.Format("rb{0}", i)); item.BorderWidth = 0.75f; item.Bounds = new RectangleF(tempX + i * 20, y, 15, 15); radiobutton.Items.Add(item); } pdf.Form.Fields.Add(radiobutton); //添加組合框 text = "下拉列表框: "; y += tempY; page.Canvas.DrawString(text, font, brush, x, y); tempX = font.MeasureString(text).Width + 15; tempY = font.MeasureString(text).Height + 15; PdfComboBoxField combobox = new PdfComboBoxField(page, "ComboBox"); combobox.Bounds = new RectangleF(tempX, y, tempX, 15); combobox.BorderWidth = 0.75f; for (int i = 0; i < 3; i++) { //添加項目到下拉列表框 string tempText = string.Format("Text {0}", i); string tempValue = string.Format("Value {0}", i); combobox.Items.Add(new PdfListFieldItem(tempText, tempValue)); } pdf.Form.Fields.Add(combobox); //保存文檔 pdf.SaveToFile("PDF表單域.pdf");
添加提示文本(Tooltip)
//創(chuàng)建PDF文檔并添加一頁 PdfDocument pdf = new PdfDocument(); PdfPageBase page = pdf.Pages.Add(); //設置font, brush PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 10f, FontStyle.Regular), true); PdfBrush brush = PdfBrushes.Black; //定義一些坐標變量并賦初值 float x = 10; float y = 50; float tempX = 0; float tempY = 0; //添加文本框 string text = "滿意指數: "; page.Canvas.DrawString(text, font, brush, x, y); tempX = font.MeasureString(text).Width + 15; tempY = font.MeasureString(text).Height + 15; PdfTextBoxField textbox = new PdfTextBoxField(page, "TextBox"); textbox.Bounds = new RectangleF(tempX, y, tempX * 2, 15); textbox.BorderWidth = 0.75f; textbox.BorderStyle = PdfBorderStyle.Solid; //添加文本提示信息 textbox.ToolTip = "請輸入0-5之間的數字"; //添加文本域到fields collection并保存文檔 pdf.Form.Fields.Add(textbox); pdf.SaveToFile("添加文本信息.pdf");
C# 將 PDF 表單域設置為只讀
當我們把PDF表單域填寫完成后,可以將這些域設置為只讀來阻止用戶修改或刪除表單域的內容。Spire.PDF組件支持以下兩種方式將PDF表單域設置為只讀:
- 將表單域扁平化(Flatten)
- 將表單域設置為只讀(Read-only)
將表單域扁平化
可以使用PdfForm類的IsFlatten屬性來將PDF文檔中的所有表單域扁平化。代碼示例如下:
//加載PDF文檔 PdfDocument document = new PdfDocument(); document.LoadFromFile("Form.pdf"); //獲取文檔中的現有表單域 PdfForm loadedForm = document.Form; //扁平化所有表單域 loadedForm.IsFlatten = true; //保存文檔 document.SaveToFile("Flatten1.pdf");
此外,我們還可以通過PdfField類的Flatten屬性來扁平化指定表單域:
//加載PDF文檔 PdfDocument document = new PdfDocument(); document.LoadFromFile("Form.pdf"); //獲取文檔中的現有表單域 PdfFormWidget form = document.Form as PdfFormWidget; //扁平化指定表單域 PdfField field = form.FieldsWidget.List[0] as PdfField; field.Flatten = true; //保存文檔 document.SaveToFile("Flatten2.pdf");
將表單域設置為只讀
將PDF文檔中的所有表單域設置為只讀,我們可以使用PdfForm類的ReadOnly屬性:
//加載PDF文檔 PdfDocument document = new PdfDocument(); document.LoadFromFile("Form.pdf"); //獲取文檔中的現有表單域 PdfForm loadedForm = document.Form; //將所有表單域設置為只讀 loadedForm.ReadOnly = true; //保存文檔 document.SaveToFile("ReadOnly1.pdf");
將PDF文檔中的指定表單域設置為只讀,我們可以使用PdfField類的ReadOnly屬性:
//加載PDF文檔 PdfDocument document = new PdfDocument(); document.LoadFromFile("Form.pdf"); //獲取文檔中的現有表單域 PdfFormWidget form = document.Form as PdfFormWidget; //將指定表單域設置為只讀 PdfField field = form.FieldsWidget.List[0] as PdfField; field.ReadOnly = true; //保存文檔 document.SaveToFile("ReadOnly2.pdf");
如果你有任何問題或意見,可在下方評論區(qū)留言,點擊資源列表查看更多教程資源~
*想要購買正版授權的朋友可以咨詢在線客服哦~
掃描關注“慧聚IT”微信公眾號,及時獲取更多產品最新動態(tài)及最新資訊