当前位置: 首页 > news >正文

vue-print-nb 打印相关问题

一、背景与解决方案

        1、ElementUI表格打印通病,均面临边框丢失、宽度超出问题:相关解决代码有注释;

        2、大多数情况下不会打印页眉页脚的日期、网址、未配置popTitle显示的undefined:相关解决代码有注释;

        3、打印预览页面不显示背景色:相关解决代码有注释;

        4、客户希望打印预览页面显示登录用户信息水印,前端页面不显示水印:使用vue2-water-marker组件,并根据用户操作控制水印组件显示变量;

        5、打印预览页面表头单元格与表体单元格右边框错位:隐藏表头,将表头作为表体第一行数据,并将样式与表头样式统一;表头只有一层且只有一个分组,所以将组名直接写为html元素,放于表格上方,并将样式与表头样式统一。

二、代码示例

<template><div><el-button type="primary" size="mini" icon="el-icon-printer" v-print="printConfig" @click="handlePrint">打印</el-button><div id="printContent"><!-- 打印页面水印,行内样式是为了解决打印页面不显示背景色的问题 --><!-- text: 水印内容,根据需求设置,opacity: 水印内容透明度,0~1之间,越大越清晰 --><vue2-water-marker v-if="showWaterMask" text="打印水印" :opacity="0.8" :zIndex="9999" style="-webkit-print-color-adjust: exact"></vue2-water-marker><div class="table-title">分组表头</div><el-table :data="dataSource" :row-style="rowStyle" size="mini" :show-header="false" border style="width: 100%;"><el-table-columnprop="index"label="序号"algin="center"width="70"></el-table-column><el-table-columnprop="name"label="姓名"width="180"></el-table-column><el-table-columnprop="sex"label="性别"width="180"></el-table-column><el-table-columnprop="height"label="身高"width="180"></el-table-column></el-table></div></div>
</template>
<script>
import print from 'vue-print-nb'export default {directives: {print   },data () {return {showWaterMask: false,printConfig: {id: 'printContent',closeCallback: () => {this.showWaterMask = false; //关闭时不显示水印}},dataSource: [{index: '序号',name: '姓名',sex: '性别',height: '身高'},{index: '1',name: '张三',sex: '男',height: 180},{index: '2',name: '李四',sex: '女',height: 160}]}},methods: {rowStyle ({rowIndex}) { //将表体数据第一行显示样式调整为与表头样式一致return rowIndex===0?{backgroundColor: '#F5F7FA',fontWeight: 'bold',color: '#909399',webkitPrintColorAdjust: 'exact' //解决打印页面“表头”不显示背景色的问题}:{};},handlePrint () {if(this.userName) {this.showWaterMask = true;}}}
}
</script>
<style scoped lang="less">
#printContent>.table-title {padding: 10px 0;background-color: #F5F7FA;border: 1px solid #CCC;border-bottom: none;font-size: 12px;font-weight: bold;vertical-align: middle;text-align: center;color: #909399;
}
</style>
<!-- 打印预览页面样式 -->
<style scoped media="print" lang="less">
@page {size: auto;margin: 3mm;
}
@media print {html {margin: 0px;height: auto;background-color: #FFF;}body {border: 1px solid #FFF;margin: 10mm 15mm 10mm 15mm;} //以上代码解决打印页面页眉页脚显示日期、网址、undefined问题#printContent>.table-title {width: calc(100% - 2px);border-bottom: 1px solid #CCC;-webkit-print-color-adjust: exact; //解决打印页面分组表头不显示背景色的问题}// 解决打印页面表格宽度超出预览区域问题/deep/ table {table-layout: auto !important;}/deep/ #printContent table {table-layout: fixed !important;}/deep/ .el-table__body-wrapper .el-table__body {width: 100% !important;border-right: 1px solid #CCC !important; //解决打印页面表格右边框不显示的问题}
}
</style>

二、涉及问题

http://www.lqws.cn/news/180505.html

相关文章:

  • 大模型编程助手-Cline
  • 论文阅读:HySCDG生成式数据处理流程
  • 撰写脚本,通过发布/joint_states话题改变机器人在Rviz中的关节角度
  • Excel处理控件Aspose.Cells教程:使用 C# 在 Excel 中创建组合图表
  • Ref vs. Reactive:Vue 3 响应式变量的最佳选择指南
  • 机器人编程界面
  • dexcap升级版之DexWild——面向户外环境的灵巧手交互策略:人类和机器人演示协同训练(人类直接带上动捕手套采集数据)
  • OpenCV 图像色彩空间转换与抠图
  • 解决cocos 2dx/creator2.4在ios18下openURL无法调用的问题
  • 学习笔记(25):线性代数,矩阵-矩阵乘法原理
  • Dynamics 365 Business Central Direct Banking Extention D365 BC ERP 银行接口扩展
  • T/SAIAS 018—2025《具身智能语料库建设导则》研究报告:体系解构与实施路径
  • MyBatis 核心标签使用场景及用法详解
  • CppCon 2015 学习:Functional programming: functors and monads
  • git commit 执行报错 sh: -/: invalid option
  • FFmpeg 低延迟同屏方案
  • 局域网聊天室系统的设计与实现【源码+文档】
  • NSSCTF-WEB
  • AI量化透视:金银比突破94阈值,黄金触及4周高点+白银13年新高的联动效应建模
  • 集成电路设计:从概念到实现的完整解析优雅草卓伊凡
  • NLP学习路线图(二十九):BERT及其变体
  • 护网行动面试试题(2)
  • 去除Word文档多余的回车键
  • 如何轻松、安全地管理密码(新手指南)
  • 重构城市应急指挥布控策略 ——无人机智能视频监控的破局之道
  • 基于深度学习的无人机轨迹预测
  • Android动态广播注册收发原理
  • Android设备推送traceroute命令进行网络诊断
  • Ubuntu 系统通过防火墙管控 Docker 容器
  • Linux缓冲区与glibc封装:入门指南