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

vue3-print-nb 表格打印分页,第一页有空白的情况出现解决方法(两种:一种原生,一种基于element表格)

第一种:基于element表格分页

<template><!-- element分组打印 --><div class="hello"><button v-print="printContent">打印</button><div id="printDiv"><p>工资统计表</p><p><span>单据日期:2024-08-04 000000</span><span>年份:2024</span><span>月份:8月份</span><span>项目: 山东远大新能源科技有限公司</span></p><div v-for="(item, index) in tableData" :key="`${index}`"><el-table :data="item.tableData" stripe style="width: 100%"><el-table-column prop="code" label="序号" width="180" /><el-table-column prop="name" label="姓名" width="180" /><el-table-column prop="key1" label="日工考勤" /><el-table-column prop="key2" label="日工工资" /><el-table-column prop="key3" label="承包考勤" /><el-table-column prop="key4" label="承包工资" /><el-table-column prop="key5" label="回程路费" /><el-table-column prop="key6" label="应扣项" /><el-table-column prop="key7" label="借款" /><el-table-column prop="key8" label="质保金" /><el-table-column prop="key9" label="应得工资" /><el-table-column prop="key10" label="工人签字" /></el-table><div class="fy" v-if="index!==tableData.length-1"></div></div></div></div>
</template><script>
export default {name: 'HelloWorld',props: {msg: String},data(){return{tableData:[],printContent:{id: 'printDiv',// preview: true, // 预览工具是否启用// previewTitle: '', // 预览页面的标题popTitle: '', // 打印页面的页眉}}},created(){for(let s=0;s<4;s++){const datas = {tableData:[]}for(let a=0;a<20;a++){const data = {code:(s * 20)+a + 1,name:"name" + (s * 20)+a + 1,key1:(s * 20)+a + 1,key2:(s * 20)+a + 1,key3:(s * 20)+a + 1,key4:(s * 20)+a + 1,key5:(s * 20)+a + 1,key6:(s * 20)+a + 1,key7:(s * 20)+a + 1,key8:(s * 20)+a + 1,key9:(s * 20)+a + 1,key10:(s * 20)+a + 1}datas.tableData.push(data)}this.tableData.push(datas)}}
}
</script><!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h3 {margin: 40px 0 0;
}
ul {list-style-type: none;padding: 0;
}
li {display: inline-block;margin: 0 10px;
}
a {color: #42b983;
}.fy{page-break-before: always;
}
</style>

第二种基于原生表格分页

<template><!-- 原生表格打印 --><div class="hello"><button v-print="printContent" @click="printing">打印</button><div id="printDiv"><p style="text-align: center;">工资统计表</p><p><span>单据日期:2024-08-04 000000</span><span>年份:2024</span><span>月份:8月份</span><span>项目: 山东远大新能源科技有限公司</span></p><table border="0" class="techniques" cellpadding="0" cellspacing="0" style="margin-top: 1px;width: 100%;border:solid 1px #f1f1f1"><thead><tr><td>序号</td><td>姓名</td><td>日工考勤</td><td>日工工资</td><td>承包考勤</td><td>承包工资</td><td>回程路费</td><td>应扣项</td><td>借款</td><td>质保金</td><td>应得工资</td><td>工人签字</td></tr></thead><tbody class="paging"><tr v-for="(item, index) in tableData" :key="`akl-${index}`"><td>{{item['code']}}</td><td>{{item['name']}}</td><td>{{item['key1']}}</td><td>{{item['key2']}}</td><td>{{item['key3']}}</td><td>{{item['key4']}}</td><td>{{item['key5']}}</td><td>{{item['key6']}}</td><td>{{item['key7']}}</td><td>{{item['key8']}}</td><td>{{item['key9']}}</td><td>{{item['key10']}}</td></tr></tbody></table>
</div></div>
</template><script>
export default {name: 'HelloWorld',props: {msg: String},data(){return{tableData:[],printContent:{id: 'printDiv',// preview: true, // 预览工具是否启用// previewTitle: '', // 预览页面的标题popTitle: '', // 打印页面的页眉},PAGE_HEIGHT:1100}},created(){for(let s=0;s<100;s++){const data = {code:s+1,name:"name" + s+1,key1:s+1,key2:s+1,key3:s+1,key4:s+1,key5:s+1,key6:s+1,key7:s+1,key8:s+1,key9:s+1,key10:s+1}this.tableData.push(data)}},methods:{printing(){const splitDoms = document.getElementsByClassName('paging')let startY = 0 // 占用A4纸的高度,从每页第一个poetry div的top值开始累加for (let i = 0; i < splitDoms.length; i++) {const splitDom = splitDoms[i]const splitValue = splitDom.getBoundingClientRect()if (startY === 0) {startY = splitValue.top}const pageHeight = splitValue.bottom - startY// 当加上当前div的高度大于A4纸高度时,给前一个div加上分页标识if (pageHeight > this.PAGE_HEIGHT) {console.log(i)startY = 0if (i > 0) {splitDoms[i - 1].style.pageBreakBefore = 'always'; // 给前一个元素添加分页符}}}
}}
}
</script><!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
/* 添加CSS样式以确保换页 */
@page {size: auto A4 landscape;margin-top: 20mm;
}@media print {.section {page-break-before: always;/* 在每个部分之前始终开始新页面 */margin-top: 0;}
}
td{border:solid 1px #f1f1f1;
}
</style>

相关文章:

vue3-print-nb 表格打印分页,第一页有空白的情况出现解决方法(两种:一种原生,一种基于element表格)

第一种&#xff1a;基于element表格分页 <template><!-- element分组打印 --><div class"hello"><button v-print"printContent">打印</button><div id"printDiv"><p>工资统计表</p><p>…...

搜维尔科技:借助 Xsens中的远程人体录制功能,可以在任何位置以无限量同时捕捉无限数量演员的身体动作

借助 Xsens中的远程人体录制功能&#xff0c;可以在任何位置以无限量同时捕捉无限数量演员的身体动作 搜维尔科技&#xff1a;借助 Xsens中的远程人体录制功能&#xff0c;可以在任何位置以无限量同时捕捉无限数量演员的身体动作...

2024/08 近期关于AI的阅读和理解[笔记]

#Cohere 就像商业能力很强的云数仓公司 Snowflake 一样&#xff0c;Cohere 也采用了按需付费模式而不是按月或按年付费&#xff0c;而且它的付费模式很精细。Cohere 按照模型的不同能力&#xff0c;包括文本生成&#xff0c;文本总结&#xff0c;重新排名&#xff0c;文本分类…...

SmartEDA:解锁设计新境界,从工具到灵感的飞跃之旅!

在这个数据驱动的时代&#xff0c;每一次点击、每一次滑动都蕴含着无限的可能与洞察。然而&#xff0c;在众多数据分析工具中&#xff0c;SmartEDA不仅仅是一把解锁数据奥秘的钥匙&#xff0c;它更是一座桥梁&#xff0c;连接着冰冷的数据世界与创意无限的设计灵感之源。今天&a…...

解决Minizip压缩后解压时的头部错误问题

最近&#xff0c;在处理文件压缩的任务时&#xff0c;我遇到了一个有趣的问题。使用Minizip库进行文件压缩后&#xff0c;在解压过程中收到了一个关于"头部错误"的警告。尽管这个警告看似令人担忧&#xff0c;但解压操作最终仍然能够成功完成文件的解压。这引发了我的…...

数据库表水平分割和垂直分割?

0.数据库表的水平分割和垂直分割是两种常见的数据库优化技术&#xff0c;‌它们分别针对不同的场景和需求进行数据表的拆分。‌ 1. 水平分割&#xff08;‌Horizontal Splitting&#xff09;‌主要是按照记录进行分割&#xff0c;‌即不同的记录被分开保存在不同的表中&#x…...

Linux源码阅读笔记18-插入模型及删除模块操作

基础知识 模块是一种向Linux内核添加设备驱动程序、文件系统及其他组件的有效方法&#xff0c;不需要编译新内核 优点 通过使用模块&#xff0c;内核发布者能够预先编译大量驱动程序&#xff0c;而不会致使内核映像的尺寸发生膨胀。内核开发者可以将实验性的代码打包到模块中&a…...

力扣面试经典算法150题:移除元素

移除元素 今日的题目依旧是力扣面试经典算法150题中数组相关的题目&#xff1a;移除元素 题目链接&#xff1a;https://leetcode.cn/problems/remove-element/description/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述 给定一个排序数组 nums 和一个值 val&a…...

java关于前端传布尔值后端接收一直为false问题

前端传值&#xff1a; {"message":"我肚子疼","isChiefComplaint": true }后端接收对象结构体&#xff1a; public class SymptomInquiryDTO {private String message;private boolean isChiefComplaint; }结果后端接收到的值一直是false&…...

工具学习_CVE Binary Tool

1. 工具概述 CVE Binary Tool 是一个免费的开源工具&#xff0c;可帮助您使用国家漏洞数据库&#xff08;NVD&#xff09;常见漏洞和暴露&#xff08;CVE&#xff09;列表中的数据以及Redhat、开源漏洞数据库&#xff08;OSV&#xff09;、Gitlab咨询数据库&#xff08;GAD&am…...

智观察 | 行业赛道里的AI大模型

‍ “AI改变世界”被炒得热火朝天&#xff0c;结果就换来AI聊天&#xff1f; 实际上&#xff0c;在日常娱乐之下&#xff0c;AI正在暗暗“憋大招”&#xff0c;深入各行各业&#xff0c;发挥更专业的作用。 自动驾驶 最近“萝卜快跑”霸榜热搜长达一周&#xff0c;让无人驾…...

linux 进程 inode 信息获取

根据端口查找 ss -neltup | grep "$port"根据 pid 查找 ss -neltup | grep "pid$pid"根据 inode 查找 ss -neltup | grep "ino:$inode"根据pid查找进程打开的inode ls -al /proc/$pid/fd查看inode信息 cat /proc/$pid/net/tcp | grep $ino…...

计算机网络-网络层

负责在不同的网络之间转发数据包&#xff0c;基于数据包的 IP地址转发&#xff0c;每个数据包可以按照不同路径传输。网络层不负责丢包重传&#xff0c;以及数据包之间数据顺序的的问题。 网络设备 路由器工作在第三层&#xff1a;网络层&#xff0c;能看到网络层的地址&…...

机器学习:识别AI,GraphRAG,LoRA,线性变换,特征

1.AI识别 1.bitgrit 生成式 AI API 文档 生成式 AI 假图像检测 API 可用于以编程方式检测假图像&#xff08;即由生成式 AI 创建的图像&#xff09;。2.X Virality Prediction API 旨在预测推文的潜在病毒式传播力。https://bitgrit.net/api/docs/x_virality_prediction 2.Gr…...

阿里云SMS服务C++ SDK编译及调试关键点记录

一. 阿里云SMS服务开通及准备工作 在阿里云官网上完成这部分的工作 1. 申请资质 个人or企业 我这里是用的企业资质 2. 申请签名 企业资质认证成功后&#xff0c;会自动赠送一个用于测试的短信签名 也可以自己再进行申请&#xff0c;需要等待审核。 3. 申请短信模板 企…...

Flutter 正在迁移到 Swift Package Manager ,未来会弃用 CocoaPods 吗?

什么是 Swift Package Manager &#xff1f;其实 Swift Package Manager (SwiftPM) 出现已经挺长一段时间了&#xff0c;我记得第一次听说 SwiftPM 的时候&#xff0c;应该还是在 2016 年&#xff0c;那时候 Swift 3 刚发布&#xff0c;不过正式出场应该还是在 2018 年的 Apple…...

PDF——分割pdf的10个工具

PDF分割器是一种可用于将PDF文档分割成更小的文档甚至单个页面的工具。分割 PDF 文档的主要原因是为了更容易共享。 但该过程的成功取决于您用于拆分 PDF 的工具。较简单的工具仅提供几个选项&#xff0c;可能并不适合所有类型的文档。我们将在本文中列出的 10 个最佳 PDF 分割…...

深入解析 Nginx 反向代理:配置、优化与故障排除

深入解析 Nginx 反向代理&#xff1a;配置、优化与故障排除 Nginx 是一个高性能的 HTTP 和反向代理服务器&#xff0c;它以其高并发和高可扩展性在业界享有盛誉。反向代理是 Nginx 的重要功能之一&#xff0c;通过反向代理可以实现负载均衡、安全代理、缓存等多种用途。本篇文…...

深度学习入门(一):感知机与输入数据

单层感知机与多层感知机 单层感知机&#xff08;Single-Layer Perceptron&#xff09;和多层感知机&#xff08;Multi-Layer Perceptron&#xff0c;简称MLP&#xff09;是神经网络的基本形式&#xff0c;用于执行各种机器学习任务&#xff0c;包括分类和回归。它们都基于早期…...

kubernetes 集群组件介绍

kubernetes 集群组件介绍 Kubernetes 架构 在Kubernetes&#xff08;k8s&#xff09;集群中&#xff0c;主节点&#xff08;Master Node&#xff09;和工作节点&#xff08;Worker Node&#xff09;都运行特定的软件组件&#xff0c;它们共同管理和运行容器化的应用程序。以下…...

OpenClaw云端体验:通过星图平台快速部署千问3.5-35B-A3B-FP8

OpenClaw云端体验&#xff1a;通过星图平台快速部署千问3.5-35B-A3B-FP8 1. 为什么选择云端体验OpenClaw 第一次接触OpenClaw时&#xff0c;我被它的本地自动化能力吸引&#xff0c;但很快遇到了现实问题——在自己的MacBook Pro上配置Python环境、解决依赖冲突、调试模型连接…...

OpenClaw+Qwen2.5-VL-7B:低成本自动化内容生成方案

OpenClawQwen2.5-VL-7B&#xff1a;低成本自动化内容生成方案 1. 为什么选择这个组合 去年我开始尝试用AI辅助内容创作时&#xff0c;遇到了两个核心痛点&#xff1a;一是商业API调用成本太高&#xff0c;二是现有工具无法实现端到端的自动化。经过多次尝试&#xff0c;最终找…...

小组国内汽车销量分析 数据表清洗与处理部分

UPDATE car2m SET price REPLACE(price, , );UPDATE car2m SET name REPLACE(name, , );UPDATE car2m SET price 0 WHERE price 暂无报价;UPDATE car2m SET price CAST(REPLACE(SUBSTRING_INDEX(price, -, 1), 万, ) AS DECIMAL(10, 2));UPDATE suv2m SET price REPLAC…...

LeetCode hot100-114 二叉树展开为链表

class Solution { public:void flatten(TreeNode* root) {if (root nullptr) return;// 先展开左右子树flatten(root->left);flatten(root->right);// 保存右子树TreeNode* right root->right;// 将左子树移到右边root->right root->left;root->left nul…...

潘多拉魔盒上的封条:当AI强到连“造物主”都感到恐惧

梁敬彬梁敬弘兄弟出品 引言 2026年的春天&#xff0c;AI的狂飙似乎没有任何减速的迹象。各路媒体依然在为大模型跑分榜上的微小超越而摇旗呐喊&#xff0c;资本市场依然在为算力中心的落成而陷入狂热。在这场看似永远不会停歇的技术飙车中&#xff0c;几乎所有人都坚信一个朴…...

旧Mac设备重生指南:使用OpenCore Legacy Patcher升级系统全攻略

旧Mac设备重生指南&#xff1a;使用OpenCore Legacy Patcher升级系统全攻略 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 随着苹果系统的不断更新&#xff…...

Linux文件系统原理与性能优化实战

1. 文件系统基础概念解析在Linux环境中&#xff0c;文件系统如同一个庞大的图书馆管理系统。它不仅负责书籍&#xff08;文件&#xff09;的存储&#xff0c;还要管理书架&#xff08;目录&#xff09;的结构、借阅记录&#xff08;权限&#xff09;以及图书的检索方式。与Wind…...

彻底搞懂Autoresearch:Agent无人值守炼丹揭秘,看这一篇就够了!

Autoresearch 是一项完全由 AI 驱动的自主机器学习研究实验&#xff0c;由 Andrej Karpathy创建。其核心思想非常简单&#xff1a;赋予 Agent 一个真实可用的 GPT 训练环境&#xff0c;让其自主进行实验——修改代码、运行 5 分钟的短时训练、评估结果&#xff0c;并决定保留还…...

Dify与Ollama容器化部署实战:从“max retries exceeded”报错到网络连通性深度解析

1. 容器化部署中的经典报错&#xff1a;为什么你的Dify连不上Ollama&#xff1f; 最近在帮朋友调试Dify和Ollama的集成环境时&#xff0c;遇到了一个特别典型的错误。当时控制台不断刷出这样的报错信息&#xff1a; httpconnectionpool(host127.0.0.1, port11434): max retries…...

为什么开发者都在使用go-cursor-help?5步掌握Cursor无限试用技巧

为什么开发者都在使用go-cursor-help&#xff1f;5步掌握Cursor无限试用技巧 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Your request has been blocked as our system has detected suspicious activity / Youve reached your trial reque…...