在前端使用浏览器调用其电脑连接的打印机进行打印操作,通常情况下我们可以使用原生的js方式,也可以使用插件的方式。
原生打印在实际开发中不太推荐,毕竟这个东西是一个比较大的功能,自己根据内容与原理开发出来的东西不仅要花时间,而且还有可能不稳定。但了解原生打印确实是非常有必要的。
原生打印方法:window.print()
参考文章:
1、https://blog.csdn.net/yongchao940/article/details/73129425
2、https://blog.csdn.net/wdf521121/article/details/84935256
vue-print-nb:https://github.com/Power-kxLee/vue-print-nb
参考文章:https://www.cnblogs.com/steamed-twisted-roll/p/10683680.html
vue print.js:https://github.com/xyl66/vuePlugs_printjs
参考文章:https://www.jb51.net/article/181966.htm
Print.js:https://github.com/crabbly/Print.js
参考文章:https://blog.csdn.net/wwjoyous/article/details/80881881
这个需要先行引入jquery
jQuery.print:https://github.com/DoersGuild/jQuery.print
总结:在目前的vue开发的市场上,我们通常使用的是一些插件来对内容进行打印操作,而原生的打印功能一般是不会直接拿来用的,毕竟在线上可能会出现各种问题,而插件的话问题要少的多。因此上面几款则是当前vue开发中打印这个功能用的比较多的插件。
究其使用方式其实都是给一个div盒子带上一个id或者ref标志,然后拿到其中的内容,执行打印方法即可。
相比之下我自己更喜欢用第二或第三款,因为是自己去其github上下载一个js文件引入使用,好处就是可以自己随意的修改完善这个打印的js以适用于当前的开发内容。
第二款和第三款的差别在于第三款的配置参数多好多,可以进行更复杂的操作。
第一款和第四款都是十分简单的,如果不熟悉js打印或者打印内容很简单直接用第一款或者第四款即可。
推荐:有选择恐惧症的人来看,简单功能直接用第一款,复杂功能直接用第三款,自由点的功能直接用第二款。如果项目引入了jq则直接第四款。用起来都很简单。
使用的打印插件都有一个共同点,那就是选中打印的div标签内容,通常是一个id或者ref所包含的内容。
建议:在vue中所需要打印的内容通通都放置在一个对应组件中,然后用css样式或者其他内容修饰完毕后在调用打印的方法。
由于我当前项目引入了jq因此我当前用的第四款打印功能。
打印组件如下:
打印分页需要注意的第一个要素:
这个里面#print-component-main的高度是100%,因此其内容将会占据满一页,而.print-item的高度也是100%,当print-item有两个的时候,其总高度则是200%,此时内容会进行溢出到第二页,此时就会出现两页内容,这样就产生了分页的效果。而且不会有任何的穿页的情况。
注意事项:
打印#print-component-main高度的100%指的是相对纸张来的100%。即打印预览中的纸张尺寸
如果不知道纸张尺寸则可以从
查看如下:不同的打印机会有不同的选择内容,因此注意打印的纸张选择问题
打印机1号首选项
打印机2号首选项
如果没有满足需求的打印机纸张尺寸,也可以自己创建。(这个需要打印机的权限开启才行!)
选好了尺寸了那么我们就差不多已经了解了打印分页的一大半了。
另一个重要的内容就是要知道打印纸张的尺寸单位是毫米,而我们开发中所使用的单位则是px,但是px与mm确是无法进行换算的。因此我们要注意一页中的内容不能大于当前页面的总高度。
例如:
我要打印一个表格,这个表格数据有二十几行,其内容占据了两页,因此我们要控制行高,如果不控制住则会出现截断的情况。
解决方式1:行高使用百分比:即.print-item下面在加上一个外框.print-item-box 类,这个类的高度则是百分比,即一页放x条数据,则此类高度为(100 / x )%
解决方式2:高度也可以使用固定的px来设置,而这时却需要多次进行测试,检测一页可以放置多少条数据。只需要保证 数据量 n * 高度px < 100%页面高度即可。不然会出现截断,当然这样也可能造成一些问题,那就是最底下可能会优点空白。
打印的横纵其实就是纸张竖直放置和横向放置的区别
其中边距、缩放、页眉页脚、背景图形通常都是不会使用的,默认即可。(因为需要打印的内容完全可以在html中写好并且用css修饰好,因此没太大必要使用这些选项。)
如果有需要请知道其作用之后在使用,如果有预览效果,选择之后会直接产生效果。
打印的样式要严格的使用#id包裹起来,并且将样式放置为全局样式。这样就不会有影响,且打印会生效。
html2canvas是一个将Html+css的dom页面转换成图片的插件,然后使用打印插件对这个图片进行打印即可。
参考文章:
1、https://blog.csdn.net/qq_33183456/article/details/105220911
2、https://segmentfault.com/a/1190000020475766
转成图片在打印的好处在于处理一些需要对打印进行配置的内容处理更加的容易。而且转成图片可以避免一些打印相关的样式以及排布格式问题。通常情况下网页的打印就能够满足大部分要求了。网页打印的需求不够了才使用这个试试。
原网址: 访问
创建于: 2023-08-09 19:02:21
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论