# 1 打印模版
word打印和excel打印差不多,唯一的区别就是模板制作过程不同,需要自己制定一个docx文件,把需要变量通过word模板语法塞进去
# 1.1 模板制作新建一个word文档

# 1.1.1 查看码表

# 1.1.2 粘贴对应的模板语法到word中

# 1.1.3 模板语法


常用语法如下:
数据:{a: 1}
{a}
数据:{imageUrl: 'https:xxxx'}或者图片组件
{%imageUrl}
数据:{__nameObject: {name: 1, code: '123'}}
{#__nameObject} {name} {/__nameObject}:{#__nameObject} {code} {/__nameObject}
数据:{list: [{name: 1, code: '123'}]}
{#list} {name} {code} {/list}
# 常见问题
# word结果打印样式发生变化,不符合预期?
可以去首选项开启word转pdf

# 除了码表外,需要一些额外的数据
可以在表单打印前添加事件,或视图打印前添加事件 添加额外的返回数据
const data = arguments[0]
return {
a: data.name === '0' ? 'sss' : 'hhh'
}
然后模版中使用{a}
# 如何手动调用 getPdf
const query = {
appName: 'AFCENTER', // 当前应用名称
entityCode: 'sj.Inventory', // 当前表单 code
formId: '1', // 当前数据的id
entityName: 'sj.three.Inventory', // 当前实体名称
formData: JSON.stringify({ // 需要打印的数据非常重要
a: '1',
templateName: '123',
}),
templateCode: 'template1758023816234', // word 模板code
responseType: 'docx',
isDownload: true
}
const res = await this.Api.getPdf(query)
console.log('res:', res) // 二进制流
注意:这些参数,最简单的办法获取,可以从正常的打印功能的地址中解析获取,例如: http://10.15.15.151:13082/#/module/formDesigner/page/print?appName=AFCENTER&entityCode=ee.newres123&formId=1401&entityName=ee.sdf.OrderMaterial&formData={}&templateCode=template1765853133131&isPrint=true&type=&titleField=&codeField=
# 如何手动调用 getTempPdfUrl
const query = {
appName: 'AFCENTER', // 当前应用名称
entityCode: 'sj.Inventory', // 当前表单 code
formId: '1', // 当前数据的id
entityName: 'sj.three.Inventory', // 当前实体名称
formData: JSON.stringify({ // 需要打印的数据非常重要
a: '1',
templateName: '123',
}),
templateCode: 'template1758023816234', // word 模板名称
responseType: 'docx',
isDownload: true
}
const res = await this.Api.getPdf(query)
console.log('二进制流::', res)
const tempUrl = this.Api.getTempPdfUrl(res.data)
window.open(tempUrl)