[]
        
(Showing Draft Content)

将表单控件导出为表单域

有时,你需要将包含表单控件的Excel表单转换为交互式PDF表单(即AcroForms)。表单控件是一类可添加到工作表中的对象,能实现与工作表内单元格或数据区域的交互。借助PdfSaveOptions类的FormFields属性,GcExcel可将表单控件作为表单域导出到PDF文档中,以便用户进行交互。

参考以下示例代码,将Excel表单控件导出为PDF表单域:

// Initialize Workbook.
var workbook = new Workbook();

// Create worksheet.
IWorksheet ws = workbook.Worksheets["Sheet1"];
            
// Add three checkboxes.
var checkBox1 = ws.Controls.AddCheckBox(62.4, 16.8, 69, 19.2);
checkBox1.Value = false;

var checkBox2 = ws.Controls.AddCheckBox(62.4, 36.6, 69, 19.2);
checkBox2.Value = true;

var checkBox3 = ws.Controls.AddCheckBox(62.4, 57, 69, 19.2);
checkBox3.Value = false;

// Add dropdown.
var dropDown = ws.Controls.AddDropDown(28.8, 81.8, 103.8, 31.4);
dropDown.PrintObject = true;
dropDown.Items.Add(new DropDownItem("Item 1"));
dropDown.Items.Add(new DropDownItem("Item 2"));
dropDown.Items.Add(new DropDownItem("Item 3"));
dropDown.SelectedIndex = 0;

// Add listbox.
var lstBox1 = ws.Controls.AddListBox(51.6, 134.2, 135, 99.6);
for (int i = 0; i < 6; i++)
{
    lstBox1.Items.Add(new ListBoxItem("Item " + (i + 1)));
}
lstBox1.SelectedIndex = 2;

// Add option button groups.
ws.Controls.AddGroupBox(234.2, 8.4, 222.6, 138.6);
ws.Controls.AddOptionButton(261.2, 29.4, 71.4, 16.8);
ws.Controls.AddOptionButton(267.8, 70.8, 71.4, 16.8);
ws.Controls.AddOptionButton(275.6, 111.6, 71.4, 16.8);

ws.Controls.AddGroupBox(244.4, 187.6, 176.4, 143.4);
ws.Controls.AddOptionButton(274.4, 216.6, 71.4, 16.8);
ws.Controls.AddOptionButton(279.8, 255, 71.4, 16.8);
ws.Controls.AddOptionButton(286.4, 295.2, 71.4, 16.8);

// Set FormFields to true to export Excel form controls as PDF form fields.
var options = new PdfSaveOptions { FormFields = true };

// Save the PDF document.
workbook.Save("PdfFormFieldExample.pdf", options);

![交互式表单控件](https://gccndocumentsitestorage.blob.core.chinacloudapi.cn/document - site - files/images/a00a7efa - 2c5d - 4b89 - b751 - 14c2ded57e8d/interactive - form - controls.544f37.gif)

注意:映射的PDF表单域的Z索引始终高于其他形状。

如果导出的PDF文档中不存在表单控件,请检查并启用特定表单控件的PrintObject设置。默认情况下,除按钮表单控件外,所有表单控件的此属性值均为true

参考以下示例代码,在将按钮表单控件保存为PDF时进行打印:

// Initialize Workbook.
Workbook workbook = new Workbook();
IWorksheet worksheet = workbook.Worksheets[0];
// Add a button control to worksheet and set its PrintObject property
var btn = worksheet.Controls.AddButton(360 * ColScale, 91.8, 103.94 * WidthScale, 19.79);
btn.Text = "Test settings";
btn.PrintObject = true;

// Save to a pdf file
workbook.Save("FormControlPdf.pdf");

Excel控件到PDF表单域的映射

将Excel文件导出为PDF时,GcExcel会将支持的Excel表单控件映射到PDF表单域。GcExcel支持映射的属性如下表所示。

控件类型

接口

映射的成员及说明

复选框

ICheckBox

导出为PDF时,复选框的以下成员会被映射:

  • Text:复选框的标签。

  • IsChecked:复选框的选中状态。仅支持truefalse。PDF表单中无法设置为null;如果为null,导出后的PDF表单将显示false

组合框

IDropDown

导出为PDF时,组合框的以下成员会被映射:

列表框

IListBox

导出为PDF时,列表框的以下成员会被映射:

选项按钮

IOptionButton

导出为PDF时,选项按钮的以下成员会被映射:

  • Text:选项按钮的标签。

  • IsChecked:选项按钮的选中状态。

  • GroupBox:选项按钮所属的分组框名称。

限制

由于PDF表单域中不存在以下控件和属性,因此GcExcel不支持导出这些内容:

  • IButton

  • IGroupBox

  • ILabel

  • IScrollBar

  • ISpinner

  • GrapeCity.Documents.Excel.Forms.ICheckBox.IsChecked 的混合选项

  • GrapeCity.Documents.Excel.Forms.SelectionMode.Extended