框架:react+antd

查看demo->A4打印
查看demo->A4表格分页打印
代码仓库:https://gitee.com/chenxiaoyi27/rc-comp
代码路径:/src/views/components/printA4

一、代码:

window.print();

二、分页打印+谷歌打印的css样式

我这里是表格的打印,表格数据很多,打印时需要分页。浏览器打印工具自动分页,Table的表头会自动显示在第2页上,但是顶着第2页的顶部,没有上边距,且上一页页尾也没有下边距,还有表格行拆开的样式。

为了解决这些样式丑的问题,决定手动分页。未打印状态显示完整的1个表格,打印状态时,将1个表格拆成多个表格,代码如下:(适合表格每行只显示1行

打印样式须知:A4打印,css页面宽高为:210mm*297mm,适中的边距为:上下25.4mm,左右19.1mm。)

this.state={tableData: [],//表格数据printSize: 25//分页后每页数据条数
};
//jssplitTable() {//打印时表格分离let { tableData, printSize } = this.state, tables = [], i = 0;for (i = 0; i < parseInt(tableData.length / printSize); i++) {let tmp = [];for (let j = i * printSize; j < (i + 1) * printSize; j++) {tmp.push(tableData[j]);}tables.push(tmp);}if (tableData.length % printSize !== 0) {let tmp = [];for (let j = i * printSize; j < tableData.length; j++) {tmp.push(tableData[j]);}tables.push(tmp);}return tables.map((item, index) => {return <div key={index} className="printTable">{index !== 0 && <p style={{ height: '25.4mm' }} />}{/*25.4mm是上下边距*/}<Table columns={this.columns} dataSource={item} pagination={false}size="small" bordered rowKey={record => record.id}/><div style={{ pageBreakAfter: 'always' }} />{/*分页符*/}</div>});}//html
render () {
let {printState, tableData, printSize} = this.state;
return <div className="print-wrap"><div className="print-content">{!printState || tableData.length < printSize ?  //不是打印状态或表格数据只有1页时<div className="printOneTable"><Table columns={this.columns} dataSource={tableData} pagination={false}size="small" rowKey={record => record.id}/></div> :this.splitTable()}</div>
</div>
}
//css
.print-wrap{width: 210mm;
}
.print-content{@page {margin: 0;}
}
.printTable {height: 271.6mm;padding: 0 19.1mm;@page {margin: 0;}
}
.printOneTable {height: 271.6mm;padding: 0 19.1mm;
}

说明:
1)拆成多个Table后,每个Table前加一个高度为上边距的p元素,直接用margin-top会有塌陷问题。
2)设置每个Table页的高度为(297mm-上边距)。
3)每次循环最后加一个分页符<div style={{ pageBreakAfter: 'always' }} />,不加的话会出现多页打印,最后一页有页脚(网址和页码)的问题。单页打印可不加。
4)splitTable()分离表格数据的方法通用。
5)谷歌打印去除页眉页脚用css即可。

三、ie浏览器去除页眉页脚

分页同上述 二 。
ie的打印去除页眉页脚需要用到注册表,以下代码通用:

// 打印去掉页眉页脚printPage(callback) {//除ie外,其余浏览器需要给最外层容器添加css:@page{margin:0}function pagesetup_null() {var HKEY_Path = 'HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\PageSetup\\'; // 定义注册表位置// name的值可为header(页眉),footer(页脚),margin_bottom(下边距),margin_left(左边距),margin_right(右边距),margin_top(上边距)。function PageSetup(name, value, onSuccess, onFail) {try {var Wsh = new window.ActiveXObject('WScript.Shell');Wsh.RegWrite(HKEY_Path + name, value); // 修改注册表值onSuccess && onSuccess();} catch (e) {onFail & onFail();}}PageSetup('footer','',() => PageSetup('header', '', () => window.print(), () => Message.modalError('需要运行ActiveX对象后,才能进行打印设置。')),() => Message.modalError('需要运行ActiveX对象后,才能进行打印设置。'));}if (Util.isIE()) {pagesetup_null();} else {window.print();}callback && callback();},

使用此方法,若提示‘需要运行ActiveX对象后,才能进行打印设置。’则需要进行如下操作:
internet选项-安全-自定义级别-ActiveX控件和插件-对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本(不安全)-启用(不安全)

window.print react+antd 分页打印 去掉页眉页脚相关推荐

  1. vue 打印功能 调用原生print,带(去掉页眉页脚)分页打印

    安装 vue-print-nb插件 npm install vue-print-nb --save 安装完成后 在页面引入 import Print from 'vue-print-nb' </ ...

  2. window.print() 实现A4纸张打印及去掉页眉页脚及打印链接

    1.边距为无 <style> /* 布局纵向 */ .a4-endwise{width: 1150px;height: 1627px;border: 1px #000 solid;} /* ...

  3. js设置html打印不分页,JS 使用 window对象的print方法实现分页打印功能

    最近做项目用到了web在线打印功能,经研究使用了JS自身支持的Window对象的打印方法,此种方法兼容性比较好,在IE和火狐浏览器下使用都没有问题. 1.但是网上好多案例都不支持分页功能,最后通过CS ...

  4. jquery.print.js 网页局部打印 横向打印 去掉页眉页脚

    ie-设置(右上角齿轮)-打印-页面设置 引入print.css,这个css里存的是自己要打印的区域的样式,比如table,tr,td,边框边距等的样式 引入jquery.js和jquery.prin ...

  5. window.print()去掉页眉页脚及网址链接

    //打印(兼容IE浏览器) function webPrint(objId){ var printContent=document.getElementById(objId).innerHTML;// ...

  6. window.print()打印时,如何自定义页眉/页脚、页边距

    自定义页眉/页脚.页边距,要用到ActiveX控件(在ie的安全设置的启用),会修改注册表中ie的设置,代码如下. try{ var hkey_root,hkey_path,hkey_key; hke ...

  7. Chrome 谷歌分页打印 去除页眉页脚 点击取消或打印关闭当前窗口

    page-break-before(指定元素前添加分页符) auto 默认值.如果必要则在元素前插入分页符. always 在元素前插入分页符. avoid 避免在元素前插入分页符. left 在元素 ...

  8. vue js 打印 去掉页脚的链接,去掉页眉页脚

    打印 <div style="padding-top: 15px;width:100px;"><el-button type="primary" ...

  9. window.print() 前端实现网页打印详解

    前言 print作为浏览已经比较成熟的技术可以经常被用来打印页面的部分内容,我们可以在MDN上查看到相关的简单介绍. 一.print()方法 print() 方法用于打印当前窗口的内容.调用 prin ...

  10. js 打印的一些技巧 去除页眉页脚,主动分页

    1.页眉页脚 可以简单点用css来实现 下拉把以下代码粘贴到页面里就可以了测试对于ie firefox chrome兼容都还不错 <style media="print"&g ...

最新文章

  1. 【C#】数组的最大最小值
  2. SXS完全查杀+预防方案2
  3. 迁移学习——Domain Adaptation
  4. 传感器追踪身体健康数据 可穿戴式将帮助人体实时监测外界伤害
  5. 大学c语言下上机考试题,计算机考试二级C语言上机试题下[5]
  6. build libusb for Android
  7. [Cocos2d-x] init()和onEnter()方法的区别
  8. centos tomcat
  9. Kubernetes入门培训(内含PPT)
  10. java qq 邮箱发送错误以及端口号
  11. arduino 下载 https://downloads.arduino.cc/packages/package_index.json error
  12. 萤火虫小程序_新款预览 | 原创森林系列 冰川上 / 小程序改版啦。
  13. X230 安装 EI Capitan 10.11.5 驱动篇
  14. 用类描述计算机中cpu的速度和硬盘容量,用类描述计算机中CPU的速度和硬盘的容量。要求Java的应用程序有4个类,名字分别是PC、CPU、HardDisk和Test,其中Test是主类。...
  15. 如何对客户行为进行数据分析?
  16. 水果店经营策略技巧汇总,第一次开一家水果店怎么经营
  17. 员工出错处罚通知_员工处罚通知书范文.doc
  18. Flak执行端口被占用OSError: [Errno 48] Address already in use
  19. Redis可视化管理工具:Another Redis DeskTop Manager
  20. jira是干什么_JIRA是什么?

热门文章

  1. 如何double你的能力
  2. 耦合度如何降低耦合度
  3. 将java封装的实体类数据生成excel供下载
  4. 【深度学习环境搭建<三>】Ubuntu 中Anaconda + Pycharm 开发环境安装
  5. “安全删除硬件”图标 隐藏
  6. Unity-协成-开启关闭
  7. Java实现简单四则运算
  8. 深究embedding层
  9. Swift guard let 的使用
  10. Unity美术场景制作基础流程和注意事项梳理