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

  • 联想无线鼠标怎么连接电脑(联想无线鼠标怎么充电)

    联想无线鼠标怎么连接电脑(联想无线鼠标怎么充电)

  • 小米手表color2支持微信支付吗(小米手表color2支持微信吗)

    小米手表color2支持微信支付吗(小米手表color2支持微信吗)

  • 小米手机盲人模式怎么开启(小米手机盲人模式)

    小米手机盲人模式怎么开启(小米手机盲人模式)

  • 微信名下几个账号怎么查(微信名下几个账号怎么回事)

    微信名下几个账号怎么查(微信名下几个账号怎么回事)

  • 苹果手机被wifi禁了怎么办(苹果手机被wifi植入监控病毒那抹点数据有用吗)

    苹果手机被wifi禁了怎么办(苹果手机被wifi植入监控病毒那抹点数据有用吗)

  • 电脑重装后pathnotfound(电脑重装后怎么恢复原来的系统)

    电脑重装后pathnotfound(电脑重装后怎么恢复原来的系统)

  • 存储器的主要功能(存储器的主要功能是什么?为什么要把存储)

    存储器的主要功能(存储器的主要功能是什么?为什么要把存储)

  • 退出id后备忘录没了(退出id后备忘录没有了怎么恢复)

    退出id后备忘录没了(退出id后备忘录没有了怎么恢复)

  • 为什么苹果连拍只能600(为什么苹果连拍这么慢)

    为什么苹果连拍只能600(为什么苹果连拍这么慢)

  • 小米手表color和小米手表(小米手表color和红米手表2对比)

    小米手表color和小米手表(小米手表color和红米手表2对比)

  • ae安装成功但无法打开(ae安装成功但无法打开0xc000007b)

    ae安装成功但无法打开(ae安装成功但无法打开0xc000007b)

  • 四川云教电视课堂可以在手机上看吗(四川云教电视课堂五大今天回放)

    四川云教电视课堂可以在手机上看吗(四川云教电视课堂五大今天回放)

  • 华为自带天气软件卸载了怎么恢复(华为自带天气软件下载)

    华为自带天气软件卸载了怎么恢复(华为自带天气软件下载)

  • 手机网突然变得特别差怎么办(手机网突然变得特别差怎么回事)

    手机网突然变得特别差怎么办(手机网突然变得特别差怎么回事)

  • 怎么拉黑钉钉好友(钉钉怎么样拉黑人)

    怎么拉黑钉钉好友(钉钉怎么样拉黑人)

  • tag al00是华为什么型号(trt一al00华为什么型号)

    tag al00是华为什么型号(trt一al00华为什么型号)

  • 手机没有话费了能不能收到短信?(手机没有话费了怎么自己充)

    手机没有话费了能不能收到短信?(手机没有话费了怎么自己充)

  • iphone11无线充电伤电池吗(iphone11无线充电没反应)

    iphone11无线充电伤电池吗(iphone11无线充电没反应)

  • ipadpro是什么型号(ipad pro是什么)

    ipadpro是什么型号(ipad pro是什么)

  • 移动数据lte是4g吗(移动数据中的lte)

    移动数据lte是4g吗(移动数据中的lte)

  • 什么版本iphone显示lte(什么版本的苹果手机最好)

    什么版本iphone显示lte(什么版本的苹果手机最好)

  • 京东货到付款钱给谁(京东货到付款钱多久到账)

    京东货到付款钱给谁(京东货到付款钱多久到账)

  • 笔笔攒解冻钱去哪了(笔笔攒解冻的钱在哪里)

    笔笔攒解冻钱去哪了(笔笔攒解冻的钱在哪里)

  • 电信光纤怎么使用ipv6(电信光纤如何)

    电信光纤怎么使用ipv6(电信光纤如何)

  • iqoo怎么设置门禁卡(iqoo7怎么设置门禁卡)

    iqoo怎么设置门禁卡(iqoo7怎么设置门禁卡)

  • 苹果双卡发短信方法(苹果双卡发短信怎么选择)

    苹果双卡发短信方法(苹果双卡发短信怎么选择)

  • python中OpenCV调节亮度(opencv+python)

    python中OpenCV调节亮度(opencv+python)

  • 房屋出租需要交税多少起征
  • 增值税的免税项目有哪些
  • 成本结算怎么处理?
  • 权益法核算转成本法
  • 增值税专用发票怎么开
  • 为员工集中购买医疗保险
  • 未达起征点的增值税怎么账务处理
  • 分公司预缴企业所得税总公司可以抵扣吗
  • 计提跌价的存货卖出了
  • 房地产开发企业的土地使用权计入哪里
  • 企业收到赞助费
  • 预收账款确认收入摘要怎么写
  • 项目分红是否需要交税
  • 专票的有效期是什么意思
  • 一个季度为纳税期限的规定适用
  • 承兑汇票章不清晰 情况说明
  • 购买用于产品设计拍摄的道具怎么做账?
  • 协定存款分析及2018金融机构人民币存款基准利率表
  • 1697509557
  • 机动车检测工作
  • 按简易办法征收增值税
  • 工程结算如何做账
  • 单位租房的房租怎么入账
  • 辞职的补偿金怎么做账
  • 什么是文件扩展名dws
  • 如何计算劳务费个人所得税
  • wlms.exe是什么
  • 公司已经改名原来的公章还有效吗
  • wordpress更改字体
  • ReadTimeoutError: HTTPSConnectionPool(host=‘cdn-lfs.huggingface.co‘, port=443)
  • 文化建设事业费优惠政策
  • 一天看小说十几个小时的人
  • php读取文件内容
  • 分支机构可以不分配所得税吗?
  • php数据库分页是怎么实现的
  • 减免增值税附加税也一起减免吗
  • torch测定
  • windowlocation用法
  • pilot coat
  • 增票的纳税人识别号是啥
  • 发票打印机如何安装在电脑上
  • 补充医疗保险属于什么
  • php调用变量
  • 公司股东向银行货款,与私人财产有没有关系
  • 缴纳税收的凭证怎么打印
  • 公司向股东借的钱怎么还
  • 税前利润是否等于利润总额
  • 一张发票能分开做帐务处理吗?
  • 豆腐是农产品还是工业产品
  • 以前年度应收账款少记怎么处理
  • 制造费用如何结转生产成本
  • 购买税控系统分录
  • 研发投入算到产值里吗
  • 结算专用章是财务章吗
  • 企业财务会计是应用在各类企业
  • sql server 3417错误
  • mysql查询时间语句
  • win7 win8.1双系统安装教程
  • 怎么处理鲍鱼
  • mac 设置
  • gpt分区方法
  • ubuntu14.04升级
  • cocos引擎教程
  • jquery的用处
  • jquery怎么写
  • android通知消息
  • perl脚本教程视频
  • code::blocks怎么用
  • nodejs readdir
  • dos下如何复制文件
  • 一张监控
  • node用什么写的
  • 日历 caldav
  • jquery封装原理
  • 3000劳务报酬如何缴税
  • 税务稽查证据问题
  • 国家税务总局关于税务机构改革有关事项的公告
  • 深圳蛇口社保局在哪里
  • 国家税务总局年底结算
  • 江西省国家税务局网站
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设