VUE前端HTML静默打印(不弹出打印对话框)PDF简单方案

前言

在做打印功能的时候,以前大部分客户端都是用C#做的,静默打印(也就是不弹出打印对话框)比较简单。

但是使用浏览器作为客户端,静默打印(也就是不弹出打印对话框)做起来就比较困难。困难的原因是浏览器的各种限制,浏览器并不支持这方面的更改

在现有使用vue开发的项目中,有个比较简单的处理方式就是使用 electron-hiprint

参考地址:https://gitee.com/CcSimple/electron-hiprint#%E4%BD%BF%E7%94%A8-pdf-%E6%89%93%E5%8D%B0%E5%8A%9F%E8%83%BD

也就是本来是浏览器去调用打印控件,现在直接在对应电脑上安装一个程序,然后浏览器去调用该程序。

从
浏览器 -> 打印
改为
浏览器 -> electron-hiprint -> 打印

开始验证

打印有很多种方法,比如vue的html表格等,但是为了验证方便,我直接从后端接口返回一个pdf,改pdf直接打印出来

例如

http://localhost:7000/print/download/TESTPDF.PDF

在这里插入图片描述

  • 测试:使用前端把该地址直接打印出来

安装electron-hiprint 程序

下载地址:
https://gitee.com/CcSimple/electron-hiprint/releases

我使用的是window64位系统,所以安装

在这里插入图片描述

安装后打开,进行配置

只需要简单配置一个参数:

在这里插入图片描述
在这里插入图片描述

TOKEN设备修改为:TEST_PRINT

同时打开电脑获取打印机名称、打印机名称,不填则默认打印机

在这里插入图片描述

KONICA MINOLTA 205i

在VUE 项目中使用 electron-hiprint

使用npm

npm install vue-plugin-hiprint

或使用yarn

yarn add vue-plugin-hiprint

在项目进行使用
注意:具体参数可参考官方文档

在这里插入图片描述

引入依赖

// 全局引入
// main.js
import { hiPrintPlugin } from 'vue-plugin-hiprint'
Vue.use(hiPrintPlugin, '$pluginName')

// 局部引入
import { hiPrintPlugin } from 'vue-plugin-hiprint'

使用依赖


<template>
    <el-button type="primary"  @click="PrintBtnClick">静默打印测试</el-button>
</template>
<script>
    // 局部引入
    import { hiprint } from 'vue-plugin-hiprint'
    export default {
        methods: {
            //指定打印机
            hiprint.hiwebSocket.send({ client:'TEST_PRINT', printer:'KONICA MINOLTA 205i', type: 'url_pdf', pdf_path: 'http://localhost:7000/print/download/TESTPDF.PDF' })
            //使用默认打印机
            hiprint.hiwebSocket.send({ client:'TEST_PRINT', type: 'url_pdf', pdf_path: 'http://localhost:7000/print/download/TESTPDF.PDF' })
        }
    }
</script>


测试,点击页面按钮,则可直接打印

出现的问题

有时候,打印机会报错,说没有指定纸张,这个报错可见 issue
https://mp.weixin.qq.com/s/E-ZfuKLH3-GvKn4AosRvaw

在这里插入图片描述

解决方案,设置打印机首选项

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/799950.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mac Dock栏多屏幕漂移固定的方式

记录一下 我目前的版本是 14.5 多个屏幕&#xff0c;Dock栏切换的方式&#xff1a; 把鼠标移动到屏幕的中间的下方区域&#xff0c;触到边边之后&#xff0c;继续往下移&#xff0c;就能把Dock栏固定到当前屏幕了。

教学原则及方法

直观性原则 启发性原则 循序渐进性原则 巩固性原则 量力性原则 思想性与科学性相统一原则 理论联系实际原则 因材施教原则

【学习笔记】3GPP支持无人机的关键技术以及场景-3GPP TS 22.125技术报告

目录 引言 1 范围 2 引用 3 定义、符号和缩写 4 UAS概述 5 无人机系统&#xff08;UAS&#xff09;远程识别要求 6 无人机使用要求 引言 这份文件是3GPP TS 22.125 V19.2.0&#xff0c;主要定义了3GPP系统对无人飞行器&#xff08;UAV&#xff09;及其系统&#xff08;U…

决策树(ID3,C4.5,C5.0,CART算法)以及条件推理决策树R语言实现

### 10.2.1 ID3算法基本原理 ### mtcars2 <- within(mtcars[,c(cyl,vs,am,gear)], {am <- factor(am, labels c("automatic", "manual"))vs <- factor(vs, labels c("V", "S"))cyl <- ordered(cyl)gear <- ordered…

神经网络替代密度泛函理论!清华研究组发布通用材料模型 DeepH,实现超精准预测

在材料设计中&#xff0c;了解其电子结构与性质是预测材料性能、发现新材料、优化材料性能的关键。过去&#xff0c;业界广泛使用密度泛函理论 (DFT) 来研究材料电子结构和性质&#xff0c;其实质是将电子密度作为分子&#xff08;原子&#xff09;基态中所有信息的载体&#x…

Java基础及进阶

JAVA特性 基础语法 一、Java程序的命令行工具 二、final、finally、finalize 三、继承 class 父类 { //代码 }class 子类 extends 父类 { //代码 }四、Vector、ArrayList、LinkedList 五、原始数据类型和包装类 六、接口和抽象类 JAVA进阶 Java引用队列 Object counter ne…

AutoHotKey自动热键(十一)下载SciTE4AutoHotkey-Plus的中文增强版脚本编辑器

关于AutoHotkey的专用编辑器, SciTE4AutoHotkey是一个免费的基于 SciTE 的 AutoHotkey 脚本编辑器,除了 DBGp 支持, 它还为 AutoHotkey 提供了语法高亮, 调用提示, 参数信息和自动完成, 以及其他拥有的编辑特性和辅助工具.XDebugClient 是一个基于 .NET Framework 2.0 的简单开…

论文翻译:通过云计算对联网多智能体系统进行预测控制

通过云计算对联网多智能体系统进行预测控制 文章目录 通过云计算对联网多智能体系统进行预测控制摘要前言通过云计算实现联网的多智能体控制系统网络化多智能体系统的云预测控制器设计云预测控制系统的稳定性和一致性分析例子结论 摘要 本文研究了基于云计算的网络化多智能体预…

PNPM 高效入门:安装配置一本通

PNPM高效入门&#xff1a;安装配置一本通 引言Pnpm 简介安装 PNPM全局安装&#xff08;推荐&#xff09;使用 nvm&#xff08;Node Version Manager&#xff09; 配置PNPM使用PNPM管理项目初始化项目 添加依赖快速安装所有依赖查看安装的包 优化与故障排除PNPM与持续集成/持续部…

Nest.js 实战 (一):使用过滤器优雅地统一处理响应体

前言 在我们实际的业务开发中&#xff0c;我们可以看到后端接口返回格式都有一定的要求&#xff0c;假如我们统一规定接口的统一返回格式为&#xff1a; {data: any; // 业务数据code: number; // 状态码msg: string; // 响应信息timestamp: number; // 时间戳 }那么在 Nest.…

华为HCIP Datacom H12-821 卷40

1.单选题 下面是台路由器BGP错误输出信息&#xff0c;关于这段信息描述错误的是 <HUAWEI>display bgp error Error Type :Peer Error Date/Time :2010-03-22 12:40:39 Peer Address :10.1.1.5 Error Info : Incorrect remote AS A、可能是由于邻居…

Nginx的反向代理缓存

一 .Nginx的反向代理缓存 #代理缓存路径设置缓存保存的目录 #keys_zone设置共享内存占用的空间大小 #max_size缓存大小 #inactice 超过时间,则缓存自动清理 #use_temp_path 关闭临时目录proxy_cache_path /usr/local/nginx/upsteam_cache key_zone=mycache:5m max_size=…

HarmonyOS 屏幕适配设计

1. armonyOS 屏幕适配设计 1.1. 像素单位 &#xff08;1&#xff09;px (Pixels)   px代表屏幕上的像素点&#xff0c;是手机屏幕分辨率的单位&#xff0c;即屏幕物理像素单位。 &#xff08;2&#xff09;vp (Viewport Percentage)   vp是视口百分比单位&#xff0c;基于…

基于单片机的智能医疗监护系统设计

1.简介 随着社会的发展&#xff0c;智能化电子设备成为了人们生活中不可或缺的一部分&#xff0c;尤其是在人们对于身心健康更加注重的今天&#xff0c;智能医疗监护系统应运而生。本套电子监护设备集体温测量、心电采集、心率监测、血氧监测于一体&#xff0c;带有语音播报模块…

图——图的应用01最小生成树(Prim算法与Kruskal算法详解)

这篇文章就来讲一下图的最后的应用章节中的最小生成树&#xff0c;包括Prim算法与Kruskal算法两大部分&#xff0c;在实际问题当中应用很广。在对于前面的内容熟悉的情况下再学习本章比较好哦&#xff0c;图的基本概念&#xff0c;存储结构以及图的遍历。大家可以通过下面的链接…

iPhone数据恢复:如何从iPhone恢复误删除的短信

来自iPhone的意外删除的短信可能很关键。它们可能是来自您常用应用程序、银行交易、付款收据的重要通知&#xff0c;也可能是来自朋友的重要文本、孩子的学校通知等。 如果您也从iPhone丢失了此类消息&#xff0c;我们在这里分享如何在没有备份以及有备份的情况下在iPhone上恢…

JVM和类加载机制-01[JVM底层架构和JVM调优]

JVM底层 Java虚拟机内存模型JVM组成部分五大内存区域各自的作用虚拟机栈(线程栈)栈帧内存区域 本地方法栈程序计数器为什么jvm要设计程序计数器&#xff1f; 堆方法区 JVM优化-堆详解JVM底层垃圾回收机制jvm调优工具jvisualvm.exeArthas工具使用 Java虚拟机内存模型 JVM跨平台原…

go Sync.Pool

sync 包提供了一个强大且可复用的实例池&#xff0c;以减少 GC 压力。在使用该包之前&#xff0c;我们需要在使用池之前和之后对应用程序进行基准测试。这非常重要&#xff0c;因为如果不了解它内部的工作原理&#xff0c;可能会影响性能。 池的限制 type Small struct {a in…

dhtmlx-gantt甘特图数据展示

官网文档&#xff1a;甘特图文档 实现效果&#xff1a; 首先需要下载 dhtmlx-gantt组件 npm i dhtmlx-gantt //我项目中使用的是"dhtmlx-gantt": "^8.0.6" 这个版本&#xff0c;不同的版本api或是文档中存在的方法稍有差异 界面引用 <template>&l…

iOS ------ 类 父类 元类的总结

一&#xff0c;类的定义 类在OC中其实是指向objc_class的结构体指针&#xff0c;结构体构造我 typedef struct objc_class *Class; struct objc_class { Class isa; Class super_class; const char *name; long version; long info; long instance_size; struct obj…