有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
文档中心 > 腾讯云微搭低代码 > 最佳实践 > 低代码自定义 JS 方法实现页面打印
如果用户要实现页面表单或列表打印时,可以通过低代码自定义 JS 方法把要打印的内容转换成图片,然后使用 window.print() 方法进行页面打印。

核心代码如下

export default async function({event, data}) {
console.log('打印', event, data)
/**把内容转换成图片格式进行打印 */
await new Promise((resolve,reject) => {
const s = document.createElement('script')
s.src= 'https://html2canvas.hertzen.com/dist/html2canvas.min.js'
s.onload = resolve
s.onerror = reject
document.head.appendChild(s)
})

const element = document.querySelector(`#idXX`) // 选择到要打印的组件id或者class,转换为canvas,其中 idXXX 表示要打印的元素

const hide_element = element.querySelector(`#idXXX`);// 选择要隐藏的元素,其中 idXXX 表示要隐藏的元素
hide_element.style.visibility = 'hidden'

if(!element) {
throw new Error('要打印的内容不存在')
}
const { width, height } = element.getBoundingClientRect()
const canvas = await window.html2canvas(element)

// 打印
let winPrint = window.open('', '', `left=0,top=0,width=${width},height=${height},toolbar=0,scrollbars=0,status=0`);
winPrint.document.body.appendChild(canvas);
winPrint.document.close();
winPrint.focus();
winPrint.print();
hide_element.style.visibility = 'visible';// 恢复被隐藏的元素 ,其中 idXXX 表示要隐藏的元素
winPrint.close();
}

最佳实践案例

1. 创建空白页面,加入文本组件,文本内容为合同打印



2. 增加表单容器组件,绑定任意有字段的数据源(数据模型的新建可以参考操作指南中数据源相关内容)。



3. 增加按钮组件,命名打印



4. 打印按钮添加点击事件。



5. 打开低码编辑器,在自定义方法print中拷贝上面的核心代码



6. 打开调试工具,找出到打印区域 div 的 ID,当前举例 ID 是 root



7. 如果希望在打印的时候不显示提交打印按钮,可以找出这两组按钮 div 的 ID,当前举例 ID 是 id92



8. 在代码编辑器中添加打印区域 ID 和隐藏区域 ID。



9. 保存以后,回到表单页面,选择打印按钮,如下图实现打印。