[]
GcExcel模板提供了使用 Excel 作为设计器构建具有不同表单字段的 PDF 表单的能力。在创建模板时,可以通过表单属性定义表单字段。
处理模板后,可以将结果导出到包含预定义表单字段的PDF文档(表单无法在 Excel 中显示,仅能导出到 PDF )。
“Form”属性可用于定义PDF表单字段。此属性的值为JSON格式,JSON字符串可用于描述表单字段的所有设置,其中 JSON 字符串中的属性名和枚举值不区分大小写。
例如:
{{ds1.Name(form={"type": "textbox", "name": "username", "value": "Input your name!","font":{"size":15, "color": "#ff0000", "bold": true}, "required": true})}}
{{(form={"type": "listbox", "name": "cities", "value": ["Xi'An", "BeiJing"],"font":{"size":11, "color": "#ff00ff", "bold": true}, "required": true})}}
GcExcel 支持标准PDF form 字段有以下几个:
Check box
Combo box
List box
Button
Radio button
Signature
Text box
考虑一个使用 GcExcel 模板生成绑定 PDF 表单的示例。在这种情况下,通过在模板单元格中定义文本框字段,以 PDF 格式生成地址簿。
文本框字段的定义方式与一个地址簿的常见细节相关,例如:
// Name :
{{ds.Name(form={"type": "textbox", "name": "name","font":{"color": "#000000", "bold": true}})}}
// Email:
{{ds.Email(form={"type": "textbox", "name": "Email","font":{"color": "#EC881D"}})}}
这些文本框字段是绑定字段,其数据是从数据源填充的,并在模板处理后显示在PDF表单中。您还可以从这里下载。
GcExcel 处理模板并将其导出为PDF文档后,PDF表单如下所示:
考虑一个使用GcExcel模板生成未绑定PDF表单的示例。在本例中,通过在模板单元格中定义文本框和复选框字段,以PDF格式生成工资和税务报表,如下所示:
Textbox 字段:
{{(form={"type": "textbox", "name": "tips","backgroundcolor": "#ffabab"})}}
Checkbox 字段:
{{(form={"type": "checkbox", "name": "Retirement","border": {"color": "#ff0000"}})}}
{{(form={"type": "checkbox", "name": "Statutory","border": {"color": "#ff0000"}})}}
这些字段是未绑定字段,它们的数据应该在模板处理后直接填写在PDF表单中。您还可以从这里下载。
GcExcel处理模板并将其导出为PDF文档后,PDF表单如下所示:
下面描述了可应用于任何PDF表单字段的常见设置 :
Enum,表示表单字段的类型,支持的标准字段有:
checkbox
textbox
listbox
combobox
radiobutton
pushbutton
signature
示例:
{"type": "listbox"}
String,在填写表单字段时显示对用户有帮助的文本。当指针短暂停留在表单字段上时,就会出现工具提示。
示例:
{"alternateName": "The alt name"}
String,表示表单字段的背景颜色。
示例:
{"backgroundcolor": "#ffff00"}{"backgroundcolor": "rgb(255, 178, 0)"}{"backgroundcolor": "rgba(188, 100, 0, 255)"}
指示表单字段边框的宽度、颜色和样式设置。
Double,边框的宽度
示例:
{"border":{"width": 120}}
String,边框的颜色
示例:
{"border":{"color": "#ffff00"}{"border": {"color": "rgb(255, 178, 0)"}}{"border": {"color": "rgba(188, 100, 0, 255)"}}
Enum,边框的样式:
none
solid
dashed
beveled
inset
underline
unknown
示例:
{"border":{"color": "#ffff00"}{"border": {"color": "rgb(255, 178, 0)"}}{"border": {"color": "rgba(188, 100, 0, 255)"}}
指示可在表单字段中使用的各种字体设置。
Double,字体大小
示例:
{"font": {"size": 18}}
String,字体颜色
示例:
{"font": {"color": "#ffff00"}}{"font": {"color": "rgb(255, 178, 0)"}}{"font": {"color": "rgba(188, 100, 0, 255)"}}
String,字体
示例:
{"font": {"name": "sans-serif"}}
Boolean,加粗
示例:
{"font": {"bold": true}}
Boolean,斜体
示例:
{"font": {"italic": true}}
Boolean,指示用户是否可以更改字段的属性。
示例:
{"locked": true}
String,表示字段的唯一名字。
示例:
{"name": "The field name"}
Boolean,表示用户是否可以修改字段的值
示例:
{"readOnly": true}
Boolean,指示该字段是否必须有值。
示例:
{"required": true}
Boolean,指示打印页时是否打印该字段。
示例:
{"printed":false}
Boolean,指示是否显示该字段。
示例:
{"hidden":true}
JsonObject,指示当鼠标按钮在字段的活动区域释放时要依次执行的动作。
示例:
{"mouseUp":{"script":"fBox1 =this.getField(\"checkbox\");\r\nfBox1.display =display.hidden", "submit":"http://localhost:80//myscript#FDF","reset":{"fieldNames":["checkbox", "textbox"]}}}
JsonObject,指示在字段的活动区域中按下鼠标按钮时要依次执行的操作。
示例:
{"mouseDown":{"script":"fBox1= this.getField(\"checkbox\");\r\nfBox1.display =display.hidden", "submit":"http://localhost:80//myscript#FDF","reset":{"fieldNames": ["checkbox","textbox"]}}}
JsonObject,指示鼠标按钮进入字段的活动区域时要依次执行的操作。
示例:
{"mouseEnter":{"script":"fBox1= this.getField(\"checkbox\");\r\nfBox1.display =display.hidden", "submit":"http://localhost:80//myscript#FDF","reset":{"fieldNames": ["checkbox","textbox"]}}}
JsonObject,指示当鼠标按钮退出字段的活动区域时要按顺序执行的操作。
示例:
{"mouseExit":{"script":"fBox1= this.getField(\"checkbox\");\r\nfBox1.display =display.hidden", "submit":"http://localhost:80//myscript#FDF","reset":{"fieldNames": ["checkbox","textbox"]}}}
JsonObject,指示当注释接收到输入焦点时要按顺序执行的操作。
示例:
{"onFocus":{"script":"fBox1 =this.getField(\"checkbox\");\r\nfBox1.display =display.hidden", "submit":"http://localhost:80//myscript#FDF","reset":{"fieldNames": ["checkbox","textbox"]}}}
JsonObject,指示在注释失去输入焦点时要按顺序执行的操作。
示例:
{"onBlur":{"script":"fBox1= this.getField(\"checkbox\");\r\nfBox1.display =display.hidden", "submit":"http://localhost:80//myscript#FDF","reset":{"fieldNames": ["checkbox","textbox"]}}}
String,指示在格式化字段以显示其当前值之前要执行的JavaScript操作。该操作可以在格式化之前修改字段的值。
示例:
{"format":"event.value = (event.value * 100) + \" % \";"}
String,当字段值发生变化时,需要执行的JavaScript动作。此操作可以检查新值的有效性。
示例:
{"validate":"if (event.value < 0|| event.value > 100){\r\n" +"app.beep(0);\r\n"+"app.alert(\"Invalid value for field \"+event.target.name);\r\n" +"event.rc = false;\r\n" +"}"}
String,指示要执行的JavaScript操作,以便在另一个字段的值改变时重新计算该字段的值。
示例:
{"calculate":"var oil =this.getField(\"Oil\");\r\n"+"var filter = this.getField(\"Filter\");\r\n"+"event.value(oil.value + filter.value) * 1.0825;"}
String,指示当用户在文本字段或组合框中键入按键或修改可滚动列表框中的选择时要执行的JavaScript操作。此操作可以检查击键的有效性,并拒绝或修改它。
示例:
{"keystroke":"if (!event.willCommit){\r\n"+"var f =this.getField(\"myPictures\");\r\n"+"var i =this.getIcon(event.change);\r\n"+"f.buttonSetIcon(i);\r\n"+"};"}
Boolean,指示页面加载时日期字段是否应自动获得焦点。
示例:
{"type": "password" , "autofocus": true}
Boolean,指示字段是否被禁用。
示例:
{"type": "password" , "disabled": true}
Enum,让web开发人员指定用户是否需要为自动填写表单字段值提供帮助,以及对浏览器的指导。关于这个领域需要什么样的信息。
此属性的行为取决于浏览器的实现,更多内容可以参考 MDN 页面。
示例:
{"type": "date" , "autocomplete": "bday"}
下面描述了可以应用于JsonObject以指示操作的设置:
String,指示导致脚本被JavaScript解释器编译和执行的动作。
示例:
{"script":"fBox1 = this.getField(\"checkbox\");\r\nfBox1.display = display.hidden"}
String,将所选交互表单字段的名称和值传输到指定的统一资源定位器(URL)的操作,URL可能是将处理它们并发回响应的Web服务器的地址。
示例:
{"submit":"http://localhost:80//myscript#FDF"}
String Array,指示应由此操作处理(或排除在处理之外)的字段名称列表。如果为空,则将处理所有字段。
示例:
{"fieldNames": ["checkbox", "textbox"]}
Boolean,指示是否从处理中排除在fieldNames中指定的字段(默认情况下,此属性为false,指定的字段包括在内)。
示例:
{"exclude":true}
type=warning
注意: JavaScript代码片段需要转义。
下表描述了可应用于复选框表单字段的设置:
Enum,表示选中状态的样式
check
circle
cross
diamond
square
Star
示例:
{"checkStyle": "circle"}
Boolean,复选框的值。(如果该值缺失,GcExcel会自动尝试将该单元格的值转换为布尔值,然后在处理模板后将其设置为属性。)
示例:
{"value": true}
Boolean,复选框的默认值。
示例:
{"defaultValue": false}
下表描述了可以应用于文本框字段的设置:
String,文本框的值。
示例:
{"value": "Hunter"}
String,文本框的默认值。
示例:
{"defaultValue": "Input your name!"}
Boolean,指示在指定设备进行选择后是否立即提交新值。
示例:
{"combo":true}
Boolean,指示该字段是否用于输入不应在屏幕上显示的安全密码。
示例:
{"password":true}
Boolean,指示在字段中输入的文本是否进行拼写检查。
示例:
{"spellcheck":false}
Boolean,指示该字段是否可滚动以容纳超出其注释矩形范围的文本。
示例:
{"scrollable":false}
Integer,表示字段文本的最大长度,以字符为单位。
示例:
{"maxLen":10}
Boolean,指示该字段是否可以包含多行文本。
示例:
{"multiline":true}
枚举字符串,在显示字段文本时指定要使用的对齐方式。
left
center
right
示例:
{"justification": "center"}
下表描述了可以应用于Listbox字段的设置:
String Array,Listbox的值。
示例:
{"value": ["US", "UK"]}
String Array,Listbox的默认值。
示例:
{"defaultValue": ["US", "UK"]}
Boolean,指示在指定设备进行选择后是否立即提交新值。
示例:
{"commitOnSelChange": true}
Integer,指示所选项目的索引。
示例:
{"selectedIndex": 0}
Boolean,指示字段选项项是否按字母顺序排序。
示例:
{"sort": true}
Boolean,指示在字段中输入的文本是否进行拼写检查。
示例:
{"spellCheck": true}
Integer Array,指示所选项目的索引。
示例:
{"selectedIndexes": [0, 2, 5]}
Boolean,指示是否可以同时选择多个字段选项。
示例:
{"multiSelect": true}
String Array,Listbox字段的导出值。
示例:
{"exportValue": ["TheResult1", "TheResult2"]}
下表描述了可以应用于组合框表单字段的设置:
String Array,组合框的值。
示例:
{"value": ["US", "UK"]}
String Array,组合框的默认值。
示例:
{"defaultValue": ["US", "UK"]}
Boolean,指示在指定设备进行选择后是否立即提交新值。
示例:
{"commitOnSelChange": true}
Integer,指示所选项目的索引。
示例:
{"selectedIndex": 0}
Boolean,指示字段选项项是否按字母顺序排序。
示例:
{"sort": true}
Boolean,指示在字段中输入的文本是否进行拼写检查。
示例:
{"spellCheck": true}
Boolean,指示组合框是否包括一个可编辑文本框和一个下拉列表。
示例:
{"editable": true}
下表描述了可以应用于单选按钮表单字段的设置:
Enum,表示检查标记的样式。
check
circle
cross
diamond
square
Star
示例:
{"checkStyle": "circle"}
String,单选按钮组的名称。将具有相同组名的单选按钮添加到同一组中。(如果该值缺失,GcExcel在处理模板后会自动将从同一个模板单元格展开的单选按钮添加到同一个组中)
示例:
{"groupName": "Teams"}
Boolean,指示单选按钮字段中的一组单选按钮是否将同时打开和关闭,这些单选按钮使用相同的打开状态值。如果选中了其中一个,则它们都被选中。如果清除,按钮是互斥的(与HTML单选按钮相同的行为)。
示例:
{"radiosInUnison": true}
String,表示选中选项的值。
示例:
{"checkedChoice": "Team5"}
String,指示用户第一次打开表单时选中选项的值。
示例:
{"defaultCheckedChoice": "Team1"}
下表描述了可以应用于按钮表单字段的设置:
Enum,表示注释的高亮模式。
none
invert
outline
push
示例:
{"highlighting": "outline"}
String,表示按钮的标题
示例:
{"caption": "Push"}
Base64 String,表示按钮图片
示例:
{"image": "The base64 image data."}
Enum,指示按钮标题相对于图像的位置。
captionOnly
imageOnly
captionBelowIcon
captionAboveIcon
captionAtRight
captionAtLeft
captionOverlaid
示例:
{"captionImageRelation": "captionBelowIcon"}
String,当用户按下按钮时按钮的标题。
示例:
{"downCaption": "Push Down"}
Base64 String,当用户按下按钮时,该按钮的图像。
示例:
{"downImage": "The base64 image data."}
String,指示当用户将光标滚动到其活动区域而不按鼠标按钮时按钮的标题。
示例:
{"rolloverCaption": "Rollover"}
Base64 String,指示当用户在不按鼠标按钮的情况下滚动光标到其活动区域时按钮的图像。
示例:
{"rolloverImage": "The base64 image data."}
Enum,表示缩放模式。
always
bigger
smaller
never
示例:
{"imageScale": {"mode": "bigger"}}
Boolean,指示图像是否应按比例缩放。
示例:
{"imageScale": {"proportional": true}}
Float,表示图像的位置。0.0到1.0之间的两个数字表示图像左侧和底部剩余空间的比例。值(0.0,0.0)将图像定位在按钮矩形的左下角。值(0.5,0.5)将其置于矩形中心。
此值仅在图像按比例缩放时使用。
示例:
{"imageScale": {"proportional": true, "x": 0.6}}
Float
示例:
{"imageScale": {"proportional": true, "y": 0.8}}
Boolean,指示按钮的外观是否应该缩放到完全适合注释的范围,而不考虑边框的线宽。
示例:
{"imageScale": {"ignoreBorder": true}}
下表描述了可应用于签名表单字段的设置:
Enum,锁定字段的类型。
all
specifiedOnly
allButSpecified
示例:
{"lockType": "specifiedOnly"}
String Array,指示应根据lockType属性包含或排除在处理过程中的字段名称列表。
示例:
{"fieldNames": ["signerName", "time"]}
Boolean,表示当SignatureFormField被签名时是否锁定字段。
示例:
{"LockedFields": true}
type=warning
注意: GcExcel模板只在PDF文档中生成数字签名字段。如果需要在签名字段上添加签名,需要使用GcPDF或PDFBox进行处理。