微搭低代码实现表单打印功能

简介: 微搭低代码实现表单打印功能

在我们的日常开发场景中,表单打印是一个比较常见的场景,微搭本身不带打印功能,我们需要借助一个第三方的库来实现打印。

1 引入第三方库

在微搭中如果需要引入第三方库的,需要打开你所在的应用,在应用编辑器侧边栏导航找到最后一个菜单

输入我们的第三方库的地址

https://html2canvas.hertzen.com/dist/html2canvas.min.js

引入库的时候要确保地址是可访问的

熟悉前端开发的小伙伴可能更习惯使用npm进行安装,微搭不支持npm的形式,只可以引入外部的js

2 搭建页面

我们打印的时候,一般是在PC端上使用,因此构建的时候我们要选择PC的模式

打印场景一般是在查看页面,我们的查看页面可以使用表单容器完成,表单容器的场景我们选择查看,为了演示方便我们需要设置一个ID


再一个就是设置打印区域的问题,html2canvas库实现的原理是给页面拍一个照片,我们拍哪个区域比较合适呢?


因为考虑到电脑屏幕的大小不同,有的是比较宽有的又比较窄,因此我们设置我们的打印区域的宽度为1080


为了实现这个效果,我们给表单容器设置了两层的普通容器作为布局。第一层呢我们是让页面充满屏幕,第二层就是打印区域设置一个固定宽度。

第一层我们设置让我们内部的元素横向排列,居中对齐

第二层容器设置一个固定宽度

3 实现打印

打印区域设置好了之后,就需要定义一个方法来调用我们的第三方库

我们给打印按钮设置一个自定义方法,命名为print

在print方法里输入如下的代码

export default async function({event, data}) {
const element = document.querySelector(`#container6`) // 选择到要打印的组件id或者class,转换为canvas,其中 idXXX 表示要打印的元素
  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();
  winPrint.close();
}

首先需要选择打印的区域,我们是设置的第二个普通容器,需要选择一下容器的ID

const element = document.querySelector(`#container6`)

打印区域设置好之后,我们需要得到元素的宽和高

const { width, height } = element.getBoundingClientRect()

不熟悉JS语法的同学可能对这个不是太理解,这个叫解构赋值,通过结构赋值就将右边调用的方法得到的返回值分别赋值给了左侧的两个变量width和height

我们这里是对象的解构,将对象分别赋值给属性,如果你阅读官方模板还会看到数组的解构

const canvas = await window.html2canvas(element)

这一行代码相当于将获取到的打印元素设置到我们的画布里,其余的代码就是调用了浏览器的打印功能

4 实现效果

代码设置好之后,我们点击预览功能,然后点击打印按钮就可以看到具体的效果

总结

本篇带着大家实现了一下表单打印的功能,表单打印需要是在PC环境,而且要正确的设置打印区域并调用html2canvas库实现,需要的同学照着教程练习一遍吧。

相关文章
|
前端开发 开发者 Windows
2行代码将你的本地服务暴露在公网!
【8月更文挑战第8天】【8月更文挑战第7天】
1926 1
2行代码将你的本地服务暴露在公网!
|
存储 机器学习/深度学习 人工智能
介绍一下RDBMS
【10月更文挑战第21】介绍一下RDBMS
567 2
|
NoSQL 安全 Java
Redis6入门到实战------ 三、常用五大数据类型(字符串 String)
这篇文章深入探讨了Redis中的String数据类型,包括键操作的命令、String类型的命令使用,以及String在Redis中的内部数据结构实现。
Redis6入门到实战------ 三、常用五大数据类型(字符串 String)
|
11月前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
459 7
ThinkPHP6模型中的获取器,修改器及搜索器的简单使用
本文介绍了ThinkPHP6模型中的获取器、修改器和搜索器的使用方法。获取器用于对模型数据进行自动处理,修改器用于处理模型设置的数据,搜索器用于封装字段的查询条件表达式。文章通过示例代码展示了如何在模型中定义和使用这些方法,以及如何通过控制器调用模型方法进行数据操作。
|
Web App开发 缓存 安全
解决Edge浏览器提示“此网站已被人举报不安全”
【9月更文挑战第1天】当 Edge 浏览器提示“此网站被举报为不安全”时,可尝试:关闭 Microsoft Defender SmartScreen;检查网站安全性;清除缓存和 Cookie;更新 Edge 至最新版;或使用其他浏览器。若问题依旧,联系网站管理员和技术支持。同时,避免在不可信网站输入敏感信息,保护网络安全与隐私。
3319 7
|
安全 网络安全 算法框架/工具
欧拉系统出现 algorithm negotiation fail 错误解决
【5月更文挑战第5天】欧拉系统出现 algorithm negotiation fail 错误解决
2379 3
|
SQL 关系型数据库 MySQL
【MySQL】脏读、不可重复读、幻读介绍及代码解释
【MySQL】脏读、不可重复读、幻读介绍及代码解释
|
消息中间件 Kafka API
深入解析Kafka消息传递的可靠性保证机制
深入解析Kafka消息传递的可靠性保证机制
338 0
|
自然语言处理 知识图谱 搜索推荐
大语言模型 RAG 论文总结(2023~202404)(3)
大语言模型 RAG 论文总结(2023~202404)
666 0