js打印预览内容/文字被截断问题

已知的问题

  • 表格某个行的文字被截成了两半,一半在上一页的底部,一半在上一页的顶部
  • 某页底部的文字或图片被截断成了两半,一半在上一页的底部,一半在上一页的顶部

解决方案

首先明确一点,如果是分页显示的话,无法彻底解决这两个问题,只能尽量避免

表格内容被截断使用print的css

 tr {
    width: 500px;
    height: 500px;
    page-break-inside: avoid;
}
复制代码

关键在于:page-break-inside: avoid;, 只要是防止打印时内容被截断,都可以用这个样式控制,但是这个没法完全保障没问题,只能尽量避免

对于div的内容被截断,那就要通过js计算,看当前dom节点是否跨了两页,如果是,则强制分页。

而要计算dom节点在A4纸的位置详见:vue页面生成pdf且避免分页截断处理 - 简书 (jianshu.com) 以及 实现前端页面局部转 pdf 及 打印 加分页防止内容截断 - 代码先锋网 (codeleading.com) 这两篇文章。在文章中作者有提到,即使按照此种方式计算,中间还是出现问题,主要在于他A4纸的高度没设置正确,导致dom计算的位置存在偏差,导致还是有问题,最终调整了几次A4纸的高度才解决。那说明A4纸的高度转PX值是个不完全确定的因素。

关于A4纸宽高转px详见: A4纸的象素分辨率计算 - 王超的个人空间 - OSCHINA - 中文开源技术交流社区 以及 A4纸的象素分辨率计算[转] - zhizhesoft 这两篇文章

参考文章

浏览器打印,Chrome网页打印中的宽度控制_青岛网站制作公司 (yujianlong.com)

网页打印尺寸设置 - Now,DayBreak - 博客园 (cnblogs.com)

A4纸的象素分辨率计算[转] - zhizhesoft

A4纸的象素分辨率计算 - 王超的个人空间 - OSCHINA - 中文开源技术交流社区

width,height为多少px时,A4纸打印时刚好一页? (bbsmax.com)

vue页面生成pdf且避免分页截断处理 - 简书 (jianshu.com)

实现前端页面局部转 pdf 及 打印 加分页防止内容截断 - 代码先锋网 (codeleading.com)

page-break-after:always;解决window.print打印断页问题——已解决_yehaocheng520的博客-CSDN博客_page-break-after:always

page-break-before\page-break-inside\page-break-after用法_ZMJ_QQ的博客-CSDN博客_page-break-before

css 打印分页设置_爱吃瓜子的小松鼠的博客-CSDN博客_css 打印分页

前端实现打印预览功能以及page-break-inside属性解决打印换行问题(打印预览表格或文字被分割开)_崽崽的谷雨的博客-CSDN博客_前端实现打印预览

解决vue-print-nb打印el-table,不同分辨率下,打印显示不全的问题 - scallop - 博客园 (cnblogs.com)

猜你喜欢

转载自juejin.im/post/7131956410652295205
今日推荐