web打印三种实现方式

article/2025/9/14 14:34:49

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()}

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


http://chatgpt.dhexx.cn/article/ebg6mZIL.shtml

相关文章

html纵向广告滚动条,网页右侧的漂浮广告代码,随滚动条滚动

HTML代码(即需要漂浮的广告): js代码:前提是必须要引入jquery文件 $(function(){ $(window).scroll(function(){ var scrollTop document.body.scrollTop || document.documentElement.scrollTop || 0; $(".christmas_ad").stop(); var scrol…

php浮动广告,JavaScript实现漂浮广告代码的实例总结

我们在打开网页的时候,我们会发现不管是什么网页都会有很多漂浮的广告,有很多人都会在想,这样的效果是怎么实现的呢?今天我们就带大家详细介绍下JavaScript实现漂浮广告代码的实例总结! 第一种 漂浮广告 不符合W3C Jav…

html左侧浮动广告代码,如何制作浮动广告 JavaScript制作浮动广告代码

如果有一定的JavaScript基础,制作浮动广告还是比较容易的。直接上代码了:无标题文档 *{ margin:0; padding:0; } #csdn { width:800px; margin:0 auto; } #ad { position:absolute; right:0px; top:30px; z-index:1; } #cl { position:absolute; right:0…

php 漂浮广告代码,JavaScript实现带缓冲效果的随屏滚动漂浮广告代码

本文实例讲述了JavaScript实现带缓冲效果的随屏滚动漂浮广告代码。分享给大家供大家参考,具体如下: 这里演示了始终随屏滚动的JavaScript代码,在国内的应用泛滥成灾了,特别是一些喜欢漂浮广告的站长,常把本代码用作了漂…

html左侧浮动广告代码,纯js网页浮动广告代码

网上一般的网页浮动广告代码都是基于jquery的,受jiquery版本及浏览器限制,非常容易出现不兼容的情况,本站分享一段纯js网页浮动广告代码,简单兼容。 html代码: javascript代码: window.οnlοadfunction(){…

HTML将广告关闭的JS代码,带关闭漂浮广告代码_漂浮广告js代码_漂浮窗口模式关闭...

带关闭漂浮广告代码带关闭漂浮广告代码带关闭按钮地网页漂浮广告代码 x ff.js代码 var xpos = 20; var ypos = document.body.clientheight; var step = 1; var delay = 30; var height = 0; var hoffset = 0; var woffset = 0; var yon = 0; var xon = 0; var pause = true; v…

漂浮广告代码

<!doctype html> <html> <head> <meta charset"utf-8"> <title>漂浮广告代码</title> <script src"http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script> </head> <body> &…

php漂浮广告代码,JS随机漂浮广告代码具体实例

复制代码 代码如下: var xPos0,yPos0;//x,y轴坐标 var xon0;//图片在x轴移动方向 var yon0;//图片在y轴移动方向 var step1; //移动距离 var imgdocument.getElementByIdx_x("float");//图片层 function floatP() { var widthdocument.body.clientWidth;//浏览器…

JS实现漂浮广告功能

JS实现漂浮广告功能 前言一、漂浮广告案例 前言 漂浮广告非常简单也是老案例了&#xff0c;在网页的设计中可直接拿去用&#xff0c;原理都是我之前文章所讲到的&#xff0c;如果有什么不明白的可以看看我之前的文章&#xff0c;仅供参考学习。 一、漂浮广告案例 我在这个案例…

C语言课后习题(1)

谭浩强C语言第五版的一些课后习题 常用头文件&#xff1a; #include<stdio.h> #include<stdlib.h> #include<math.h> #include<string.h> #include<stdbool.h> 注意事项&#xff1a; 1)获取输入的字符串时&#xff0c;gets保留空格 scanf遇到空格…

C语言课后习题(计算增长率比值

#include <stdio.h>int main() {double p,r;int n;p1.00;r0.07;for(n1;n<10;n){pp*(1r);}printf("%lf\n",p);return 0; } 假如我国国民生产总值的年增长率为7%&#xff0c; 计算10年后我国国民生产总值与现在相比增长多少百分比。计算公式,r为年增长率&…

c语言字符串作业题,C语言课后习题练习(四)

(ps:提前声明一下&#xff1a;课后习题是备份给自己看的&#x1f602;) 1.输入3个整数&#xff0c;按由小到大的顺序输出 int main() { void swap(int *p1, int * p2); int n1, n2, n3; int *p1, *p2, *p3; printf("input three integer n1,n2,n3:"); scanf("%d…

翁恺C语言课后习题

1 时间换算&#xff08;5分&#xff09; 题目内容&#xff1a; UTC是世界协调时&#xff0c;BJT是北京时间&#xff0c;UTC时间相当于BJT减去8。现在&#xff0c;你的程序要读入一个整数&#xff0c;表示BJT的时和分。整数的个位和十位表示分&#xff0c;百位和千位表示小时…

啊哈C语言课后练习题

第 四 章 第四节 项目一&#xff1a;求1~100所有偶数的和。 问题代码/*copyright (啊哈C语言), 学习C *All rights reserved. *文件名称:myfirstc. *作者&#xff1a;JohnLu *完成日期&#xff1a;2020年3月17日 *版本号V1.0 * *问题描述&#xff1a;求1~100所有偶数的和。 …

12道c语言的课后习题!

1、计算n的阶乘&#xff08;1*2*3*4*5 n是个数&#xff0c;比如说乘到100&#xff1f;&#xff09; // 计算n的阶乘#include"stdio.h"int main() {int n 0;scanf("%d", &n);int i 0;int ret 1;for (i 1; i < n; i) {ret * i;}printf("…

TeeChart在VS2005,VS2008的入门教程

最近项目上要用到TeeChart来绘图&#xff0c;网络上关于TeeChart的资料很多&#xff0c;但是感觉很多都讲不到点上&#xff0c;很多入门过程中碰到的细节问题还是要自己探索。我把这两天的学到的记下来&#xff0c;也与大家分享。 环境&#xff1a;VS2005,VS2008 TeeChart版本:…

怎么用VS2008?

请问各位怎么用VS2008&#xff0c;为什么总是出错&#xff1f;我是这么做的。

[Win8]如何使用Visual Studio2012进行Windows8项目开发

随着Windows8普通版&#xff0c;专业版和企业版的普及&#xff0c;Windows8的应用开发也逐渐火热起来。 下面简单介绍一下如何使用Visual Studio2012进行Windows8项目的开发。 首先安装Windows8的操作系统&#xff0c;推荐安装32位的Win8&#xff0c;因为64位的容易出现不兼容…

VS2008技巧收集

1&#xff0c;Visual Studio 2008自带的1000多个 Windows 系统使用的各种图标、光标和动画文件在Visual Studio 2008的安装目录下&#xff0c;/Microsoft Visual Studio 9.0/Common7/VS2008ImageLibrary/2052文件夹下面&#xff0c;有一个VS2008ImageLibrary.zip&#xff0c;这…

VS2012使用 MSDN教程

VS2012安装默认只安装Help Viewer,如果想要安装文档的话&#xff0c;需要去官网下载。网址如右:https://www.microsoft.com/zh-CN/download/details.aspx?id34794 一&#xff0c;选择中文版&#xff0c;点击下载&#xff0c;2G。如下图&#xff1a; 下载完成&#xff0c;需要解…