今天用户提出一个关于window.print()打印的问题:
如下图所示:在打印断页的部分,会出现数据打印不全的情况。打印预览与实际打印的情况还有有所区别。

注意一点:如果想要实现window.print()打印当前的页面,则想要保证打印页面的bodyheight必须为auto,否则只会打印第一页。还要注意一下权重问题。

@media print{body {height: auto !important;}
}

html部分,之前用的是table,后面由于断页打印不全的问题,我用div写的如上图所示的样式。

<div class="tab"><div class="hea"><div style="width:40px;">序号</div><div class="big">型号</div><div class="big">品牌</div><div>封装</div><div>单价</div><div>数量</div><div>金额</div></div><div class="tbo"><div v-for="(item,index) in dataInfo.materielResultchlids[0].bomDetailEntities" class="lang"><div><div style="width:40px;">{{index+1}}</div><div class="big">{{item.PartNo}}</div><div class="big">{{item.Mfg}}</div><div class="nowrap">{{item.Package}}</div><div>{{item.UnitPrice}}</div><div>{{item.BuyNum}}</div><div>{{item.TotalMoney}}</div></div></div></div>
</div>

css部分比较简单,此处不进行展示。

重点是断页问题:
为了能够保证数据量多的情况下,每页的内容都能够展示完全。之前出现打印内容不全都出现在页面的页眉和页脚部分。
因此考虑的解决方法就是:限制每页展示的条数。
比如第一页:第一页表头有其他内容,因此限制第一页只展示前14条:

第二页及以后,每页展示20条。

如何强制断页呐??

可以使用css来实现,在需要断页的地方添加一个标签,给此标签添加css如下:
<p style="page-break-after:always;"></p>
page-break-after:always;表示在此标签之后强制断页。

什么情况下会断页呐??

需要断页有以下几种情况:

  1. 表格条数超过14条,则第一页index==13时,需要断页
  2. 表格条数超过14条,并且后续index>13&&(index-13)%20==0时,需要断页

因此在符合上述情况的地方,添加一个强制断页的标签即可。
为了方便,tableLen即为条数-1,也就是索引的最大值。
<p v-if="tableLen>13&&(index>13&&(index-13)%20==0)" style="page-break-after:always;text-align:center;"></p>
<p v-if="index==13" style="text-align:center;page-break-after:always;"></p>

什么情况下需要添加页码??

为了能够更好的展示数据,可以添加一个页码的功能,可以直接使用window.print()弹窗中的选项来展示:

但是如果这样的话,页眉和页脚都会展示,而且内容除了页码还有其他。因此我想自己处理这个页码内容。

需要展示页码有以下几种情况:

  1. 表格的条数小于14条(也就是tableLen<13),则应该展示第1页/共1页
  2. 表格的条数超过14条(也就是tableLen>=13),且(index-13)%20==0并且不是最后一页时,应该展示页码。
  3. 最后一页显示页码

上面的情况中,第二种情况会比较难思考,可以跟第三种情况一同处理:
第三种情况:tableLen>13&&index==tableLen:当表格条数超过14条,并且最后一条后面,需要添加页码。
<p v-if="tableLen>13&&index==tableLen" style="text-align:center;margin-top:6px;">第{{Math.ceil(tableLen/20)}}页/共{{Math.ceil(tableLen/20)}}页</p>
第二种情况可以是在第三种情况的前提下:
<p v-else-if="tableLen>13&&index>13&&(index-13)%20==0" style="text-align:center;margin-top:6px;">第{{parseInt((index-13)/20)+1}}页/共{{Math.ceil(tableLen/20)}}页</p>
因为第二种情况与第三种情况有重叠,所以先写第三种情况,当第三种情况不满足时,再判断是否满足第二种情况,即可完成。

如果自己写过js的分页组件,这个应该是很简单了。我的js都忘了,所以花了我很长时间才搞定。。。。

完成!!!

page-break-after:always;解决window.print打印断页问题——已解决相关推荐

  1. 关于window.print打印分页功能

    平常window.print分页一般打印时用到page-break-after:always; 打印的样式设置在 <style type="text/css" media=& ...

  2. js window.print() 打印图片,图片有时候不显示

    window.print() 打印网络资源图片不显示 解决方法 等待网络资源图片加载完成后,在打印 $(doc).find('.qrcode-down').load(function () {ifra ...

  3. window.print()打印网页局部内容

    用window.print()打印网页局部内容 今天客户让添加个打印证照功能,直接用window.print()打印的是整个页面,而用以下方法就可以只打印证明了 <!--window.print ...

  4. 使用window.print()打印局部页面,ifrme打印ie报错

    问题: 使用window.print();打印页面,将不需要的数据隐藏,将需要的数据显示,打印完成之后将刚才隐藏的数据还原,显示的数据隐藏, 谷歌浏览器.部分ie能一气呵成,  火狐浏览器以及少数ie ...

  5. window.print打印部分无法显示

    1.window.print单选框无法显示 $("body").attr("style","-webkit-print-color-adjust: e ...

  6. js的window.print()打印背景图片,打印背景图片无法显示

    js的window.print()打印背景图片 题目描述 js的window,print()打印背景图片给body加了图片地址之后,非要设置浏览器打印选项里面设置背景图形打印才行,怎么通过js去设置默 ...

  7. 解决GitHub下载速度慢的问题(已解决)

    解决GitHub下载速度慢的问题(已解决) 核心:通过码云导入github资源,通过码云转接下载. 1.找到需要下载的GitHub地址\color{blue}{1. 找到需要下载的GitHub地址}1 ...

  8. 指定window.print 打印区域

    第一种方法:指定不打印区域 使用CSS,定义一个.noprint的class,将不打印的内容放入这个class内. 细如下: ? 1 2 3 <style media=print type=&q ...

  9. window.print()打印时根据页面高度设置居中显示、设置打印布局(纵向、横向)

    1.页面定义打印div按钮: <!-- 打印机按钮开始 --> <div style="position: absolute;top:100;right:0px;z-ind ...

最新文章

  1. 阿里一道Java并发面试题 (详细分析篇)
  2. 今日机器学习概念:感知机模型
  3. mysql自动写入创建时间_mysql 自动记录数据插入及最后修改时间
  4. seo需要处理页面html,为什么单页面的seo不友好?如何解决这一问题?
  5. PHP实现文件安全下载
  6. 【深度学习】——常见深度学习模型总结、anchor-free和anchor-based
  7. 【搜索/推荐排序】FM,FFM,AFM,PNN,DeepFM:进行CTR和CVR预估
  8. mysql+distinct+max_MySQL中distinct与group by之间的性能进行比较
  9. springMVC下载FTP上的文件
  10. 数据分析师必须会python_数据分析师必须掌握的9种数据分析方法
  11. 简述python3默认使用的编码标准_Python3.X默认使用的编码是
  12. github项目提交失败 master - master (non-fast-forward)
  13. html数据透视,高级Excel – 数据透视表工具
  14. 蓝牙Beacon室内定位全栈
  15. “跳出内卷”ROttKRON乐旷陶瓷耳机的新视野,“形、质、声”打开耳机新话题
  16. 前端常用PS技巧总结之更换图片背景图片
  17. opencore amr android,苹果手机amr文件用什么打开,opencore框架进行语音
  18. 卷积神经网络流程图_AAAI 2020 | 北大:图卷积中的多阶段自监督学习算法
  19. 怎样查网站的排名和收录情况
  20. NBA表格_巅峰乔丹的进攻水平,是NBA常规赛历史最佳么?

热门文章

  1. python机器学习minimize函数参数介绍及作用
  2. android weakreference 用法,Android WeakReference的理解与使用
  3. 勒索病毒WannaCry深度技术分析——详解传播、感染和危害细节
  4. 慢阻肺新药落地,钟南山院士开出我国首张处方
  5. discuz 发帖和回复页面,提示问题
  6. 计算机维修初级培训课程表,初级维修电工培训班课程表.doc
  7. 真三 一次Rush图
  8. Java 9 新特性快速预览
  9. chatgpt系列文章-23.2.15(主要还在发现chatgpt的不足,偏探索,像报告)
  10. python airflow_1.airflow的安装