Appearance
打印专题:「基础word模版」
通过创建word模版,可以实现对表单内容的自定义打印
本节介绍基础word模版的用法
1.导入打印模板及使用
1.1word创建
创建一个word文档,用作打印模板
创建表单用于显示主表信息

- 在"布局"中可以调整纸张方向,页边距等参数

1.2导入打印模版
编辑表单->表单设置->新增模板
选择模板类型为Word打印
设置模板的名称便于后续调用
上传创建的word模板保存即可

1.3生成打印文件
选择要打印的表单数据
单击右上角的打印图标
选择刚刚创建的打印模板即可生成预览打印文件

2.word模板基础语法
在word文档中,通过使用特定的符号来将表单字段导入到word中
2.1导入基础字段
固定结构:<<R["控件名"]>>
结构说明:
<<>>:固定标记符号,符号内的内容将被替换R:表示包含表单记录的所有内容控件名:可以是文本控件,数值控件,单选控件等,必须用""包含
在执行打印操作后,word中<<R["控件名"]>>的内容将被替换为对应控件的值
例如:
订单编号: <<R["订单编号"]>>会被替换为订单编号: DB-000189;
商品总数量: <<R["商品总数量"]>>会被替换为 商品总数量: 180;

效果图:

注意事项:
<>,"",[]等符号均为英文符号!
自定义逻辑
<<>>区域内支持js脚本
例如你可以将"消费金额"保留两位小数显示:
<<R["消费金额"].toFixed(2)>>
这里的R["消费金额"]在js中仍为数值类型;选择其他控件,则为其对应类型
2.2导入特殊字段
基础语法与前面相同,但提供一些格式化数据的参数
1.添加日期
格式:
添加日期字段时,默认使用时间戳格式,要转换为可读的日期使用以下语法:
<<toDate(R["日期控件名"], 日期格式)>>
示例: 添加"成交日期"到word:
<<toDate(R["成交日期"], "yyyy年MM月dd日")>>
说明:
日期格式:yyyy-MM-dd hh:mm:ss;例如,当表示年月日时可以使用:yyyy年MM月dd日(或yyyy-MM-dd)
相当于用
yyyy替代年,MM替代月......(注意'月'和'分'的m,一个大写一个小写)["日期控件名"]为Number类型字段值(时间戳毫秒格式)
toDate为日期转换方法,可以将时间戳转为指定格式的日期
自定义逻辑:
使用js脚本你可以计算成交日期距离今天有多少天:
<<(Date.now() - R["成交日期"]) / 24 / 3600000>>
2.添加时刻
格式:
<<toTime(R["时刻控件名"], 时刻格式)>>
示例: 添加"成交时刻"到word:
<<toTime(R["成交时刻"], "hh时mm分")>>
说明:
- ["时刻控件名"]为Number类型字段值(零点到指定时刻的毫秒数)
- toTime为时刻转换方法
3.添加图片
格式:
<<IMAGE toImage(R["图片控件名"], {width, height, index, caption, isOriginal})>>
示例: 添加"成交截图"到word:
<<IMAGE toImage(R["成交截图"], {width: 1, height: 1, index: 1, caption: R["客户名"]})>>
说明:
添加图片字段到Word模板中
<<IMAGE >>: 固定标记符号,标记符号内的内容将被替换为图片toImage: 为图片转换方法,接收两个参数,参数1:图片数据;参数2:转换参数width: 图片宽度[必填](采用word计量单位:cm)height: 图片高度[必填](采用word计量单位:cm)index: 需要打印第几张图片[选填](例如:打印第一张图片时,传递1)caption: 图片下方的描述文字[选填]isOriginal: 是否打印原图[选填](true:原图;false:缩略图)["图片控件名"]:为表单图片字段,结构为:[{compressedPic:String, originalPic:String}]
4.添加附件:
格式:
<<IMAGE toFile(R["附件控件名"], {width, height, index, caption})>>
示例: 添加"成交合同"到word:
<<IMAGE toFile(R["成交合同"], {width: 1, height: 1, index: 1, caption: R["合同编号"]})>>
说明:
添加附件字段到Word模板中时并将附件转换为下载二维码:
<<Image>>:固定标记符号,标记符号内的内容将被替换为图片toFile:为下载链接转换为二维码方法,接收两个参数,参数1:附件数据;参数2:转换参数width:二维码宽度[必填](采用word计量单位:cm)height:二维码高度[必填](采用word计量单位:cm)index:需要打印第几个附件[选填](例如:打印第一个合同时,传递1)caption:二维码下方的描述文字[选填]["附件控件名"]: 为表单附件字段,为String[]类型字段值(下载链接数组)
5.添加富文本
格式:
<<toText(R["日期控件名"])>>
示例 :添加“详细说明”到word:
<<R["详细说明"]>>
说明:
toText:为文本转换方法,将富文本转换为普通文本["富文本控件名"]:为String类型字段值
6.添加手写签名
格式:
<<IMAGE toSign(R["签名控件名"], {width, height, caption})>>
示例: 添加"确认签名"到word:
<<IMAGE toSign(R["确认签名"], {width: 1, height: 1, caption: R["客户姓名"]})>>
说明:
<<IMAGE >>:固定标记符号,标记符号内的内容将被替换为图片toSign:签名转换方法,接收两个参数,参数1:签名数据;参数2:转换参数width:签名宽度[必填](采用word计量单位:cm)height:签名高度[必填](采用word计量单位:cm)caption:签名下方的描述文字[选填]["签名控件名"]: 为表单签名字段,为String类型字段值(签名链接)
7.添加二维码
格式:
<<IMAGE toQR(R["文本控件名"], {width, height, caption})>>
示例:
<<IMAGE toQR(R["支付订单号"], {width: 1, height: 1, caption: R["付款日期"]})>>
说明:
添加二维码到Word模板中,将文本转换为二维码
<<IMAGE >>:固定标记符号,标记符号内的内容将被替换为图片toQR:为二维码转换方法,接收两个参数(参数1:文本内容;参数2:转换参数)width:图片宽度[必填](采用word计量单位:cm)height:图片高度[必填](采用word计量单位:cm)caption:图片下方的描述文字[选填]["文本控件名"]:, 为String类型字段值
使用js脚本,可以支持访问链接[注意:打印模版需要启用相关配置] 添加外部访问链接:<<IMAGE toQR(R["EXTERNAL_LINK"], {width, height, caption})>> 添加内部访问链接:<<IMAGE toQR(R["INTERNAL_LINK"], {width, height, caption})>>
8.添加条形码
格式:
<<IMAGE toBAR(R["文本控件名"], {width, height, color, isShowText, fontSize, margin})>>
示例:添加"支付订单号"对应的条形码到word:
<<IMAGE toBAR(R["支付订单号"], {width: 10, height: 2, isShowText: true})>>
说明:
将文本转换为条形码
<<IMAGE >>:固定标记符号,标记符号内的内容将被替换为图片toBAR:为条形码转换方法,接收两个参数(参数1:文本内容;参数2:转换参数)width:图片宽度[必填](采用word计量单位:cm)height:图片高度[必填](采用word计量单位:cm)color:条形码颜色[选填](默认为:黑色(”#000000”),采用16进制颜色)isShowText:是否显示文本[选填](默认为:true(显示),采用布尔值:true/false)fontSize:字体大小[选填](默认为:20,单位为:像素)margin:条形码外边距[选填](默认为:10,单位为:像素)["文本控件名"], 为String类型字段值
9.添加地区
格式:
<<R["地区控件名"]>>
示例: 添加"收货地址"到word:
<<R["收货地址"]>>
说明:
["地区控件名"]为String[]类型字段值(地区名倒序数组)
可以将"收货地址"使用"/"拼接后正序显示:
<<R["收货地址"].reverse().join("/")>>
3.插入子表
3.1表格的插入方法
掌握word中表格的绘制方法,便于后续对复杂子表打印的自定义
在"插入"选项中点击表格,可以看到有多种插入表格的方式
鼠标在网格上移动,能够预览创建的对应行列数的表格,单击生成表格

"插入表格"可以直接指定表格的行列数,和间距等属性,适合大表格

选择"绘制表格"使用鼠标拖拽自定义表格

也可导入Excel表格或者使用"快速表格"中的已有模板
插入表格后可以根据需要对表格进行调整
鼠标右键要调整的区域选择表格属性即可调整该格的参数

同样的方式调整行列间距,也可以直接使用鼠标拖动

也可以选择手动绘制表格,进行调整

3.2导入子表数据
在word中创建好表格后,要添加子表到word模板中,需要对子表进行循环
方法格式:
| 表头1 | 表头2 | 表头3 |
|---|---|---|
<<FOR r IN R["子表控件名"]>> | ||
<<$idx>> | <<$r["记录字段名1"]>> | <<$r["记录字段名2"]>> |
<<END-FOR r>> |
例如:
| 序号 | 客户名 | 跟进时间 | 跟进记录 |
|---|---|---|---|
<<FOR r IN R["跟进记录"]>> | |||
<<$idx+1>> | <<$r["姓名"]>> | <<toDate($r["跟进时间"],"yyyy年-MM月-dd日")>> | <<$r["跟进记录"]>> |
<<END-FOR r>> |
方法说明:
<<toDate(R["死亡时间"], "yyyy-MM-dd")>>
<<FOR r IN R["子表控件名"]>>:,表示对子表进行循环,循环记录名为r(可以重命名)<<$r["记录字段名1"]>>:表示从循环记录上获取指定字段的值(结构与基础字段一致)<<$idx>>:表示获取每次循环的下标(从0开始,如果希望从1开始则设置为:<<$idx + 1>>)<<END-FOR r>>:表示结束循环
提示
命令会遍历子表中的所有记录,每条记录会暂存在r中,可以使用<<$r["控件名"]>>来访问子表的对应字段
一条子表记录处理完后会自动在下方新增行显示下一条子表记录
要导入子表必须在word中插入表格
<<>>内同样支持js
例如可以只对姓赵的客户的"跟进记录"进行循环:
<<FOR r IN R["跟进记录"].filter(item => item["客户名"] === "赵")>>
简单来说,子表中模版的用法与主表大致相同,只是将R[]替换成$r表示填充子表字段
3.3简单示例
生成子表字段

打印效果如下:
