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

  • 微博营销过程中活动策划重点和操控方法(微博营销过程中的问题)

    微博营销过程中活动策划重点和操控方法(微博营销过程中的问题)

  • 苹果13左边最上面键是干嘛的(苹果13左边最上面键开静音还会唱)

    苹果13左边最上面键是干嘛的(苹果13左边最上面键开静音还会唱)

  • 金立语音助手怎么呼出(金立手机怎么呼唤语音助手)

    金立语音助手怎么呼出(金立手机怎么呼唤语音助手)

  • 苹果电池健康多少可以免费换新(苹果电池健康多少是正常)

    苹果电池健康多少可以免费换新(苹果电池健康多少是正常)

  • 切换幻灯片的快捷键(幻灯片如何快速切换)

    切换幻灯片的快捷键(幻灯片如何快速切换)

  • 用亲情号支付对方能看到详细信息吗(亲情号支付对方会有短信提示吗)

    用亲情号支付对方能看到详细信息吗(亲情号支付对方会有短信提示吗)

  • 宽带和带宽的区别(宽带和带宽的区别在哪里)

    宽带和带宽的区别(宽带和带宽的区别在哪里)

  • gt635m显卡相当于什么水平(gt630m显卡性能)

    gt635m显卡相当于什么水平(gt630m显卡性能)

  • 微信电脑版无法登录(微信电脑版无法发送图片)

    微信电脑版无法登录(微信电脑版无法发送图片)

  • 耳机的播放器是什么(耳机播放器搭配)

    耳机的播放器是什么(耳机播放器搭配)

  • nfc开卡什么意思(开通nfc功能安全吗)

    nfc开卡什么意思(开通nfc功能安全吗)

  • 笔记本电脑拔掉电源就关机怎么回事(笔记本电脑拔掉电池插着电源好吗)

    笔记本电脑拔掉电源就关机怎么回事(笔记本电脑拔掉电池插着电源好吗)

  • 摄像头poe和非poe区分(摄像头poe和非poe哪个贵)

    摄像头poe和非poe区分(摄像头poe和非poe哪个贵)

  • oppoa11充电多长时间(oppoa11x充电多久)

    oppoa11充电多长时间(oppoa11x充电多久)

  • 爱奇艺能看央视直播吗(爱奇艺能看央视三套直播吗现在)

    爱奇艺能看央视直播吗(爱奇艺能看央视三套直播吗现在)

  • 剪映怎么把照片时间缩短(剪映怎么把照片做成动态视频)

    剪映怎么把照片时间缩短(剪映怎么把照片做成动态视频)

  • ios13都有什么新功能(ios13的手机有哪些)

    ios13都有什么新功能(ios13的手机有哪些)

  • 设计现代os的主要目标是什么(设计现代os的主要目标是( )和( ))

    设计现代os的主要目标是什么(设计现代os的主要目标是( )和( ))

  • 微信号被别人注册了怎么办(微信号被别人注销了怎么恢复)

    微信号被别人注册了怎么办(微信号被别人注销了怎么恢复)

  • 手机qq资料怎么弄空白(手机qq资料怎么把空间去掉)

    手机qq资料怎么弄空白(手机qq资料怎么把空间去掉)

  • 最大规模的科技公司IPO交易是什么(最大规模的科技公司)

    最大规模的科技公司IPO交易是什么(最大规模的科技公司)

  • 使用nvm管理node版本,npm安装失败解决方法(nvm for window)

    使用nvm管理node版本,npm安装失败解决方法(nvm for window)

  • CentOS利用telnet命令检测IP端口的命令方法(centos8 telnet)

    CentOS利用telnet命令检测IP端口的命令方法(centos8 telnet)

  • 纳税等级怎么从M变成B需要什么条件
  • 个人是否可以申请精神司法鉴定
  • 六税两费都包括哪些税费种?
  • 办公楼出租价格怎么算
  • 销售净收入咋算
  • 金蝶软件预收账款明细
  • 债转股资金
  • 会计核算形式
  • 出口转内销增值税报表怎么填
  • 收到发票错误主管有责任吗
  • 个人借款到期未还诉讼时效
  • 税务局退税收入多久到账
  • 增值税扣税项目范围
  • 学校应该缴纳的税
  • 材料销售的账务处理
  • 确认并支付本年职工工资
  • 小规模纳税人适用的增值税征收率
  • 职工福利费和职工薪酬的区别
  • 某企业存货跌价准备原材料科目贷方
  • windows账户名a
  • php的强大功能函数库中都含有哪些常用函数?
  • macbookzen
  • 现金发放的餐补算工资么
  • linux限制用户访问文件
  • 退回多收款项,提现金,如何做账
  • 分批供货付款方式
  • 收到商品的会计分录怎么写
  • 深度linux使用入门教程
  • php getheader
  • php io操作
  • 无形资产转让的会计处理
  • php投票网站制作
  • 固定资产的减值准备,一经确认,不得转回
  • 共轭梯度法matlab代码
  • python读书笔记
  • npm ERR! code ERESOLVEnpm ERR! ERESOLVE could not resolve dependency
  • cat 开源
  • php截取字符串几种方式
  • ps使用背景橡皮擦的时候需要按住什么键
  • 公积金提取条件资料
  • 核定征收的收入
  • 软件使用权怎么入账
  • 逐期增长量与累计增长量
  • 外贸客户付款方式
  • 现金周期和经营周期的计算公式
  • 出租车发票可以改时间吗
  • 企业投资收益要交增值税吗
  • 纳税人的交际应酬消费可以抵扣进项税额
  • 应交税费的明细账怎么登记
  • 拆迁补偿款的组成
  • 税控设备技术维护费
  • 个人向公司借款流程
  • 银行承兑汇票记载事项
  • mysql Community Server 5.7.19安装指南(详细)
  • select * from sp_who的解决方案
  • 用户画像
  • win8.1关机没反应
  • 打印机取消打印在哪里
  • windows更改图标大小
  • window所有程序在哪里
  • Windows Server 2008下Backup功能全通透
  • 解析包出现错误无法安装怎么办
  • shell多进程并行返回值
  • 手工设置源泉设计
  • Mac如何更换壁纸
  • linux输出结果
  • ctd module
  • shcore.dll干啥用
  • win8删除所有内容并重新安装windows
  • win10系统命令大全
  • windows的视频
  • load its core dll
  • win7系统删除文件夹怎么恢复
  • windows alt r
  • 深入理解计算机系统
  • 浅析Python中MySQLdb的事务处理功能
  • javascript编程技术
  • js命名函数
  • 税务系统跨区调动
  • 地税官网怎么登录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设