web打印的方式可分为三种:

  1. 直接调用浏览器打印
  2. 通过javascript插件调用浏览器打印
  3. 通过第三方程序直接调用打印机

一、直接调用浏览器打印

通过在javascript代码中调用window.print()函数实现,浏览器会自动获取当前页面内容,并打开浏览器的打印预览页面。

使用场景:刚好当前页面的全部内容需要打印。

优点:兼容性好

缺点:适用场景狭窄;仅能识别内联样式,无法识别行内样式和外部样式

不推荐

二、利用第三方js库

比较推荐的是Print.js,目前GitHub上star最多的js打印控件,支持ES6,npm引入。

使用场景:只要没有直接打印的需求的场景,都可以使用这款插件

优点:

  1. 支持打印的类型多:PDF、HTML、IMAGE、JSON
  2. 支持行内样式与外联样式,再也不用在DOM元素上写满样式了
  3. 兼容性好,除了IE不支持PDF和IMAGE打印外,其余主流浏览器全部支持

缺点:

  1. 可能出现的样式异常
  2. 无法直接打印/静默打印,因为是调用chrome打印,还是会弹出打印预览页面

使用方法:

  1. 安装,npm方式:
npm install print-js --save

yarn方式:

yarn add print-js

2. 在需要使用的文件中引入:

import print from 'print-js'

3. 调用打印,以打印html为例,调用打印方法后浏览器会弹出打印预览页面:

import * as medicalStyle from '@/assets/style/eye/medical/standard.css'
import print from 'print-js'
...
/*** 打印方法*/
printMedical () {// 调用打印插件,配置项参考官网:https://printjs.crabbly.com/print ({// printable为需要打印的DOM的idprintable: 'standard',// type为需要打印的类型type: 'html',// css为样式文件或者直接css样式,支持导入整个css文件,或者css文件数组css: medicalStyle,// 可选项,这样配置意味着应用所有导入的css文件targetStyles: ['*']})
}

三、利用第三方插件LODOP

LODOP是老牌打印插件了,功能十分强大,同时也在与时俱进,原先老版本是以插件形式提供打印服务,目前官方也发现随着浏览器不断更新,兼容性有问题,开发了新的C-Lodop程序,解决了浏览器的兼容问题,

适用场景:对打印有较多配置要求,尤其需要直接打印的场景

优点:

  1. 支持直接打印
  2. 支持打印类型丰富:HTML、TABLE、URL、TEXT、文档模板
  3. 配置项十分丰富,大到是否显示打印预览,小到分页设置、边框设置等等
  4. 兼容性好,除了兼容各类浏览器外,甚至还有LINUX版本

缺点:

  1. 直接打印功能需要付费解锁,但价格不算离谱,210RMB起
  2. 需要单独下载exe安装到电脑上,不过也没办法,能实现如此强大的打印功能,只有此途径
  3. 只支持内联样式,样式只能卸载DOM元素上

使用方法(window操作系统):

  1. 下载插件:

建议只安装红圈中云打印程序。更详细的区别请看官网的介绍文档

2. 将LodopFuncs.js拷贝至项目目录下,例如我是放在src/asserts/printPlugin目录下,在文件底部添加导出语句

3. 在页面中使用:

...
// 导入打印插件
import { getLodop } from '@/assets/printPlugin/LodopFuncs'
...
// 打印方法
printMedical () {// 获取打印对象const LODOP = getLodop()// 打印初始化LODOP.PRINT_INIT('打印任务名')// 设定纸张大小,指定需要打印的DOM元素LODOP.ADD_PRINT_HTM(0, 0, '100%', '100%', document.getElementById('standard').innerHTML)// 执行打印-直接打印LODOP.PRINT()}

以上是最简打印配置,有其他需要可以参考官方文档

web打印三种实现方式相关推荐

  1. 在Linux安装配置Tomcat 并部署web应用 ( 三种方式 )

    系统版本:centos6.5版本 java版本:1.7 一.准备工作 1.java -version 检查是否有java环境,没有则需要去安装并配置到环境变量中. 2.下载tomcat包,下载地址:h ...

  2. Web框架之Django_07 进阶操作(MTV与MVC、多对多表三种创建方式、前后端传输数据编码格式contentType、ajax、自定义分页器)

    阅读目录 一.MVC与MTV 二.多对多表的创建 三.ajax,前后端传输编码格式contentType 四.批量插入数据与自定义分页器 摘要 MTV与MVC 多对多表三种创建方式 ajax ,前后端 ...

  3. 承包经营权地块图打印三种方式

    承包经营权地块图打印三种方式 1.一个地块一张图 2.权利人所有地块一张图打印 3 .多个地块独立成一张图打印 说明文档下载地址: http://files.cnblogs.com/files/gis ...

  4. MyEclipse网站服务器,MyEclipse中web服务器的三种配置方式

    初学Javaweb开发的人们都会遇到一个问题,就是服务器环境的搭建配置问题.下面介绍三种服务器的搭建方式. 直接修改server.xml文件 当你写了一个web应用程序(jsp/servlet),想通 ...

  5. 计算机文件保存方式,Word文档的三种保存方式

    word中有多种保存文档的方式.可保存当前处理的活动文档 (活动文档:正在处理的文档.在 Microsoft word 中键入的文本或插入的图形将出现在活动文档中.活动文档的标题栏是突出显示的.),无 ...

  6. selenium中三大切换 三种等待方式

    前言 ui自动化测试,就是通过代码模拟手工操作,通过点击.拖拽.输入等方式,进行浏览器页面的操作,我们常用的web自动化测试工具,是selenium:同时在我们日常操作中,由于需要创建链接,加载页面, ...

  7. python数据结构与算法:二叉树及三种遍历方式(先序遍历/中序遍历/后序遍历)

    树的实现采用queue的形式: 树的三种遍历方式(广度优先白能力法):先序遍历(根左右),中序遍历(左根右)以及后序遍历(左右根) ######################P6.4 数据结构### ...

  8. 1.5 使用new创建动态结构和自动, 静态, 动态三种存储方式

    1. 有些时候在运行时创建数组由于在编译时创建数组(有些时候不是这样, 比如使用OpenGL绘图和GPU并行计算结合的时候, 需要将大量的数据传送到显存, 每次计算完又要传送回宿主机渲染, 但并不是要 ...

  9. Nhibernate 三种配置方式

    Nhibernate 三种配置方式 Posted on 2010-06-15 11:47 linFen 阅读(153) 评论(0) 编辑 收藏 1 App.config 的配置: <?xml v ...

  10. java如何实现定时任务_Java定时任务的三种实现方式

    前言 现代的应用程序早已不是以前的那些由简单的增删改查拼凑而成的程序了,高复杂性早已是标配,而任务的定时调度与执行也是对程序的基本要求了. 很多业务需求的实现都离不开定时任务,例如,每月一号,移动将清 ...

最新文章

  1. springboot 线程池_Spring boot 2 线程池怎么配置
  2. Linux中和文件相关的操作
  3. StaicArray
  4. [ZJOI2007] 棋盘制作(单调栈 / DP悬线法)
  5. visio能做动态原理图_单、双节锂电池2x20W动态升压双声道音频功放组合方案
  6. 有哪些关于iPhone使用的小技巧?
  7. 赛尔笔记 | 事件间因果关系方向数据调研
  8. 创建AutoCAD线型
  9. shiro框架实现权限管理
  10. 系统测试缺陷检出密度越大越好吗?
  11. Hibernate中枚举Enum类型的映射策略
  12. redis源码浅见之sds
  13. 微信小程序8-云函数
  14. Charles 2 - breakpoint断点、compose编辑、rewrite重写、map映射重定向、repeat重发、throttling弱网测试
  15. 用python画几个东西怎么画_一步一步教你如何用Python画一个滑稽
  16. win 7系统出现计算机内存不足,win7系统计算机内存不足的解决方法
  17. DXP 原理图pcb布小知识
  18. swf文件转换其他视频格式工具(例:swf to mp4) ,转换后的视频无水印
  19. 你是我生命中最美丽的温暖
  20. dvcs-ripper安装教程

热门文章

  1. Linux操作系统-----应用开发概述
  2. 一本教你如何编写高质量代码的图书:《设计模式之美》
  3. CSS实现背景图片自适应屏幕大小
  4. 怎样用stm32驱动ds18b20温度芯片
  5. 极限精简服务器系统,极限精简斐讯T1/N1 极客开发者强迫症福音6.25
  6. 数据包络分析方法与maxdea软件_北大经济学博士张川川:经济学实证分析方法与论文写作经验分享会(国庆网络专场)...
  7. 基于SpringBoot的社团管理系统的设计与实现
  8. 命令行工具解析Crash文件,dSYM文件进行符号化
  9. 二叉树的前中后序遍历
  10. Ubuntu操作系统MTK刷机工具失败解决方案