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

news2024/11/15 5:50:46

目录

  • 1 引入第三方库
  • 2 搭建页面
  • 3 实现打印
  • 4 实现效果
  • 总结

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

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库实现,需要的同学照着教程练习一遍吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/709402.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云免费云服务器领取教程

阿里云推出了免费试用中心,提供超百款免费试用云产品,个人用户与企业用户均可免费试用,云服务器最长免费体验3个月! 一、活动地址 阿里云免费试用中心 二、活动对象 满足以下全部条件的阿里云用户: 1、阿里云注册会…

JS模块化规范及进化史

模块化规范及进化史 按照功能和需求分成各个模块,最后再把所有模块合并在一起。当然现在基于webpack vue/react,模块化开发很重要。某个功能板块单独写成一个模块,然后把模块合在一起,最后把整个页面的功能实现。方便团队管理 小插…

stunnel-加密通道-squid-IP缓存服务器-openssl自签名证书

文章目录 1.安装squid2.管理squid服务3.安装Stunnel服务器端4.安装Stunnel客户端5.在目标使用位置开启代理 1.安装squid yum install squid 2.管理squid服务 systemctl start squid systemctl stop squid systemctl status squid 查看端口 netstat -lntpo | grep 8**** 修改配…

集成增益采样电路误差计算--适用INA214

一、 一般集成电路结构如下: 二、 典型的计算步骤如下: 主要误差来源:采样电阻R-shunt,集成增益运放,ADC误差。 采样电阻误差 误差项包括常温下电阻的精度X1%,电阻的温漂值X2% 误差百分比为:…

《C++ Primer》--学习11

关联容器中的元素是按关键字来保存和访问的 两个主要的关联容器类型是 map 和 set。map 中的一个关键字-值(key - value)对:关键字起到索引作用,值则表示与索引相关联的数据。set 中每个元素只包含一个关键字; 以下八…

Java-数据结构(一)

这里写目录标题 前言一、为什么需要数据结构?1、低效的操作2、占用过多的内存空间3、困难的数据操作 二、枚举(Enumeration)1、定义2、关键字3、适用场景 三、 位集合(BitSet)1、定义2、方法3、适用场景 四、向量&…

文件操作 -- C语言

在之前学习的时候,我们可以发现当程序运行完,我们之前保存的数据就会消失,再次运行时还得重新输入,为了使我们保存的数据在下次运行时还能使用,我们这篇文章来学习一下怎么使用文件操作,将我们的数据保存在…

SQL14 操作符混合运用

select device_id,gender,age,university,gpa from user_profile where university山东大学 and gpa>3.5 or university复旦大学 and gpa>3.8;

Linux 抓包工具——tcpdump

1 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口…

由浅入深探究mysql索引结构原理、性能分析与优化

目录 第一部分:基础知识 第二部分:MYISAM和INNODB索引结构 1、 简单介绍B-tree B tree树 2、 MyisAM索引结构 3、 Annode索引结构 4、 MyisAM索引与InnoDB索引相比较 第三部分:MYSQL优化 1、表数据类型选择 2、sql语句优化 3、系统配置与维护…

Java对称与非对称加密解密(AES与RSA)

尽可能预想所有残酷的可能性、因为现实永远让你无法预警,而且又吝于给人慈悲。——富坚义博 今天我们讨论一下秘钥这个东西 一、对称加密技术与非对称加密技术简述 加密技术可以分为对称与非对称两种。 对称加密、解密即加密与解密用的是同一把秘钥,常用的对称加密技术有DES,A…

MySQL - 连表查询 Join On 详解

1. 连表查询详解 市面上有 7 种连表查询, 总共归为三大类 : 左查询 LEFT JOIN -- 以左表为基准右查询 RIGHT JOIN -- 以右表为基准交叉查询 INNER JOIN -- 查询两表都有的数据 操作描述inner join如果表中至少有一个匹配, 就返回行left join会从左表中返回所有的值…

IDEA 设置文件头的注释信息author,date,description

打开setting设置窗口 file and code Templates 2、编辑Class模版 /*** Author:${USER}* Date:${YEAR}-${MONTH}-${DAY}* Description:TODO* */ 创建一个新JAVA类,测试一下,OK

chatgpt赋能python:如何通过Python赚取外快:SEO技巧分享

如何通过Python赚取外快:SEO技巧分享 作为一名有10年Python编程经验的工程师,我发现Python不仅用来写代码,还可以用来赚取外快。SEO是一个非常赚钱的市场,而Python可以帮助我们更好地优化网站,从而实现更高的排名&…

一步一步学OAK之四:实现如何在低延迟下使用高分辨率视频

目录 Setup 1: 创建文件Setup 2: 安装依赖Setup 3: 导入需要的包Setup 4: 创建pipelineSetup 5: 创建节点Setup 6: 设置节点的属性和参数。Setup 7: 建立链接关系Setup 8: 连接设备并启动管道Setup 9: 创建与DepthAI设备通信的输入队列和输出队列Setup 10: 主循环获取视频帧显示…

深度学习与神经网络阅读笔记(持续更新)

深度学习与神经网络阅读笔记(持续更新) 机器学习基础绪论人工智能主要领域可分为如下:人工智能的发展史:机器学习表示学习深度学习 线性模型Logistic回归Softmax回归感知器支持向量机总结对比 基础模型循环神经网络应用到机器学习…

MongoTemplate手动动态创建(简版)

1、背景 最近遇到一个需求,就是动态获取springboot中MongoTemplate,有哪些mongo数据库在项目启动的时候不确定,运行过程中有可能会增加,也有可能减少。只能通过一个接口获取所有mongo数据库的地址。但是springboot本身提供的mong…

panda3d 模型转换命令复习学习

在此学习了把maya模型转换为panda3d的egg格式; 在Panda3d中转换Maya模型为egg格式并使用pview查看_panda3d egg文件浏览器_bcbobo21cn的博客-CSDN博客 下面继续看一下模型转换命令;列出带 egg 字符串的命令; 先复习一下,可以把m…

Java -- XXL-JOB分布式任务调度平台

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用 xxl是xxl-job的开发者大众点评的【许雪里】名称的拼音开头 官网地址 分布式任务调度平台XXL-JOB 文档地址…

响应数据加密解决方案

需求分析 响应数据加密是一种很重要的安全措施,可以保护数据在传输过程中不被未经授权的用户拦截、窃取或篡改。以下是响应数据加密需求分析: 响应数据必须进行加密: 所有响应数据必须进行加密,以保证数据在传输过程中的安全性。服务器可以采用HTTPS协议对响应数据进行加密…