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

  • 怎么开启荣耀60相机美颜(怎么开启荣耀60隐藏空间)

    怎么开启荣耀60相机美颜(怎么开启荣耀60隐藏空间)

  • 腾讯课堂怎么加入老师课堂(腾讯课堂怎么加入课程)

    腾讯课堂怎么加入老师课堂(腾讯课堂怎么加入课程)

  • oppo手机闪充模式的开启方法(oppo手机闪充模式怎么没有了)

    oppo手机闪充模式的开启方法(oppo手机闪充模式怎么没有了)

  • 苹果手机照片最近删除删了还可以恢复吗(苹果手机照片最近删除怎么取消密码)

    苹果手机照片最近删除删了还可以恢复吗(苹果手机照片最近删除怎么取消密码)

  • oppo reno 4se能装内存卡吗(opporeno4可以升级安卓11吗)

    oppo reno 4se能装内存卡吗(opporeno4可以升级安卓11吗)

  • 华为nova5处理器是多大的(华为nova5处理器是啥)

    华为nova5处理器是多大的(华为nova5处理器是啥)

  • 华为p30pro摇晃里面会有异响(华为p30pro摇一摇为什么会响)

    华为p30pro摇晃里面会有异响(华为p30pro摇一摇为什么会响)

  • 抖音可以特别关注吗(抖音可以特别关注别人吗)

    抖音可以特别关注吗(抖音可以特别关注别人吗)

  • 已经极速退款,但是卖家拒收有影响吗(已经极速退款,商家确认需要多久)

    已经极速退款,但是卖家拒收有影响吗(已经极速退款,商家确认需要多久)

  • 微信卸载了还有记录吗(微信卸载了还有转账记录吗)

    微信卸载了还有记录吗(微信卸载了还有转账记录吗)

  • 快手小店怎么突然没了(快手小店怎么突然开不了了)

    快手小店怎么突然没了(快手小店怎么突然开不了了)

  • ps文档大于2千兆不能储存怎么办(ps文件大于两千兆不能储存什么意思)

    ps文档大于2千兆不能储存怎么办(ps文件大于两千兆不能储存什么意思)

  • 苹果x两个喇叭都响吗(苹果x两个喇叭不响)

    苹果x两个喇叭都响吗(苹果x两个喇叭不响)

  • excel递减排序在哪(excel表递减排序)

    excel递减排序在哪(excel表递减排序)

  • 怎么隐藏手机桌面图标(怎么隐藏手机桌面微信图标)

    怎么隐藏手机桌面图标(怎么隐藏手机桌面微信图标)

  • 手机关机未接电话能显示么(手机关机未接电话没显示怎么回事)

    手机关机未接电话能显示么(手机关机未接电话没显示怎么回事)

  • iphone11是双卡还是单卡(iphone11是双卡机吗)

    iphone11是双卡还是单卡(iphone11是双卡机吗)

  • 手机充电模式在哪里(手机充电选项在哪设置)

    手机充电模式在哪里(手机充电选项在哪设置)

  • 全民k歌音兔怎么用(全民k歌怎么用音兔制作整首歌曲)

    全民k歌音兔怎么用(全民k歌怎么用音兔制作整首歌曲)

  • Win10怎么在防火墙里开放端口?(win10怎么防火墙白名单)

    Win10怎么在防火墙里开放端口?(win10怎么防火墙白名单)

  • 做设计win7还是win10强(设计师用windows什么版本)

    做设计win7还是win10强(设计师用windows什么版本)

  • 苹果推送最新系统macOS Catalina 10.15 正式版升级(iphone系统推送)

    苹果推送最新系统macOS Catalina 10.15 正式版升级(iphone系统推送)

  • 【JavaScript】DOM和事件简介和文档加载流程以及DOM查询(上)案例(附源码)(javascript bom dom)

    【JavaScript】DOM和事件简介和文档加载流程以及DOM查询(上)案例(附源码)(javascript bom dom)

  • 帝国CMS提示“您来自的链接不存在”怎么解决?(帝国cms使用手册)

    帝国CMS提示“您来自的链接不存在”怎么解决?(帝国cms使用手册)

  • 年末发票
  • 合伙企业交企业所得税还是个人所得税
  • 记账凭证银行利息该怎么记凭证
  • 自己申报个人所得税需要补缴,必须自己申报自己补缴吗
  • 免税店含增值税吗
  • 债券置换债务
  • 商业企业月末结转成本
  • 融资购买无形资产例题
  • 贸易类公司所得税核定征收税率是多少?
  • 亏损企业股东年底借钱未还
  • 电解铜进口可以卖吗
  • 结转与结余
  • 劳务费开发票还要代扣代缴吗?
  • 开票系统问题
  • 公司账上没车可以报车辆保险吗
  • 抄报汇总对比通用怎么写
  • 工效挂钩企业工资税前扣除有何规定?
  • 小型微利企业普惠性税收减免政策执行期限
  • 在win7中怎么安转只兼容win10的软件
  • linux中的util值很高
  • 商标注册费相关法律法规
  • 报销怎么打
  • windows8.1下Apache+Php+MySQL配置步骤
  • linux中free命令详解
  • daio.dll 病毒
  • 微软windows11iso
  • php技巧
  • uni app怎么样
  • 个人房屋出租税票怎么开
  • 增值税加计抵减企业所得税如何处理
  • 代理出口货物的合同
  • php7.0新特性
  • php处理并发有哪些技术
  • yii2组件的理解
  • 投资收益影响营业利润和利润总额吗
  • vue3的unplugin-auto-import自动引入
  • 稚晖君的学历
  • python中 =是什么意思
  • 其他应收款的核算范围包括
  • 金蝶k3固定资产如何入账
  • 新公司不开户需要交税吗
  • 员工的生日津贴怎么发
  • 出差的招待费应由谁承担
  • SQLserver2008数据库Excel数据导入语句
  • 以前年度差旅费退回
  • 工会经费和工会会费的区别与联系
  • mysql改造
  • 筹建期间业务招待费的财税处理规定
  • 购房补贴退契税多久到账
  • 付款申请单如何管理
  • 无偿赠送的货物如何申报增值税
  • 环保公司开票内容
  • 无发票入账违反什么规定
  • 代别人公司发工资是工资薪金还是劳务报酬
  • 特定担保债权
  • 初级会计现值的计算
  • 原始凭证怎么粘
  • 设置密码保护的pdf怎么转word
  • 断电恢复
  • 电脑打开win
  • windows time同步系统时间的服务无法启动报错1058解决方法
  • win7开机黑屏只有一个鼠标箭头
  • win7系统电脑怎么开热点
  • [置顶]游戏名:chivalry2
  • 网关绑定失败怎么设置
  • Python 常用库
  • JavaScript bold方法入门实例(把指定文字显示为粗体)
  • python libnum
  • 怎样在电子税务局查询财务报表
  • 地税局 业务
  • 国家税务局通用机打发票属于增值税发票吗
  • 发票可以异地领用吗
  • 江苏税务个人所得税app怎么下载不了?
  • 上海市国家税务局
  • 开企业资信证明怎么办?需要哪些材料?
  • 云南省税务干部学校是干什么的
  • 娱乐圈的收入高得离谱
  • 机构改革哪个单位负责
  • 何为标兵称号
  • 城市维护建设税减半征收政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设