vue3+ts--实际开发之--table表格打印或者保存

vue3实现指定区域打印(导出)功能-主要是解决分页内容分割问题

    • 一、 问题页面效果
    • 二、 Print.js相关属性 和使用
      • 1. 介绍
      • 2. 安装引入
      • 3. PrintJS参数配置表
    • 三 、解决关于分页文字或者表格被分割问题,解决后如下:
      • 1. 设置一个自定义table
      • 2. 运行后效果:
      • 3. 添加导出打印js
      • 4.解决后导出打印效果
  • 四、 element-ui中使用 待更新.......

一、 问题页面效果

  1. 实现功能:自定义table表格包含行和列的合并,要求保持css样式不懂能直接导出打印成A4
  2. 常见问题:能实现生成图片导出唤起打印窗口,但是会出现文字分列被分割问题,如下两种被分割情况(文字被分割或者行被分割):

在这里插入图片描述
在这里插入图片描述

二、 Print.js相关属性 和使用

1. 介绍

官网https://printjs.crabbly.com

一个小的javascript库,帮助从web打印和保存。在应用程序中直接打印PDF文件而编写的,不需要离开界面,也不需要使用嵌入。

2. 安装引入

使用npm安装:

  npm install print-js --save

使用纱线安装:

  yarn add print-js

引入:

import printJS from "print-js";

3. PrintJS参数配置表

浏览器翻译的 也可以自己去官网查看https://printjs.crabbly.com

参数默认值描述
printablenull文档来源:pdf或图像url, html元素id或json数据对象。
type‘pdf’可打印类型。可用的打印选项有:pdf, html, image, json和raw-html。
headernull可选标题与HTML、图像或JSON打印一起使用。它将被放置在页面顶部。此属性将接受文本或原始HTML。
headerStyle‘font-weight: 300;’可选的标题样式应用于标题文本。
maxWidth800最大文档宽度(以像素为单位)。根据需要进行更改。打印HTML、图像或JSON时使用。
cssnull这允许我们传递一个或多个css文件URL,这些URL应该应用于正在打印的html。值可以是具有单个URL的字符串或具有多个URL的数组。
stylenull这允许我们传递一个具有自定义样式的字符串,该字符串应应用于正在打印的html。
scanStylestrue当设置为false时,库将不会处理应用于正在打印的html的样式。使用css参数时很有用。
targetStylenull默认情况下,在打印HTML元素时,库仅处理某些样式。此选项允许您传递要处理的样式数组。例如:[‘padding-top’,‘border-bottom’]
targetStylesnull与“targetStyle”一样,这将处理任何一系列样式。例如:[‘border’,‘padding’],将包括’border-bottom’,‘border-top’,‘border-left’,‘border-right’,‘padding-top’等。您也可以传递[’*']来处理所有样式。
ignoreElements[]接受打印父html元素时应忽略的html ID数组。
propertiesnullJSON时使用。这些是对象属性名称。
gridHeaderStyle‘font-weight: bold;’JSON数据时,网格标头的可选样式。
gridStyle‘border: 1px solid lightgray; margin-bottom: -1px;’JSON数据时网格行的可选样式。
repeatTableHeadertrueJSON数据时使用。当设置为false时,数据表标题将仅显示在第一页中。
showModalnull此选项以在检索或处理大型PDF文件时显示用户反馈。
modalMessage‘Retrieving Document…’当showModal设置为true,向用户显示的消息。
onLoadingStartnull加载PDF时要执行的函数
onLoadingEndnull加载PDF后要执行的功能
documentTitle‘Document’打印html、图像或json时,这将显示为文档标题。
fallbackPrintablenull打印pdf时,如果浏览器不兼容(检查浏览器兼容性表),库将在新选项卡中打开pdf。这允许您传递要打开的不同pdf文档,而不是以“可打印”方式传递的原件。如果您在备用pdf文件中注入javascript,这可能会很有用。
onPdfOpennull打印pdf时,如果浏览器不兼容(检查浏览器兼容性表),库将在新选项卡中打开pdf。可以在这里传递一个回调函数,当发生这种情况时,该函数将被执行。在某些情况下,当您想处理打印流程、更新用户界面等时,它可能会很有用。
onPrintDialogClosenull浏览器打印对话框关闭后执行回调功能。
onErrorerror => throw error文档来源:pdf或图像url, html元素id或json数据对象。
base64null文档来源:pdf或图像url, html元素id或json数据对象。

三 、解决关于分页文字或者表格被分割问题,解决后如下:

在这里插入图片描述

⚠️ 注意 ⚠️ :此方法只适用于原声table使用,因为禁止行内分页属性不能绝对定位使用,一般的el-table等组件里边有使用定位
在这里插入图片描述

1. 设置一个自定义table

<!-- html --><el-button @click="generateImage">导出唤起打印</el-button><table id="tableDataDayin"><tr><th rowspan="2">Name</th><th colspan="2">Details</th></tr><tr><th>Age</th><th>Address</th></tr><tr><td>John</td><td>30</td><td rowspan="2">New York</td></tr><tr><td>Jane</td><td>25</td></tr><tr v-for="index in 16" :key="index"><td>Jane</td><td>25</td><td>New减肥还得好几个返回结核杆菌快递发货个i哦怕u分9外俄文i哦额UI日哦额回个i哦怕u分9外俄文i哦额UI日哦额回复{{index}}</td></tr><tr><td>John</td><td>30</td><td rowspan="3">New York</td></tr><tr><td>Jane</td><td>25</td></tr><tr><td>Jane</td><td>25</td></tr><tr><td>John</td><td>30</td><td rowspan="2">New York</td></tr><tr><td>Jane</td><td>25</td></tr></table>
<!-- css -->
#tableDataDayin {border-collapse: collapse;width: 100%;
}#tableDataDayin th {background-color: #f2f2f2;border: 1px solid #ddd;
}#tableDataDayin td {border: 1px solid #ddd;padding: 8px;
}#tableDataDayin th,
#tableDataDayin td {text-align: left;page-break-inside: avoid !important; //主要就是这个属性 禁止行内分页
}#tableDataDayin tr:nth-child(odd) {background-color: #f7f7f7;
}#tableDataDayin tr:nth-child(even) {background-color: #f2f2f2;
}

2. 运行后效果:

在这里插入图片描述

3. 添加导出打印js

<!-- js -->
<script setup lang="ts">
import printJS from "print-js";const generateImage = () => {printJS({printable: "tableDataDayin", //table表格 idtype: "html", // 类型targetStyles: ["*"],});
};
</script>

4.解决后导出打印效果

在这里插入图片描述

四、 element-ui中使用 待更新…

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

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

相关文章

c4d云渲染怎么操作?怎么使用?一文带你了解

Cinema 4D (C4D) 不仅是众多设计师所青睐的卓越三维软件&#xff0c;其自带的高效渲染器以及对云渲染农场的支持&#xff0c;都极大地拓宽了创意和生产的边界。通过利用强大的云计算资源&#xff0c;C4D能够帮助用户轻松克服渲染速度缓慢的难题&#xff0c;从而实现更加流畅和高…

新一代异步IO框架 io_uring

1.io_uring简介 io_uring是一个Linux内核的异步I/O框架&#xff0c;它提供了高性能的异步I/O操作&#xff0c;io_uring的目标是通过减少系统调用和上下文切换的开销来提高I/O操作的性能。 io_uring通过使用环形缓冲区和事件驱动的方式来实现高效的异步I/O操作。 io_uring的设…

ai直播-智能化视频直播-全程自动学,高效互动问答!

ai直播-智能化视频直播-全程自动学&#xff0c;高效互动问答&#xff01; 普通人想要致富&#xff0c;光靠勤劳是不可能的&#xff0c;唯有抓住时代风口&#xff0c;才能铸造成功之路。 大家都知道&#xff0c;现在最赚钱的行业&#xff0c;直播和卖货&#xff0c;肯定是名列…

Codigger:Web应用让开发者拥有更高效的开发之旅

在当今软件开发领域&#xff0c;Web应用以其跨平台、易访问和实时更新的特性&#xff0c;逐渐成为了主流的开发方向。从开发者的视角来看&#xff0c;Codigger借助B/S&#xff08;浏览器/服务器&#xff09;架构和云计算技术&#xff0c;为开发者带来了诸多便利和优势。这些优势…

苏州金龙何以成为塞尔维亚中国客车第一品牌?研发向上服务助力!

5月7日至8日&#xff0c;一场举世瞩目的会晤在塞尔维亚举行。作为塞尔维亚中国客车第一品牌&#xff0c;苏州金龙海格客车也为当地民众绿色公共出行提供了“中国力量”。 目前&#xff0c;苏州金龙海格客车在塞尔维亚保有量近200台&#xff0c;是在塞尔维亚保有量最大的中国客车…

Linux系统入侵排查(二)

前言 为什么要做系统入侵排查 入侵排查1 1.排查历史命令记录 2.可疑端口排查 3.可疑进程排查 4.开机启动项 4.1系统运行级别示意图&#xff1a; 4.2查看运行级别命令 4.3系统默认允许级别 4.4.开机启动配置文件 入侵排查2&#xff1a; 1.启动项文件排查&#xff1…

友思特分享 | 激发专属跃迁:用于皮肤医美和光学研究种子源的DPSS激光器

导读 紧凑、坚固、稳定和提供高质量光束的友思特DPSS激光器因其卓越的性能&#xff0c;可作为激光种子源&#xff0c;广泛应用于皮肤医美、非线性光学OPO&#xff0c;以及全息投影技术。 激光&#xff08;Laser&#xff09;的诞生是上个世纪科学技术的巨大飞跃&#xff0c;其发…

大语言模型入门介绍(附赠书)

自2022年底ChatGPT的震撼上线以来&#xff0c;大语言模型技术迅速在学术界和工业界引起了广泛关注&#xff0c;标志着人工智能技术的又一次重要跃进。作为当前人工智能领域的前沿技术之一&#xff0c;代表了机器学习模型在规模和复杂性上的显著进步。它们通常由深度神经网络构成…

C++进阶之路:何为命名空间、缺省参数与函数重载

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

如何修复连接失败出现的错误651?这里提供修复方法

错误651消息在Windows 7到Windows 11上很常见&#xff0c;通常会出现在一个小的弹出窗口中。实际文本略有不同&#xff0c;具体取决于连接问题的原因&#xff0c;但始终包括文本“错误651”。 虽然很烦人&#xff0c;但错误651是一个相对较小的问题&#xff0c;不应该导致计算…

C#调用电脑摄像头拍照

1.打开VS2019&#xff0c;新建一个Form窗体&#xff0c;工具->NuGet包管理工具->管理解决方案的NuGet包&#xff0c;在浏览里搜索AForge.Controls、AForge.Video.DirectShow&#xff0c;安装AForge.Controls和AForge.Video.DirectShow 2.安装AForge组件完成后&#xff0c…

docker-compose集成elasticsearch7.17.14+kibana7.17.14

1.docker和compose版本必须要高 2.准备ik分词器&#xff08;elasticsearch-analysis-ik-7.17.14&#xff09;&#xff0c;下面会用到 https://github.com/infinilabs/analysis-ik/releases?page2 3.配置es-compose.yml&#xff08;切记映射容器内路径不能更改,es和kibana服务…

LeetCode例题讲解:只出现一次的数字

给你一个 非空 整数数组 nums &#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题&#xff0c;且该算法只使用常量额外空间。 示例 1 &#xff1a; 输入&#xff…

浅谈工商业储能发展下 防逆流互感器的优势

安科瑞 王盼盼 18721098782 随着新能源政策的推动和全球能源转型的需求&#xff0c;逆变器行业正在经历快速发展。其中&#xff0c;防逆流装置作为逆变器的重要组成部分&#xff0c;其互感器的选择对于逆变器的性能和稳定性至关重要。本文将从逆变器厂家制作防逆流装…

激光跟踪仪在石油化工领域高效应用

管板式换热器是一种实现物料之间热量传递的节能设备&#xff0c;在石油化工行业生产过程中扮演着重要的角色。无论是在提高生产效率&#xff0c;保证产品质量还是节约能源方面&#xff0c;都发挥着重要作用。 测量需求 管板式热交换器内部有多个管板和折流板&#xff0c;每一…

联机负载-性能测试基础

联机负载-性能测试基础 前置脚本 Action() {int iter_num 0;web_url("webtours", "URLhttp://192.168.30.131:1080/webtours", "TargetFrame", "Resource0", "RecContentTypetext/html", "Referer", "Sna…

IP SSL证书申请教程:实现HTTPS加密访问

随着网络安全意识的提高&#xff0c;HTTPS加密访问已经成为网站安全性的重要标准。通过安装SSL证书&#xff0c;网站可以实现数据的加密传输&#xff0c;有效保护用户隐私和数据安全。本文将详细介绍如何为IP地址申请SSL证书&#xff0c;并实现HTTPS加密访问。 一、准备工作 …

vue项目启动后页面显示‘Cannot GET /’

1、npm run dev命令启动项目的时候没有报错&#xff0c;页面打开却提示 Cannot GET / 2.这个时候只需要找到config文件夹下面的index.js文件。把assetsPublicPath字符串的&#xff1a;‘./’修改成 ‘/’就行了。修改完之后记得关闭项目&#xff0c;然后重新启动。不然不会生效…

UE5材质基础(2)——数学节点篇1

UE5材质基础&#xff08;2&#xff09;——数学节点篇1 目录 UE5材质基础&#xff08;2&#xff09;——数学节点篇1 Add节点 Append节点 Abs节点 Subtract节点 Multiply节点 Divide节点 Clamp节点 Time节点 Lerp节点 Add节点 快捷键&#xff1a;A鼠标左键 值相加…

WPF中页面加载时由于TreeView页面卡顿

示例&#xff1a;右侧界面的数据根据左侧TreeView的选项加载不同的数据&#xff0c;页面加载时会把所有的数据加载一遍&#xff0c;导致页面卡顿。 解决办法&#xff1a; <Setter Property"IsSelected" Value"{Binding IsSelected}"/>