[]
        
(Showing Draft Content)

PDF表单生成器

概述

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

PDF表单绑定

考虑一个使用 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表单中。您还可以从这里下载。

Excel模板布局

Excel template layout

GcExcel 处理模板并将其导出为PDF文档后,PDF表单如下所示:

Pdf form

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表单中。您还可以从这里下载。

Excel模板布局


GcExcel处理模板并将其导出为PDF文档后,PDF表单如下所示:


基本设置

下面描述了可应用于任何PDF表单字段的常见设置 :

1. type

Enum,表示表单字段的类型,支持的标准字段有:

  • checkbox

  • textbox

  • listbox

  • combobox

  • radiobutton

  • pushbutton

  • signature

示例:

{"type": "listbox"}

2. alternateName

String,在填写表单字段时显示对用户有帮助的文本。当指针短暂停留在表单字段上时,就会出现工具提示。

示例:

{"alternateName": "The alt name"}

3. backgroundcolor

String,表示表单字段的背景颜色。

示例:

{"backgroundcolor": "#ffff00"}{"backgroundcolor": "rgb(255, 178, 0)"}{"backgroundcolor": "rgba(188, 100, 0, 255)"}

4. border

指示表单字段边框的宽度、颜色和样式设置。

width

Double,边框的宽度

示例:

{"border":{"width": 120}}

color

String,边框的颜色

示例:

{"border":{"color": "#ffff00"}{"border": {"color": "rgb(255, 178, 0)"}}{"border": {"color": "rgba(188, 100, 0, 255)"}}

style

Enum,边框的样式:

  • none

  • solid

  • dashed

  • beveled

  • inset

  • underline

  • unknown

示例:

{"border":{"color": "#ffff00"}{"border": {"color": "rgb(255, 178, 0)"}}{"border": {"color": "rgba(188, 100, 0, 255)"}}

5. font

指示可在表单字段中使用的各种字体设置。

size

Double,字体大小

示例:

{"font": {"size": 18}}

color

String,字体颜色

示例:

{"font": {"color": "#ffff00"}}{"font": {"color": "rgb(255, 178, 0)"}}{"font": {"color": "rgba(188, 100, 0, 255)"}}

name

String,字体

示例:

{"font": {"name": "sans-serif"}}

bold

Boolean,加粗

示例:

{"font": {"bold": true}}

italic

Boolean,斜体

示例:

{"font": {"italic": true}}

6. locked

Boolean,指示用户是否可以更改字段的属性。

示例:

{"locked": true}

7. name

String,表示字段的唯一名字。

示例:

{"name": "The field name"}

8. readOnly

Boolean,表示用户是否可以修改字段的值

示例:

{"readOnly": true}

9. required

Boolean,指示该字段是否必须有值。

示例:

{"required": true}

10. printed

Boolean,指示打印页时是否打印该字段。

示例:

{"printed":false}

11. hidden

Boolean,指示是否显示该字段。

示例:

{"hidden":true}

12. mouseUp

JsonObject,指示当鼠标按钮在字段的活动区域释放时要依次执行的动作。

示例:

{"mouseUp":{"script":"fBox1 =this.getField(\"checkbox\");\r\nfBox1.display =display.hidden", "submit":"http://localhost:80//myscript#FDF","reset":{"fieldNames":["checkbox", "textbox"]}}}

13. mouseDown

JsonObject,指示在字段的活动区域中按下鼠标按钮时要依次执行的操作。

示例:

{"mouseDown":{"script":"fBox1= this.getField(\"checkbox\");\r\nfBox1.display =display.hidden", "submit":"http://localhost:80//myscript#FDF","reset":{"fieldNames": ["checkbox","textbox"]}}}

14. mouseEnter

JsonObject,指示鼠标按钮进入字段的活动区域时要依次执行的操作。

示例:

{"mouseEnter":{"script":"fBox1= this.getField(\"checkbox\");\r\nfBox1.display =display.hidden", "submit":"http://localhost:80//myscript#FDF","reset":{"fieldNames": ["checkbox","textbox"]}}}

15. mouseExist

JsonObject,指示当鼠标按钮退出字段的活动区域时要按顺序执行的操作。

示例:

{"mouseExit":{"script":"fBox1= this.getField(\"checkbox\");\r\nfBox1.display =display.hidden", "submit":"http://localhost:80//myscript#FDF","reset":{"fieldNames": ["checkbox","textbox"]}}}

16. onFocus

JsonObject,指示当注释接收到输入焦点时要按顺序执行的操作。

示例:

{"onFocus":{"script":"fBox1 =this.getField(\"checkbox\");\r\nfBox1.display =display.hidden", "submit":"http://localhost:80//myscript#FDF","reset":{"fieldNames": ["checkbox","textbox"]}}}

17. onBlur

JsonObject,指示在注释失去输入焦点时要按顺序执行的操作。

示例:

{"onBlur":{"script":"fBox1= this.getField(\"checkbox\");\r\nfBox1.display =display.hidden", "submit":"http://localhost:80//myscript#FDF","reset":{"fieldNames": ["checkbox","textbox"]}}}

18. format

String,指示在格式化字段以显示其当前值之前要执行的JavaScript操作。该操作可以在格式化之前修改字段的值。

示例:

{"format":"event.value = (event.value * 100) + \" % \";"}

19. validate

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" +"}"}

20. calculate

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;"}

21. keystroke

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"+"};"}

22. autofocus

Boolean,指示页面加载时日期字段是否应自动获得焦点。

示例:

{"type": "password" , "autofocus": true}

23. disabled

Boolean,指示字段是否被禁用。

示例:

{"type": "password" , "disabled": true}

24. autocomplete

Enum,让web开发人员指定用户是否需要为自动填写表单字段值提供帮助,以及对浏览器的指导。关于这个领域需要什么样的信息。

此属性的行为取决于浏览器的实现,更多内容可以参考 MDN 页面。

示例:

 {"type": "date" , "autocomplete": "bday"}

JsonObject 操作

下面描述了可以应用于JsonObject以指示操作的设置:

1. script

String,指示导致脚本被JavaScript解释器编译和执行的动作。

示例:

{"script":"fBox1 = this.getField(\"checkbox\");\r\nfBox1.display = display.hidden"}

2. submit

String,将所选交互表单字段的名称和值传输到指定的统一资源定位器(URL)的操作,URL可能是将处理它们并发回响应的Web服务器的地址。

示例:

{"submit":"http://localhost:80//myscript#FDF"}

3. reset

fieldNames

String Array,指示应由此操作处理(或排除在处理之外)的字段名称列表。如果为空,则将处理所有字段。

示例:

{"fieldNames": ["checkbox", "textbox"]}

exclude

Boolean,指示是否从处理中排除在fieldNames中指定的字段(默认情况下,此属性为false,指定的字段包括在内)。

示例:

{"exclude":true}

type=warning

注意: JavaScript代码片段需要转义。

Checkbox 字段设置

下表描述了可应用于复选框表单字段的设置:

1. checkStyle

Enum,表示选中状态的样式

  • check

  • circle

  • cross

  • diamond

  • square

  • Star

示例:

{"checkStyle": "circle"}

2. value

Boolean,复选框的值。(如果该值缺失,GcExcel会自动尝试将该单元格的值转换为布尔值,然后在处理模板后将其设置为属性。)

示例:

{"value": true}

3. defaultValue

Boolean,复选框的默认值。

示例:

{"defaultValue": false}

Textbox 字段设置

下表描述了可以应用于文本框字段的设置:

1. value

String,文本框的值。

示例:

{"value": "Hunter"}

2. defaultValue

String,文本框的默认值。

示例:

{"defaultValue": "Input your name!"}

3. combo

Boolean,指示在指定设备进行选择后是否立即提交新值。

示例:

{"combo":true}

4. password

Boolean,指示该字段是否用于输入不应在屏幕上显示的安全密码。

示例:

{"password":true}

5. spellcheck

Boolean,指示在字段中输入的文本是否进行拼写检查。

示例:

{"spellcheck":false}

6. scrollable

Boolean,指示该字段是否可滚动以容纳超出其注释矩形范围的文本。

示例:

{"scrollable":false}

7. maxlength

Integer,表示字段文本的最大长度,以字符为单位。

示例:

{"maxLen":10}

8. multiline

Boolean,指示该字段是否可以包含多行文本。

示例:

{"multiline":true}

9. justification

枚举字符串,在显示字段文本时指定要使用的对齐方式。

  • left

  • center

  • right

示例:

{"justification": "center"}

Listbox 字段设置

下表描述了可以应用于Listbox字段的设置:

1. value

String Array,Listbox的值。

示例:

{"value": ["US", "UK"]}

2. defaultValue

String Array,Listbox的默认值。

示例:

{"defaultValue": ["US", "UK"]}

3. commitOnSelChange

Boolean,指示在指定设备进行选择后是否立即提交新值。

示例:

{"commitOnSelChange": true}

4. selectedIndex

Integer,指示所选项目的索引。

示例:

{"selectedIndex": 0}

5. sort

Boolean,指示字段选项项是否按字母顺序排序。

示例:

{"sort": true}

6. spellCheck

Boolean,指示在字段中输入的文本是否进行拼写检查。

示例:

{"spellCheck": true}

7. selectedIndexes

Integer Array,指示所选项目的索引。

示例:

{"selectedIndexes": [0, 2, 5]}

8. multiSelect

Boolean,指示是否可以同时选择多个字段选项。

示例:

{"multiSelect": true}

9. exportValue

String Array,Listbox字段的导出值。

示例:

{"exportValue": ["TheResult1", "TheResult2"]}	

Combobox 字段设置

下表描述了可以应用于组合框表单字段的设置:

1. value

String Array,组合框的值。

示例:

{"value": ["US", "UK"]}

2. defaultValue

String Array,组合框的默认值。

示例:

{"defaultValue": ["US", "UK"]}

3. commitOnSelChange

Boolean,指示在指定设备进行选择后是否立即提交新值。

示例:

{"commitOnSelChange": true}

4. selectedIndex

Integer,指示所选项目的索引。

示例:

{"selectedIndex": 0}

5. sort

Boolean,指示字段选项项是否按字母顺序排序。

示例:

{"sort": true}

6. spellCheck

Boolean,指示在字段中输入的文本是否进行拼写检查。

示例:

{"spellCheck": true}

7. editable

Boolean,指示组合框是否包括一个可编辑文本框和一个下拉列表。

示例:

{"editable": true}

单选按钮字段设置

下表描述了可以应用于单选按钮表单字段的设置:

1. checkStyle

Enum,表示检查标记的样式。

  • check

  • circle

  • cross

  • diamond

  • square

  • Star

示例:

{"checkStyle": "circle"}

2. groupName

String,单选按钮组的名称。将具有相同组名的单选按钮添加到同一组中。(如果该值缺失,GcExcel在处理模板后会自动将从同一个模板单元格展开的单选按钮添加到同一个组中)

示例:

{"groupName": "Teams"}

3. radiosInUnison

Boolean,指示单选按钮字段中的一组单选按钮是否将同时打开和关闭,这些单选按钮使用相同的打开状态值。如果选中了其中一个,则它们都被选中。如果清除,按钮是互斥的(与HTML单选按钮相同的行为)。

示例:

{"radiosInUnison": true}

4. checkedChoice

String,表示选中选项的值。

示例:

{"checkedChoice": "Team5"}

5. defaultCheckedChoice

String,指示用户第一次打开表单时选中选项的值。

示例:

{"defaultCheckedChoice": "Team1"}

PushButton 字段设置

下表描述了可以应用于按钮表单字段的设置:

1. highlighting

Enum,表示注释的高亮模式。

  • none

  • invert

  • outline

  • push

示例:

{"highlighting": "outline"}

2. caption

String,表示按钮的标题

示例:

{"caption": "Push"}

3. image

Base64 String,表示按钮图片

示例:

{"image": "The base64 image data."}

4. captionImageRelation

Enum,指示按钮标题相对于图像的位置。

  • captionOnly

  • imageOnly

  • captionBelowIcon

  • captionAboveIcon

  • captionAtRight

  • captionAtLeft

  • captionOverlaid

示例:

{"captionImageRelation": "captionBelowIcon"}

5. downCaption

String,当用户按下按钮时按钮的标题。

示例:

{"downCaption": "Push Down"}

6. downImage

Base64 String,当用户按下按钮时,该按钮的图像。

示例:

{"downImage": "The base64 image data."}

7. rolloverCaption

String,指示当用户将光标滚动到其活动区域而不按鼠标按钮时按钮的标题。

示例:

{"rolloverCaption": "Rollover"}

8. rolloverImage

Base64 String,指示当用户在不按鼠标按钮的情况下滚动光标到其活动区域时按钮的图像。

示例:

{"rolloverImage": "The base64 image data."}

9. imageScale

mode

Enum,表示缩放模式。

  • always

  • bigger

  • smaller

  • never

示例:

{"imageScale": {"mode": "bigger"}}

proportional

Boolean,指示图像是否应按比例缩放。

示例:

{"imageScale": {"proportional": true}}

x

Float,表示图像的位置。0.0到1.0之间的两个数字表示图像左侧和底部剩余空间的比例。值(0.0,0.0)将图像定位在按钮矩形的左下角。值(0.5,0.5)将其置于矩形中心。

此值仅在图像按比例缩放时使用。

示例:

{"imageScale": {"proportional": true, "x": 0.6}}

y

Float

示例:

{"imageScale": {"proportional": true, "y": 0.8}}

ignoreBorder

Boolean,指示按钮的外观是否应该缩放到完全适合注释的范围,而不考虑边框的线宽。

示例:

{"imageScale": {"ignoreBorder": true}}

Signature 字段设置

下表描述了可应用于签名表单字段的设置:

1. lockType

Enum,锁定字段的类型。

  • all

  • specifiedOnly

  • allButSpecified

示例:

{"lockType": "specifiedOnly"}

2. fieldNames

String Array,指示应根据lockType属性包含或排除在处理过程中的字段名称列表。

示例:

{"fieldNames": ["signerName", "time"]}

3. LockedFields

Boolean,表示当SignatureFormField被签名时是否锁定字段。

示例:

{"LockedFields": true}

type=warning

注意: GcExcel模板只在PDF文档中生成数字签名字段。如果需要在签名字段上添加签名,需要使用GcPDF或PDFBox进行处理。