位置: IT常识 - 正文

vue使用Print.js打印页面样式不出现的解决(vue-print-nb-jeecg)

编辑:rootadmin
这篇文章主要介绍了vue使用Print.js打印页面样式不出现的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 目录

推荐整理分享vue使用Print.js打印页面样式不出现的解决(vue-print-nb-jeecg),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue-print-nb-jeecg,vue print,vue-print-nb遇到的坑,vue-print-nb-jeecg,vueprintnb,vueprintnb,vue print,vue-print-nb,内容如对您有帮助,希望把文章链接给更多的朋友!

vue Print.js打印页面样式不出现解决方案vue-print-nb打印问题总结1、表格的列缺失(element-ui table组件)2、打印内容缺失(print.js/print-js独有,固定高度导致)4、不能分页vue Print.js打印页面样式不出现

解决方案

加上这句就好了!完美!

vue-print-nb打印问题总结1、表格的列缺失(element-ui table组件)

原因:table-layout: fixed导致的,出现部分列没有被打印

让表table布局更加符合预期,普通使用table时,其table-layout 默认值是 auto,导致表格第二行和第一行不一样宽,也就是两行的宽度不对齐。而使用:

table { table-layout: fixed; }

则会让表的布局以第一行为准,设置表格的宽度,然后其他行的表格宽度就按照第一行为准。一般表格第一行是表头标题,第二行以后是数据行,也就是让数据行的每列宽度向第一行列宽度看齐。

这种样式的表格布局在性能上也快得多,这是因为整个表格的内容不需要花费进行分析,以便知道列的宽度。

解决方法:

<style lang="less" scoped>    /deep/ table{        table-layout: auto !important;    }    /deep/ .el-table__header-wrapper .el-table__header{        width: 100% !important;    }    /deep/ .el-table__body-wrapper .el-table__body{        width: 100% !important;    }</style>

注意点:

/deep/ table{        table-layout: auto !important;    }

可能会造成样式错乱,比如你页面有table,打印弹出层的table,这样修改样式有可能会导致页面表格行错位,解决办法:在页面的<el-table>标签上加id,比如pagetable,修改less样式如下

<style lang="less" scoped>    /deep/ table{        table-layout: auto !important;    }    /deep/ .el-table__header-wrapper .el-table__header{        width: 100% !important;    }    /deep/ .el-table__body-wrapper .el-table__body{        width: 100% !important;    }    /deep/ #pagetable table{        table-layout: fixed !important;    }</style>2、打印内容缺失(print.js/print-js独有,固定高度导致)

原因:一般为了好看,会固定高度,然后超出内容出现滚动条,但是打印的时候,只会打印固定高度的内容,导致打印内容缺失

解决方法:

<style scoped>    @media print {        #box{            height: 100%;        }    }</style>vue使用Print.js打印页面样式不出现的解决(vue-print-nb-jeecg)

或者这样:

找到print.js的getStyle方法,加入一行代码

str += "<style>html,body,div{height: auto !important;}</style>";getStyle: function () {        var str = "",            styles = document.querySelectorAll('style,link');        for (var i = 0; i < styles.length; i++) {            str += styles[i].outerHTML;        }        str += "<style>" + (this.options.noPrint ? this.options.noPrint : '.no-print') + "{display:none;}</style>";        str += "<style>html,body,div{height: auto !important;}</style>";         return str;    },

注意点:

1、box是你固定高度标签的id,当然你也可以换成class或者其他,使样式生效即可

2、@media print只影响打印的样式,不会影响页面样式

3、表格内容缺失(表格滚动导致,只打印显示区域内容)

原因:不管是print.js还是vue-print-nb插件,都有这个问题,因为表格滚动导致

解决方法:

用一个隐藏div包裹你要打印的表格或者还有其他内容,总体包裹

<div id="boxbox">        <el-table :data="formList" border  width="100%">            <el-table-column align="center"  width="200" prop="prop"  label="列名"></el-table-column>            <el-table-column label="是否启用" width="100">                <template slot-scope="scope">                    <el-switch v-model="scope.row.show" :active-value="1" :inactive-value="2" active-color="#409eff" inactive-color="#B9B9B9"                    @change="changeSwitch(scope.row)"/>                </template>            </el-table-column>            <el-table-column label="是否必填" width="100">                <template slot-scope="scope">                    <el-switch v-model="scope.row.required" :active-value="1" :inactive-value="2" active-color="#409eff" inactive-color="#B9B9B9"                    @change="changeSwitch(scope.row)"/>                </template>            </el-table-column>            <el-table-column align="center"  prop="sort" width="150"  label="排序"></el-table-column>            <el-table-column label="操作"  align="center"  width="200">                <template slot-scope="scope">                    <span v-if="scope.row.sort!=0" class="editrow" @click="up(scope.row)">上升</span>                    <span v-if="scope.row.sort!=formList.length-1" class="editrow" @click="down(scope.row)">下降</span>                    <span v-if="scope.row.sort!=0" class="editrow" @click="upToZero(scope.row)">置顶</span>                                    </template>            </el-table-column>        </el-table>     </div>

注意点:

1、经过测试,A4纸大小宽度大致在650px,所以你隐藏的table列,要自己设置宽度,整体宽度在750左右,大于750,列会超出,不打印,小于750,右边会留有空白

2、<el-table>不能固定高度,所以不要设置高度

4、不能分页

原因:不管你是下载print.js保存到本地,还是npm下载print-js,只能打印一页,可能太菜了

解决方法:

使用插件:vue-print-nb,使用方法:vue-print-nb

此插件会根据打印内容的高度,自己分页,如果想自定义分页的话,方法如下:

1、在末尾的最后一个标签,加入样式 style="page-break-after: always;"

<div>我是本页的末尾哦</div>

2、定义打印样式,原理同上,但是方便需要,只需要统一定义class即可

@media print {        @page{            size:  auto;            margin: 3mm;        }        .footer {page-break-after: always;}}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。

本文链接地址:https://www.jiuchutong.com/zhishi/304072.html 转载请保留说明!

上一篇:帝国cms如何升级(帝国cms安装教程)

下一篇:MVC架构-01(MVC架构模式)

  • 松下电磁炉炒菜(松下电磁炉)(松下电磁炉炒菜怎么样)

    松下电磁炉炒菜(松下电磁炉)(松下电磁炉炒菜怎么样)

  • oppok9pro是曲面屏吗(OPPOk9pro是曲面屏吗)

    oppok9pro是曲面屏吗(OPPOk9pro是曲面屏吗)

  • 借呗如何清除借款及还款记录(借呗如何清除借款及还款记录 永远)

    借呗如何清除借款及还款记录(借呗如何清除借款及还款记录 永远)

  • 荣耀60虚拟按键怎么设置(荣耀手机怎么把虚拟按键调出来)

    荣耀60虚拟按键怎么设置(荣耀手机怎么把虚拟按键调出来)

  • 网易云音乐怎么取消收藏歌单(网易云音乐怎么转换成mp3格式)

    网易云音乐怎么取消收藏歌单(网易云音乐怎么转换成mp3格式)

  • 爱奇艺会员怎么一起用(爱奇艺会员怎么取消)

    爱奇艺会员怎么一起用(爱奇艺会员怎么取消)

  • pausebreak键是什么意思(pausebreak键作用)

    pausebreak键是什么意思(pausebreak键作用)

  • 好省注销了还可以重新注册吗(注销了好省还能重新注册吗)

    好省注销了还可以重新注册吗(注销了好省还能重新注册吗)

  • 淘宝号打标会有什么影响呢(淘宝号打标会有提示吗)

    淘宝号打标会有什么影响呢(淘宝号打标会有提示吗)

  • 怎么把邮箱里的文件发到桌面(怎么把邮箱里的视频保存到相册)

    怎么把邮箱里的文件发到桌面(怎么把邮箱里的视频保存到相册)

  • qq绿色主题怎么设置(qq绿色背景图片)

    qq绿色主题怎么设置(qq绿色背景图片)

  • 台湾可以微信支付吗(台湾微信支付能给大陆用户转账吗)

    台湾可以微信支付吗(台湾微信支付能给大陆用户转账吗)

  • word文档怎么命名格式(word文档怎么重命名文件名)

    word文档怎么命名格式(word文档怎么重命名文件名)

  • 手机爱奇艺怎么投屏到电视(手机爱奇艺怎么扫码登录的二维码在哪)

    手机爱奇艺怎么投屏到电视(手机爱奇艺怎么扫码登录的二维码在哪)

  • net是什么机构组织的域名?(net属于什么机构组织的域名)

    net是什么机构组织的域名?(net属于什么机构组织的域名)

  • 监控怎么设置保存30天(监控怎么设置保留一个月)

    监控怎么设置保存30天(监控怎么设置保留一个月)

  • 淘宝已确认收货之后如何申请退款(淘宝已确认收货怎么申请退货)

    淘宝已确认收货之后如何申请退款(淘宝已确认收货怎么申请退货)

  • qq音乐巅峰榜在哪里投票(qq音乐巅峰榜在哪里看)

    qq音乐巅峰榜在哪里投票(qq音乐巅峰榜在哪里看)

  • 苹果8p有没有红外线(苹果8p有没有红包提醒)

    苹果8p有没有红外线(苹果8p有没有红包提醒)

  • 自学黑客,一般人我劝你还是算了吧(自学黑客技术入门教程)

    自学黑客,一般人我劝你还是算了吧(自学黑客技术入门教程)

  • 身份证号码的正则表达式及验证详解(JavaScript,Regex)(身份证号码的正确读法)

    身份证号码的正则表达式及验证详解(JavaScript,Regex)(身份证号码的正确读法)

  • 税收减免的定义
  • 所得税申报表填写样本
  • 公司筹建期间发生的费用怎么处理
  • 什么情况下可要求厂商出品质保证书
  • 存货卖出亏损会怎么样
  • 盘亏材料10000元,可以回收的保险赔偿
  • 委托收款被拒绝后要怎么做
  • 融资租赁的服务费的标准
  • 采购商品验收入库流程
  • 月末结转所有收入类账户
  • 住房公积金如何在手机上提取
  • 退回所得税怎么处理
  • 出口业务具体流程图
  • 维修费用的税率
  • 土地增值税计算题及答案解析
  • 4月份到期包括4月吗
  • 非专利技术属于无形资产吗?
  • 劳务派遣实缴资本
  • 在建工程和工程物资在资产负债表
  • 多缴税款如何办理退税
  • 合同的印花税税率
  • 银行财务软件用什么
  • 季度收入超过30万但开票只有10万
  • 居民小区人防设施主要是什么
  • 存货资产减值损失转回怎么做账
  • 快速迅雷
  • 怎么简单快速的辨别是铝是锡
  • 显示器屏幕抖动闪烁是什么原因
  • windows账户名a
  • PHP:pg_lo_open()的用法_PostgreSQL函数
  • SchSvr.exe - SchSvr是什么进程 有什么作用
  • 财务人员如何审核招待费报销单
  • vue批量上传图片至oss
  • 犹他州现神秘物体
  • 机票报账行程单怎么打印
  • vite 配置
  • 实时视频功能
  • 2020年前端面试
  • 商品房测绘收费标准
  • 帝国cms对接小程序
  • wordpress限制邮箱注册
  • 待抵扣进项税额是什么情况下用的
  • 预提费用的会计分录2018
  • 试生产产品计入研发费用吗
  • 增值税专用发票上注明的价款含税吗
  • 打车费的会计分录
  • 固定资产净残值账务处理
  • 小规模企业所得税怎么征收
  • 企业所得税包含营业外收入吗
  • 其他应付款二级明细科目有哪些
  • 返还个人所得税怎么操作
  • 党费会计核算科目有哪些
  • 事业单位非税收入帐务处理
  • 企业合并中或有对价的会计处理
  • 出口样品的销售好做吗
  • 防伪系统制作
  • 金蝶主要业务及软件产品
  • 增值税进项税加计抵减
  • 公司申请土地建厂房
  • 私营企业固定资产折旧
  • linux服务器查找文件命令
  • fedora29
  • xp桌面消失 右击无反应
  • linux中sed详细用法
  • centos作用
  • CentOS 6.2(32位/64位) 安装步骤图文详解
  • win7系统出现蓝屏怎么进去桌面
  • Facebook Open Platform编译FAQ
  • opengl数据类型
  • node 内存泄漏
  • unity单选
  • JavaScript中的方法名不区分大小写
  • Node.js node-schedule定时任务隔多少分钟执行一次的方法
  • node.js mongodb
  • android 设置背景
  • java在android上运行
  • js命名函数
  • 增值税纳税申报表怎么填
  • 河北税务医保缴费怎么操作
  • 车辆购置税计入固定资产一起折旧吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设