前端调用电脑打印弹窗,实现任意区域内容打印功能

描述:当需要打印的内容是比较灵活(不只有表格)的情况下,可通过此方法实现

​​​​​​​

1.下载html2canvas、printJs(如果依赖中有直接引入)

2.引入依赖

 import html2canvas from 'html2canvas'
 import printJs from "print-js";

3.在打印区域的最大div绑定ref,其外层的div长款要有固定值

4.打印按钮调用的方法

printWay() {
                const printContent = this.$refs.print;
                // 获取dom 宽度 高度
                const width = printContent.clientWidth;
                const height = printContent.clientHeight;
                // 创建一个canvas节点
                const canvas = document.createElement('canvas');    
                const scale = 4; // 定义任意放大倍数,支持小数;越大,图片清晰度越高,生成图片越慢。
                canvas.width = width * scale; // 定义canvas 宽度 * 缩放
                canvas.height = height * scale; // 定义canvas高度 *缩放
                canvas.style.width = width * scale + 'px';
                canvas.style.height = height * scale + 'px';
                canvas.getContext('2d').scale(scale, scale); // 获取context,设置scale

                const scrollTop = document.documentElement.scrollTop || document.body.scrollTop; // 获取滚动轴滚动的长度
                const scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft; // 获取水平滚动轴的长度

                html2canvas(printContent, {
                    canvas,
                    backgroundColor: null,
                    useCORS: true,
                    windowHeight: document.body.scrollHeight,
                    scrollX: -scrollLeft, // 解决水平偏移问题,防止打印的内容不全
                    scrollY: -scrollTop
                }).then((canvas) => {
                    const url = canvas.toDataURL('image/png')
                    printJS({
                        printable: url,
                        type: 'image',
                        documentTitle: '', // 标题
                        style: '@page{size:auto;margin: 0cm 1cm 0cm 1cm;}' // 去除页眉页脚
                    })
                }).catch(err=>{
                    console.error(err);
                });  
            }

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Scheme中,屏蔽系统自带弹窗的方法取决于你在哪个操作系统上运行Scheme代码。以下是一些常见操作系统的方法: 1. Windows操作系统: 在Windows上,你可以使用WinAPI函数来屏蔽系统自带弹窗。你可以使用Scheme的FFI(Foreign Function Interface)来调用这些函数。具体步骤如下: - 首先,你需要找到适合的WinAPI函数来屏蔽弹窗。例如,可以使用`MessageBox`函数来显示弹窗,可以使用`SetWindowsHookEx`函数来拦截弹窗消息。 - 然后,使用Scheme的FFI功能将这些函数导入到Scheme环境中。 - 最后,在Scheme代码中调用导入的函数以屏蔽弹窗。 2. macOS操作系统: 在macOS上,你可以使用AppleScript来控制系统弹窗。AppleScript是macOS上的一种脚本语言,它可以与系统进行交互。你可以在Scheme中执行AppleScript来屏蔽弹窗。具体步骤如下: - 首先,编写一个AppleScript脚本来关闭或拦截系统弹窗。 - 然后,在Scheme代码中使用适当的库或工具来执行AppleScript脚本。 3. Linux操作系统: 在Linux上,屏蔽系统自带弹窗的方法可能因发行版和桌面环境而异。一种常见的方法是使用窗口管理器或桌面环境提供的配置选项来禁用或拦截弹窗。具体步骤请参考你所使用的Linux发行版和桌面环境的文档。 需要注意的是,Scheme本身并没有提供直接屏蔽系统弹窗功能。你需要使用操作系统提供的特定功能调用外部库来实现这个目标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值