最近这段时间,用VUE写东西,有个打印功能。

百度了一下,铺天盖地的VUE打印的两种实现方法。

很感激这些千篇一律的帖子,虽然不知道他们是否真的用过,还是只是复制粘贴。

至少这些帖子告诉我,是有两个可以选择的,并且多看几篇帖子,总算把这两个打印方法,都试了一遍。

下面简单总结一下:

先说结论:请使用第二种方法,下载print.js到本地,然后放到项目中导入。原因后边说。

一、使用vue-print-nb方法

具体的使用这里就不详细说明了,因为网上真的太多太多了。千篇一律的。

在本地直接npm安装一下就好。按照步骤一点一点来。

然后在自己项目的配置文件里import进来就可以了。

使用就更简单了。选好区域直接调用即可。

打印效果超出预期的好。感谢这个插件的作者!

二、使用print.js方法

这个简单的程度更不用说了。就是一个JS下载下来,直接放到项目中(libs目录)

然后同样import导入,并use就可以使用了。

使用方法同样简单,只是写法上看着比第一种感觉上low那么一丢丢,但是真的是超级的简单好用哦。

同时,效果上和第一个基本上一模一样。

使用说完了,说说问题吧。

对比:

1、安装和使用

方法一,需要npm安装,说简单也简单,说复杂也复杂。并且所有项目参与者都要安装,否则会报错。

方法二,不需要做什么,只要有一个搞到项目中,其他人版本库中拉代码即可。维护简单方便。

2、调试和维护

方法一,源码相对属于不直接公开的,想看需要到node_modules目录去找,修改日后维护成本稍微高点。

方法二,源码就一个print.js文件,在项目目录中,随时都可以看到,随时可以修改调试,简单方便。并且代码还少哦。

3、使用时的BUG

方法一,存在跨域的BUG,就是link里边的样式路径必须是相对路径或者与站点同域,否则会垮掉。

方法二,目前没有发现使用上的BUG。

最后,应用中碰到的问题

最开始使用的是方法一,看着高端。哈哈……但是本坑惨了,因为本地调试和测试环境都没问题。所以一直也就没有发现BUG。直到上线后,再测试才发现问题。因为生产环境CSS是走CDN的,域名不一致了,导致JS报错。打印功能垮掉。

最终临时下掉打印功能,还要想业务部门解释。毕竟答应没做到么。

接下来,解决问题。通过查看源码,不断调试验证,最终发现,就是类似跨域的问题,导致读取link里边的文件失败。报错后终止了JS的执行。当然,BUG原因也找到了,改是能改,但是比较麻烦,毕竟源码不在项目中。

然后,尝试使用print.js来实现打印,先确认一下,至少不会有方法一的BUG,然后也做了各测试,确实没有方法一的问题。所以最终我们现在使用这个。但是,因为还没有正式使用,也没有发现问题。

等以后用久了,再看看。不过,源码在项目中,修改多少也方便点儿。

还有个问题,就是打印预览时,发现多出一个空白页,打印时也会真的打印一个空白页出来。

经过各种折腾,真没发现原因,网上搜索了一下,真心解决办法很少,有一个说的不明不白,有一个说的是body的默认margin的默认值问题。

但是可惜,我这边都不是,所以,在没有办法下,只能自己一点点的调试。什么情况下会有东西超出页面。

不知道最终原因(原理),但是解决了,就是高度100%的问题。页面打印部分有标签高度设置了100%,但是视觉上没有超出,打印时,莫名的就影响了,多出一个空白页。

把这个高度100%删除,就没有空白页了。

所以,出现空白页,注意两点:1、body的margin属性改成0;2、找到height属性为100%的尝试修改成其他值或者删除该属性。

使用那各VUE的打印功能(print.js)出现多打印一个空白页的问题的更多相关文章

  1. 前端网页打印插件print.js(可导出pdf)

    在前端开发中,想打印当前网页的指定区域内容,或将网页导出为多页的PDF,可以借助print.js实现,该插件轻量.简单.手动引入.不依赖其他库.示范项目github:https://github.co ...

  2. 生鲜配送管理系统_升鲜宝V2.0 小标签打印功能【代配送商品打印小标签功能】说明_15382353715

    小标签打印说明 小标签打印可以打印本系统的订单商品数量,也可以把外部的订单商品导入本系统进行打印. 打印本系统中的订单商品操作说明[上篇文章已经讲解相关的操作说明] 打印本系统之外的订单商品明细清单 ...

  3. 使用jquery.jqprint.js 实现的打印功能,IE9不能进行打印预览、火狐打印空白界面

    提示的内容:SCRIPT438: 对象不支持“ExecWB”属性或方法 首先解决IE9不能打印预览的问题: 查找了一大推资料 ,有两种说法:一种是IE的安全性级别太高:一种是需要安装什么   微软we ...

  4. vc 实现打印功能

    Visual C++6.0是开发Windows应用程序的强大工具,但是要通过它实现程序的打印功能,一直是初学者的一个难点,经常有朋友询问如何在VC中实现打印功能,他们往往感到在MFC提供的框架内实现这 ...

  5. 前端打印功能实现及css设置

    首先是使用下边代码,实现js局部打印功能.参数dom为需要打印的节点,为了保证页面功能的单一性,最好弹出一个新的预览页面完成打印功能. function print(dom){ var body = ...

  6. Atitit.java swing打印功能 api  attilax总结

    Atitit.java swing打印功能 api  attilax总结 1. 打印方式有三种:2 1.1. 一是不经过任何修改,直接调用javascript中的window.print()打印.2 ...

  7. MFC 实现打印机打印功能

    Visual C++6.0是开发Windows应用程序的强大工具,但是要通过它实现程序的打印功能,一直是初学者的一个难点,经常有朋友询问如何在VC中实现打印功能,他们往往感到在MFC提供的框架内实现这 ...

  8. js打印功能

    1.window.print方式: jsp页面 打印按钮:       <input type="button" value="打印" onclick=& ...

  9. 关于页面打印window.print()的样式问题

    当我们打印网页的时候.有时候会发现.打印出来的.跟网页上看到的样式的差别有点大.这其中可能有的问题是.样式问题. 当调用打印(window.print())方法时.打印机会在网页的样式中查找 @med ...

随机推荐

  1. Sqlserver自动备份bat

    1.bat文件 @echo off echo 删除30天前的备分文件和日志 forfiles /p /c "cmd /c del @path" \Tools\Binn echo 数 ...

  2. [BJDCTF2020]Cookie is so stable

    0x00 知识点 Twig模板注入 链接: https://www.k0rz3n.com/2018/11/12/%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%E5%B8%A ...

  3. NASA航天技术演示实验集

    为了支持太空探索NASA开起了一系列先进太空技术演示实验. 具体的实验实验地址在:https://www.nasa.gov/mission_pages/tdm/main/overview.html 通 ...

  4. STM32中ARM系列编译工具链的编译宏选择(__CC_ARM、__ICCARM__、__GNUC__、__TASKING__)

    一 前言 stm32 f103中.关系到一个选择何种编译宏的问题.这里就梳理一下吧. 二 正文 1  在 core_cm3.h 文件中,有如下代码: #if defined ( __CC_ARM ) ...

  5. QT事件处理–notify()

    转载至:https://www.deeplearn.me/349.html 一.说明 Qt 处理事件的方式之一:”继承 QApplication 并重新实现 notify()函数”.Qt 调用 QAp ...

  6. 记录一次ajax使用

    function getSSOUrl(urlvalue) { var urls; $.ajax({ type: "GET", url: "../../GeoManage/ ...

  7. 可并堆模板题-mergeable heap

    Description 有n个点,第i个点标号为i,有两种操作:0 x y 表示把x所在堆和y所在堆合并.1 x 表示询问x所在堆的最小权. Input 第一行两个整数n,m,表示有n个点m个操作. ...

  8. 一万五千字的Dissertation你真的会写了吗?

    在英国留学的同学们想要顺利毕业,就必须要过Dissertation这一关.而一篇Dissertation字数可能多大一万五千字,其写作难度之大让很多留学生疯狂吐槽.那么这么多字的Dissertatio ...

  9. 公告上下滚动基于Jquery

    前提  需要引入jquery  如果你用的单位不是px  修改的同时红色部分需保持一致 <!DOCTYPE html> <html> <head> <meta ...

  10. python连接 ssh

    import paramiko # private = paramiko.RSAKey.from_private_key() 秘钥 trans = paramiko.Transport((" ...