位置: 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架构模式)

  • 苹果手机视频效果怎么设置(苹果手机视频效果关闭怎么打开)

    苹果手机视频效果怎么设置(苹果手机视频效果关闭怎么打开)

  • 抖音如何设置不让别人看到自己是否在线(抖音如何设置不感兴趣的内容)

    抖音如何设置不让别人看到自己是否在线(抖音如何设置不感兴趣的内容)

  • 苹果12有几种尺寸呢(苹果12有几种尺寸屏幕)

    苹果12有几种尺寸呢(苹果12有几种尺寸屏幕)

  • 华为荣耀v20与20i的区别(华为荣耀v20与20)

    华为荣耀v20与20i的区别(华为荣耀v20与20)

  • 抖音关注后自动消失(抖音关注后自动取消怎么办)

    抖音关注后自动消失(抖音关注后自动取消怎么办)

  • 支付宝地区怎么修改(支付宝地区怎么隐藏)

    支付宝地区怎么修改(支付宝地区怎么隐藏)

  • 微信扫二维码出现英文乱码(微信扫二维码出现两个微信名是怎么回事)

    微信扫二维码出现英文乱码(微信扫二维码出现两个微信名是怎么回事)

  • 视频聊天流量耗的多吗(视频聊天 流量)

    视频聊天流量耗的多吗(视频聊天 流量)

  • qq群被冻结了怎么解冻(qq群被冻结了怎么退群)

    qq群被冻结了怎么解冻(qq群被冻结了怎么退群)

  • 虎牙看直播可以设置vr模式吗(虎牙看直播可以回放吗)

    虎牙看直播可以设置vr模式吗(虎牙看直播可以回放吗)

  • 华为nova7智能遥控在哪里(华为nova7智能遥控需要登录吗)

    华为nova7智能遥控在哪里(华为nova7智能遥控需要登录吗)

  • 闲鱼资金保护能追回吗(闲鱼资金保护能关闭吗)

    闲鱼资金保护能追回吗(闲鱼资金保护能关闭吗)

  • 打电话没有提示音就挂了(为什么手机关机了打电话没有提示)

    打电话没有提示音就挂了(为什么手机关机了打电话没有提示)

  • 华为用苹果无线耳机声音小(华为用苹果无线耳机)

    华为用苹果无线耳机声音小(华为用苹果无线耳机)

  • 抖音号被禁了怎么解封(抖音号被禁怎么解决)

    抖音号被禁了怎么解封(抖音号被禁怎么解决)

  • ipad pro11寸强制重启(ipadpro11寸怎么强制关机)

    ipad pro11寸强制重启(ipadpro11寸怎么强制关机)

  • 快手伴侣闪退怎么解决(快手伴侣app)

    快手伴侣闪退怎么解决(快手伴侣app)

  • 如何关闭非wifi提示(如何关闭非wifi视频自动播放)

    如何关闭非wifi提示(如何关闭非wifi视频自动播放)

  • 小米9有线性马达吗(小米9线性马达是x轴吗)

    小米9有线性马达吗(小米9线性马达是x轴吗)

  • 10代酷睿什么时候发布(10代酷睿什么时候降价)

    10代酷睿什么时候发布(10代酷睿什么时候降价)

  • 通话时网络数据继续用怎么设置(通话网络差怎么解决)

    通话时网络数据继续用怎么设置(通话网络差怎么解决)

  • b站视频下载在哪(b站视频下载在哪找)

    b站视频下载在哪(b站视频下载在哪找)

  • videoleap怎么设置0.1秒(videoleap怎么添加音乐)

    videoleap怎么设置0.1秒(videoleap怎么添加音乐)

  • 如何看netflix

    如何看netflix

  • 巴伐利亚阿尔卑斯山脉中的米滕瓦尔德小屋,德国 (© Sebastian Frölich/Offset by Shutterstock)(巴伐利亚知乎)

    巴伐利亚阿尔卑斯山脉中的米滕瓦尔德小屋,德国 (© Sebastian Frölich/Offset by Shutterstock)(巴伐利亚知乎)

  • Redis高频面试题汇总(上)(redis面试必会6题经典)

    Redis高频面试题汇总(上)(redis面试必会6题经典)

  • 出口退税率怎么算
  • 税收滞纳金是什么债权
  • 个体户无票收入对公司有影响吗
  • 捐赠资产管理办法
  • 外资企业能投资国企么
  • 拿工资要开发票,发票去哪儿开?
  • 以设备投资入股要交增值税
  • 企业所得税季初不能是0
  • 开出收据要做财务报表吗
  • 采购的固定资产验收无误后直接安装使用
  • 其他综合收益影响所有者权益吗
  • 收到赠品入库需要用什么记录
  • 一般纳税人注销库存需要补交税吗
  • 预付房租租金如何做账
  • 公司法人要交什么税
  • 个体工商户怎么注册
  • 专票开户行信息少股份有限公司有影响吗?
  • 房屋租赁的税收政策
  • 税控盘开票流程图解2022
  • 银行异地汇款抽奖需要扣缴个人所得税吗?
  • 出口货物免征增值税的有哪些
  • 收入与成本不匹配建议怎么写
  • 分次付息会计分录
  • 个税在发工资的时候直接扣下来吗
  • 补交以前年度个税怎么做账
  • 收到采购商品
  • 苹果电脑怎么截屏ctrl加什么
  • win10开机内存占用60% 8g占用过高
  • win7取消共享文件夹
  • 模具费用如何平摊到产品上
  • 为什么预付账款是流动资产
  • 房屋租赁合同变更
  • mdn php
  • elementui常用组件
  • 付不出去的应付账款要交增值税吗
  • 不征税收入如何记账
  • _system~.ini 病毒
  • phpunicode
  • php递归函数的例子
  • 软件企业高新技术有哪些
  • 融资租赁与经营租赁的联系
  • php实现文件上传需要使用哪个全局变量
  • 销售赔偿款增值税和所得税
  • pytorch广播相乘
  • pdca安全管理方法
  • 结算应付职工薪酬影响当期损益吗
  • 发行债券支付的费用要减吗
  • 生产部门使用的各种机器设备属于什么会计科目
  • 织梦是什么框架开发的
  • 受托机构名称填什么
  • 业务招待费进项税
  • 免税农产品按多少抵扣
  • 出口货物退免税的管理规定
  • 以红字冲回
  • 投资者向企业投入资本的形式
  • 外贸公司收取国家税费吗
  • mysql数据库使用教程
  • mysql 启动报错
  • ubuntu 14.10
  • 还原windows是什么意思
  • win7怎么关闭自带键盘
  • win8程序无响应频繁
  • win10升级安装视频
  • win10正式版激活码
  • opengl纹理贴图正方体六个面
  • vim安装ycm
  • 编程语言javascript
  • 拦截器 aop
  • javascript高级程序设计电子书
  • jquery怎么获取
  • nodejs 异步io
  • unity gpu优化
  • android中适配器
  • jquery的筛选
  • 安卓layout布局
  • express常用api
  • 广州市税务局机构设置
  • 江苏国家税务机关电话
  • 彩票中500万自己能得多少
  • 牛力扳手怎么用
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设