vue+antd——实现table表格的打印——分页换行,每页都有表头——基础积累

news2025/2/28 6:35:38

这里写目录标题

  • 场景
  • 效果图
  • 功能实现1:html代码
  • 功能实现2:css样式
  • 功能实现3:js代码
  • 补充内容
        • page-break-inside 属性
        • page-break-after属性
        • page-break-before 属性

场景

最近在写后台管理系统时,遇到一个需求,就是要实现表格的打印功能。

下面整理一下需求:

1.表格是antd中的table组件
2.表格中含有多个字段,打印时不能出现滚动条,支持多页打印
3.表格内容很多时,要保证不能出现单元格断页,且每页需要添加表头
4.打印的内容只有table区域,其余内容不要打印

效果图

在这里插入图片描述
横向打印预览效果:
在这里插入图片描述
纵向打印预览效果:
在这里插入图片描述

功能实现1:html代码

<a-card class="box-card topSearchBox">
  <a-button type="primary" @click="handlePrint">打印余料清单</a-button>
  <a-table
    id="printContent"
    :loading="spinning"
    :data-source="tableList"
    bordered
    :columns="columns"
    :pagination="false"
  >
  </a-table>
</a-card>

功能实现2:css样式

<style type="text/css" scoped lang="less">
@page {
  size: auto;
  margin: 10mm 20mm;
}
@media print {
  /* 打印时隐藏相关文章链接 */
  #printContent {
    width: 900px;
    transform: scale(0.68);
    zoom: 0.5;
    border: 1px solid red;
  }
}

#printContent {
  width: 100%;
  margin-top: 20px;
  transform: scale(1);
  zoom: 1;
}
#printContent table {
  width: 100%;
  border: 1px solid #000;
  border-right: none;
  border-bottom: none;
  page-break-inside: avoid;
  page-break-after: avoid;
  page-break-before: avoid;
}
::v-deep {
  #printContent table td,
  #printContent table th {
    vertical-align: middle;
    font-size: 3.4mm;
    text-align: left;
  }
}
</style>

功能实现3:js代码

handlePrint() {
  this.$nextTick(() => {
    let printWrap = document.getElementById('printContent');
    let oldStr = window.document.body.innerHTML;
    let newStr = printWrap.innerHTML;
    window.document.body.innerHTML = newStr;
    window.print();
    setTimeout(() => {
      printWrap.style.zoom = 1;
      window.document.body.innerHTML = oldStr;
      location.reload();
    }, 100);
  });
},

完成!!!多多积累,多多收获!!!

下面内容为补充内容,可忽略!!!

补充内容

page-break-inside 属性

属性定义及使用说明
page-break-inside 属性设置元素前的 page-breaking 行为。

注意: 您不能对绝对定位的元素使用此属性。

注意: 请尽可能少地使用分页属性,并且避免在表格、浮动元素、带有边框的块元素中使用分页属性。

属性值

描述
auto默认,如果必要则在元素内部插入分页符。
avoid避免在元素内部插入分页符。
inherit规定应该从父元素继承 page-break-inside 属性的设置。

page-break-after属性

此CSS属性用于在打印文档时调整元素后的分页符。在打印过程中,它将在指定元素之后插入一个分页符。我们不能在绝对定位的元素 (position:absolute;)或不生成框的空
元素上使用此属性。
此CSS属性表示在元素框后是否允许分页符。 CSS属性 page-break-before 和 page-break-inside 包括 page-break-after ,可帮助我们定义行为的行为。文档。

语法

page-break-after: auto | always | left | right | avoid | initial | inherit;

描述
auto这是默认值,必要时在元素后插入分页符。
always它指定元素之后强制分页。
left它用于避免在元素之后分页。
right它会在指定元素后强制分页一次或两次,以便将下一页描述为左侧页面。
avoid它会在指定元素之后强制分页一次或两次,以便将下一页显示为右侧页面。
initial它将属性设置为其默认值。
inherit如果指定了此值,则对应的元素将使用其父元素的计算值。

page-break-before 属性

属性定义及使用说明
page-break-before 属性设置元素前的 page-breaking 行为。

注意: 您不能对绝对定位的元素使用此属性。

注意:请尽可能少地使用分页属性,并且避免在表格、浮动元素、带有边框的块元素中使用分页属性。

描述
auto这是默认值,必要时在元素后插入分页符。
always在元素前插入分页符。
avoid避免在元素前插入分页符。
left在元素之前足够的分页符,一直到一张空白的左页为止。
right在元素之前足够的分页符,一直到一张空白的右页为止。
inherit规定应该从父元素继承 page-break-before 属性的设置。

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

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

相关文章

【独家工具】JMeterPerfReporter3.0正式版本,让你的JMeter更好用

Lemon-JMeterPerfReporter工具&#xff0c;是我们性能测试课程教研组根据JMeter性能测试报告的不足&#xff0c;定制开发的一个性能报告生成工具。有需要的同学&#xff0c;可以通过小编官方gitee账户下载&#xff0c;或咨询我免费获取哦&#xff01; 做过性能测试的人员都知道…

单目标应用:基于蜘蛛蜂优化算法(Spider wasp optimizer,SWO)的微电网优化调度MATLAB

一、微网系统运行优化模型 微电网优化模型介绍&#xff1a; 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 二、蜘蛛蜂优化算法 蜘蛛蜂优化算法&#xff08;Spider wasp optimizer&#xff0c;SWO&#xff09;由Mohamed Abdel-Basset等人于2023年提出&#xff0c;该…

企业帮助中心如何在线搭建,还能多场景使用呢?

搭建一个企业帮助中心的在线平台可以帮助企业提供高效的客户支持和解决方案。同时&#xff0c;这个平台还可以用于其他场景&#xff0c;例如内部员工培训、知识共享等。下面我将详细介绍如何在线搭建一个企业帮助中心&#xff0c;并且使其能够多场景使用。 选择合适的在线平台…

jeecg vue3版本集成达梦数据库

jeecg他的文档中有一个集成达梦数据库的步骤&#xff0c;链接如下 连接达梦数据库 - JeecgBoot 文档中心&#xff0c;但是我按照步骤去操作的时候并没有适配成功&#xff0c;大部分是他的步骤写的不够清楚&#xff0c;没有说明改哪里的文件&#xff0c;下面是我摸索的适配步骤。…

[移动通讯]【Carrier Aggregation-4】【LTE-1】

前言&#xff1a; 参考&#xff1a; 《Carrier Aggregation Explained In 101 Seconds》 Qualcomm 《Carrier aggregation (CA) in LTE-Advanced by TELCOMA Global》TELCOMA Global 《Carrier Aggregation _CA_Part1》 《Carrier Aggregation _CA_Part2》 《Carrier Aggregati…

【Opencv入门到项目实战】(十一):harris角点检测|SIFT|特征匹配

所有订阅专栏的同学可以私信博主获取源码文件 文章目录 1.harris角点检测2.尺度不变特征变换&#xff08;SIFT&#xff09;2.1图像尺度空间2.2 关键点定位2.3 消除边界响应2.4 代码示例 1.harris角点检测 这一节我们来讨论一下Harris角点检测&#xff0c;由Chris Harris和Mike…

论文分享丨西工大音频语音与语言处理研究组四篇论文被IEEE Trans. ASLP和SPL录用

近日&#xff0c;实验室三篇论文被语音研究顶级期刊IEEE/ACM Transactions on Audio, Speech and Language Processing (TASLP)录用&#xff0c;一篇论文被重要期刊IEEE Signal Processing Letters (IEEE SPL)录用&#xff0c;论文方向涉及说话人识别中的对抗攻击、基于扩散模型…

初学python(一)

一、python的背景和前景 二、 python的一些小事项 1、在Java、C中&#xff0c;2 / 3 0&#xff0c;也就是整数 / 整数 整数&#xff0c;会把小数部分舍掉。而在python中2 / 3 0.66666.... 不会舍掉小数部分。 在编程语言中&#xff0c;浮点数遵循IEEE754标准&#xff0c;不…

vscode中git的使用,以及与webstorm中git的使用对比

前言&#xff1a; 在项目中经常使用的git提交我们代码的时候&#xff0c;vscode和webstorm 是用的非常多的两个工具了&#xff0c;这里再次整理下他们的具体使用以及各自的优势&#xff01; 1、初始化拉取项目 个人习惯&#xff0c;这里就不说框架用法了&#xff0c;原始的最简…

Python函数的概念以及定义方式

一. 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 二. 什么是函数&#xff1f; 假设你现在是一个工人&#xff0c;如果你实现就准备好了工具&#xff0c;等你接收到任务的时候&#xff0c; 直接带上工…

【安全】正则回溯绕过练习简单案例

目录 环境 案例1 前要 代码审计 分析 案例2 代码审计 分析 payload 环境 phpstudy 案例1 前要 php中0 1 -1 true false null 空字符 数组之间的比较 代码审计 <?php function areyouok($greeting){return preg_match(/Merry.*Christmas/is,$greeting); //2.传…

FP103 双运算放大器和参考调节器芯片

FP103 双运算放大器和参考调节器芯片 一般说明 FP103是一个由一个独立的运放器&#xff08;OPA2&#xff09;和另一个运放器&#xff08;OPA1&#xff09;组成&#xff0c;在非反相输入上具有2.5V精密电压参考&#xff0c;应用于许多应用&#xff0c;如电源、二流/直流转换器或…

python selenium控制浏览器打开网页 模拟鼠标动作

selenium 是一个浏览器控制的库 需要下载安装 谷歌浏览器的驱动 chromedriver https://sites.google.com/chromium.org/driver/downloads 在这里选择跟自己谷歌浏览器版本号一致的驱动程序 如果是最新的浏览器版本可以点这里下面这个链接 Chrome for Testing availability 选…

Web自动化测试详细流程和步骤

一、什么是web自动化测试 自动化&#xff08;Automation&#xff09;是指机器设备、系统或过程&#xff08;生产、管理过程&#xff09;在没有人或较少人的直接参与下&#xff0c;按照人的要求&#xff0c;经过自动检测、信息处理、分析判断、操纵控制&#xff0c;实现预期的目…

echo tail 与 重定向符

1.echo 命令 可以使用echo命令在命令行内输出指定内容 语法: echo输出的内容 无需选项&#xff0c;只有一个参数&#xff0c;表示要输出的内容&#xff0c;复杂内容可以用””包围其类似于 printf 函数 例子&#xff1a; 2. 反引号符 被包围的内容&#xff0c;会被作为命令…

SpringMVC_拦截器

4.拦截器 4.1拦截器概述 概述&#xff1a;一种动态拦截方法调用的机制&#xff0c;在SpringMVC中动态拦截控制器方法的执行实际开发中&#xff0c;静态资源&#xff08;HTML/CSS&#xff09;不需要交给框架处理&#xff0c;需要拦截的是动态资源 4.2图示 图示 4.3案例实现 …

基于Java SSM+layui+mysql实现的图书借记管理系统源代码+数据库

介绍 本项目使用的技术栈是SSMlayuimysql&#xff0c;服务器使用的是tomcat 其中书籍图片存放的位置需要先在tomcat根目录下conf/setting.xml中配置虚拟路径&#xff0c;本项目配置的是D:\upload 完整代码下载地址&#xff1a;图书借记管理系统 用户角色划分 游客 使用本系…

Scrum敏捷开发实施步骤和注意事项

在当今高度变化的时代&#xff0c;软件开发的环境和要求也在不断变化。传统的开发方法往往难以适应这种快速变化&#xff0c;因此&#xff0c;一种新的软件开发方法——敏捷开发逐渐得到了广泛的关注和应用。 敏捷开发的实施可以按照以下步骤进行&#xff1a; 1、明确产品愿景…

[贪心] 常见区间问题

1. 区间合并 先将区间进行排序&#xff0c;排序完后那么&#xff0c;区间合并就为以下三种情况 class Solution { public:vector<vector<int>> merge(vector<vector<int>>& intervals) {sort(intervals.begin(),intervals.end());int st,ed;vecto…

Mysql安装登录以及修改密码(8.0.33为例)windows版本

一、下载和解压 1.下载开源免费版本 2.将下载的zip文件解压到电脑下我的是d盘Program Files 注意不要有中文目录 3.在mysql的安装目录下创建mysql的配置文件my.ini并且新建data数据目录 [mysqld]#port port3306# set basedir to your installation path basedirD:\\Program Fi…