vue-plugin-hiprint使用教程【1】

前言:
1、本文档适合新手
2、文档仅限于基本的使用,更深的高级应用请查阅相关资料
3、文档编写时相应功能都有测试过
4、教程文字代码有点多,CSDN无法一篇文章发布,所以拆分成若干篇
5、默默吐槽一句:CSDN无法承载太大的篇幅。所以我把教程导出为markdown文件,有需要的各位自行下载。
https://cloud.189.cn/t/FviyyijY3uyu (访问码:2gvs)

*、编写教程时的一些环境

// 编写教程时的软件环境
node:12.22.12
@vue/cli: 5.0.8
vue:3.2.36
// 参考资料
在线演示:https://ccsimple.gitee.io/vue-plugin-hiprint/
微信文档:https://mp.weixin.qq.com/mp/appmsgalbum?__biz=MzUyMzg5NDU0Mg==&action=getalbum&album_id=2779135389855956995&scene=173&subscene=&sessionid=svr_95b1d3bfd09&enterid=1703059529&from_msgid=2247484532&from_itemidx=1&count=3&nolastread=1#wechat_redirect
gitee地址:https://gitee.com/CcSimple/vue-plugin-hiprint#vuevue3-%E5%85%A8%E5%B1%80%E5%BC%95%E5%85%A5

1、安装

// 编写此文档时版本为:0.0.56
npm install vue-plugin-hiprint

2、移植print-lock.css。

1、 安装完之后,从目录node_modules/vue-plugin-hiprint/dist下将print-lock.css复制一份
2、 将复制的css文件放在index.html同级目录下。文件名称建议不要更改,保持默认:print-lock.css
3、在index中引入第二步创建的文件

3、编写基本界面和实现基本打印功能

这里仅介绍最基本的一些功能,其余功能看官方文档:

https://mp.weixin.qq.com/s?__biz=MzUyMzg5NDU0Mg==&mid=2247484604&idx=1&sn=a26f606cea93307fb533af45558c1b65&chksm=fa34eeddcd4367cbb7b28fed888d735cd6b9b26e79c2cb460021896f5c6ece2dc1ca0c5ea581&cur_album_id=2779135389654630403&scene=189#wechat_redirect

3.1、创建拖拽区域

<!--基本代码 class必须加上ep-draggable-item,用于后续ts代码识别;tid是唯一编码。其中defaultModule开头的为默认的拖拽元素--->
<template><div class="component" ref="componentRef"><el-row><el-col :span="6"><div class="ep-draggable-item" tid="defaultModule.barcode">条形码</div><div class="ep-draggable-item" tid="defaultModule.text">文本</div></el-col></el-row></div>
</template>
<script lang="ts" setup>
//@ts-ignore
import { hiprint, defaultElementTypeProvider } from "vue-plugin-hiprint";
import {onMounted, ref} from "vue";
const componentRef = ref();
const fullHeight = ref();
hiprint.init({providers: [defaultElementTypeProvider()], // 声明拖拽元素,否则无法正确识别HTML里编写的拖拽元素
});
onMounted(() => {buildLeftElement();// 需要再onMounted里调用,防止带有ep-draggable-item的HTML元素还未渲染完成
});
const buildLeftElement = () => {// @ts-ignorehiprint.PrintElementTypeManager.buildByHtml($(".ep-draggable-item"));// 这里就是上面的class。
};
</script>
// 完整demo代码
<template><div class="component" ref="componentRef"><el-row><el-col :span="6"><div class="ep-draggable-item" tid="defaultModule.barcode">条形码</div><div class="ep-draggable-item" tid="defaultModule.text">文本</div></el-col></el-row></div>
</template>
<script lang="ts" setup>
//@ts-ignore
import { hiprint, defaultElementTypeProvider } from "vue-plugin-hiprint";
import {onMounted, ref} from "vue";const componentRef = ref();
const fullHeight = ref();hiprint.init({providers: [defaultElementTypeProvider()],
});
onMounted(() => {buildLeftElement();
});
const buildLeftElement = () => {// @ts-ignorehiprint.PrintElementTypeManager.buildByHtml($(".ep-draggable-item"));
};</script>
<style scoped lang="scss"></style>

3.2、编写设计区域(包括画布区域以及配置区域)

下面的代码已经完成了最基础的拖拽设计和属性配置

<!--完整代码-->
<template><div class="component" ref="componentRef"><el-row><el-col :span="6"><!-- 拖拽区域 --><div class="ep-draggable-item" tid="defaultModule.barcode">条形码</div><div class="ep-draggable-item" tid="defaultModule.text">文本</div></el-col><el-col :span="12" :style="'border: 1px solid #f0f0f0; padding: 20px;max-height: '+fullHeight+'px;overflow: auto;'" ><!-- 画布区域 --><div id="design-content"></div></el-col><el-col :span="6"><!-- 设计元素属性配置区域 --><div id="design-element-option-set"></div></el-col></el-row></div>
</template>
<script lang="ts" setup>
//@ts-ignore
import { hiprint, defaultElementTypeProvider } from "vue-plugin-hiprint";
import {onMounted, ref} from "vue";const componentRef = ref();
const fullHeight = ref();let  _printDesignObj:any; // 无需响应式声明hiprint.init({providers: [defaultElementTypeProvider()],
});
onMounted(() => {fullHeight.value = componentRef.value.clientHeight;buildLeftElement(); // 构建拖拽元素buildDesigner(); // 构建画布和属性
});
const buildLeftElement = () => {// @ts-ignorehiprint.PrintElementTypeManager.buildByHtml($(".ep-draggable-item"));
};
const buildDesigner = () => {$("#hiprint-printTemplate").empty();_printDesignObj = new hiprint.PrintTemplate({settingContainer: "#design-element-option-set", // 设计元素属性配置区域});_printDesignObj.design("#design-content"); // 画布区域
}</script>
<style scoped lang="scss"></style>

3.3、尝试打印

// 在HTML中增加一个button,并将@click指向print事件
// 操作逻辑如下:从拖拽区域拖拽文本到设计区域,点击设计区域的文本元素,在右侧属性区域:基本选项卡下,将字段名称改成print函数中的name。然后click一下button,就可以看到效果function print() {// 打印数据,key 对应 元素的 字段名let printData = {name:'CcSimple'};
// 参数: 打印时设置 左偏移量,上偏移量let options = {leftOffset:-1,topOffset:-1}
// 扩展let ext = {callback: () => {console.log('浏览器打印窗口已打开')},styleHandler: () => {// 重写 文本 打印样式return'<style>.hiprint-printElement-text{color:red !important;}</style>'}}
// 调用浏览器打印_printDesignObj.print(printData,options,ext);
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[即将举行的网络研讨会]对Kubernetes进行故障排除:您需要具备的7个关键组件

如果您没有听说过&#xff0c;那么容器正在吞噬整个世界。 这种转变正在改变我们在开发&#xff0c;交付和维护应用程序方面所知的一切&#xff0c;尤其是在解决错误方面。 有这么多动人的东西&#xff0c;让您难以发现潜伏在基于Kubernetes的应用程序中的关键问题。 传统的故…

php能打开.shp文件吗,shp文件是什么格式的

shape文件由ESRI开发&#xff0c;一个ESRI的shape文件包括一个主文件&#xff0c;一个索引文件&#xff0c;和一个dBASE表。其中主文件的后缀就是【.shp】。本文操作环境&#xff1a;Windows7系统&#xff0c;Dell G3电脑。shape文件由ESRI开发&#xff0c;一个ESRI(Environmen…

python输入的方式有几种_Python读取键盘输入的2种方法

Python提供了两个内置函数从标准输入读入一行文本&#xff0c;默认的标准输入是键盘。如下&#xff1a; 1.raw_input 2.input raw_input函数 raw_input() 函数从标准输入读取一个行&#xff0c;并返回一个字符串&#xff08;去掉结尾的换行符&#xff09;&#xff1a; str raw…

matlab优化 带参数设置,优化选项参考 - MATLAB Simulink - MathWorks 中国

AbsoluteGapTolerance非负实数。如果内部计算的目标函数的上界 (U) 和下界 (L) 之间的差小于或等于 AbsoluteGapTolerance&#xff0c;则 intlinprog 停止&#xff1a;U – L <AbsoluteGapTolerance。AbsoluteMaxObjectiveCountF(x) 的数量&#xff0c;用于最小化最差情形绝…

python自动化运维快速入门pdf下载_Python自动化运维快速入门

领取成功 您已领取成功&#xff01; 您可以进入Android/iOS/Kindle平台的多看阅读客户端&#xff0c;刷新个人中心的已购列表&#xff0c;即可下载图书&#xff0c;享受精品阅读时光啦&#xff01; - | 回复不要太快哦~ 回复内容不能为空哦 回复已提交审核... 快登录帐号来一起…

成为Java流大师–第5部分:将联接的数据库表转换为流

是否可以将联接的数据库表转换为Java Stream&#xff1f; 答案是肯定的。 既然我们已经多次提出这个问题&#xff0c;我们决定写另一篇动手实验文章&#xff0c;解释如何执行更高级的Stream Joins。 因此&#xff0c;这里是第六篇中的第五篇&#xff0c;后面还有一个GitHub存储…

mysql数据库java链接,java链接MySQL数据库方法

第一步&#xff1a;安装MySQL这步我就很少说了&#xff0c;点击去看看怎么安装吧。html第二步&#xff1a;建立数据库安装好以后&#xff0c;咱们来建立一个数据库&#xff0c;一个表。(代码以下)。//建立数据库 test&#xff1b;//在数据库中建立表 user//插入一条数据create …

python运维工程师招聘_【python自动化运维工程师工资】图灵学院2020年python自动化运维工程师工资待遇-看准网...

职位描述 招聘要求&#xff1a; 至少满足下面三个招聘方向中的一条。 招聘主要方向&#xff1a; 一.python web高级讲师 职位要求&#xff1a; 1.精通Python,具有python web开发经验&#xff0c;有参与多个完整的项目生命周期的经历 2.熟悉web开发流程&#xff0c;熟悉 python网…

matlab虚线分格线,虚线实线网格线……一分钟看懂路面标志线,不再被扣分!

黄色实线黄色实线用来区分不同方向的车道&#xff0c;一般画在马路正中间&#xff0c;车道多的路面上就是双黄线&#xff0c;车道少的路面上则用单黄线。而无论单黄线还是双黄线&#xff0c;均严格禁止车辆跨越&#xff0c;因此压线行驶、超车或者掉头等都是不允许的。黄色虚线…

python 判断列表为空_Python 判断列表为空

原博文 2020-06-05 12:38 − https://mp.weixin.qq.com/s?__bizMzU2MDQwOTU0MA&mid2247483845&idx1&sndaf1d3661b4e6b6a15dbe40c7f9c0e14&chksmfc093f6ecb7eb678c22e3... 相关推荐 2019-09-28 21:13 − Python python是一种跨平台的计算机程序设计语言&#x…

PHP怎么检查登录和退出,如何检查用户是否以PHP登录?

登录不是太复杂&#xff0c;但有一些具体的部分&#xff0c;几乎所有的登录进程都需要。首先&#xff0c;请确保在需要了解登录状态的所有页面上启用会话变量&#xff0c;方法是将其放在这些页面的开头&#xff1a;session_start();接下来&#xff0c;当用户通过登录表单提交用…

花痴流口水颜文字_流口水可执行模型

花痴流口水颜文字可执行模型是对引擎处理的Drools最低级别模型的重新设计。 在当前的系列&#xff08;最多6.x&#xff09;中&#xff0c;可执行模型在过去的8年中有机地增长了&#xff0c;从未真正成为最终用户的目标。 建议那些希望以编程方式编写规则的人通过代码生成和目标…

clodeblocks debug断点调试_idea debug调试————简单常用,适合初学者

背景&#xff1a;在现在的开发中&#xff0c;如果不会debug&#xff0c;那么将会给我们的开发带来很大的困扰&#xff0c;如果仅仅是依靠日志信息去查问题&#xff0c;将会大大增加我们解决问题的难度&#xff0c;下面说一下idea开发工具下的简单debug。适用人群&#xff1a;ja…

php如何解决脏读,php 技术沉淀

一、cgi/fast-cgi/php-fpm1. cgicgi&#xff0c;通用网关协议&#xff0c;它在职责、通信方式、实现要求和安全性上&#xff0c;对 server 和 cgi 程序进行了规范&#xff0c;使得很多语言能在满足 cgi 协议的前提下&#xff0c;和 server 分工合作&#xff0c;实现 web 开发。…

bigdecimal判断等于0_vue2.0源码用到的工具函数,12个简易的复用函数,看看有多简单...

戎马&#xff1a;https://segmentfault.com/a/11900000196796381. 创建一个被冻结的空对象export const emptyObject Object.freeze({ }) 一旦创建不能给这个对象添加任何属性。2. 判断是否是 undefined 或 nullfunction isUndef (v) { return v undefined || v null}在源码…

告诉我们您想要什么,我们将做到:消费者驱动的合同测试消息传递

相当早以前&#xff0c;我们从REST&#xff08;ful&#xff09; Web API的角度讨论了消费者驱动的合同测试 &#xff0c;尤其是将其投射到Java&#xff08; JAX-RS 2.0规范&#xff09;的角度。 可以公平地说&#xff0c;至少在公共API方面&#xff0c; REST仍在Web API领域占据…

宝塔面板php降级,宝塔面板6.8.8降级到5.9.1的方案教程

有朋友问起&#xff0c;6.8版本用的不习惯&#xff0c;而且缺少5.9版本的nginx过滤器&#xff0c;而且6.8版本许多功能阉割的厉害&#xff1a;服务器状态中的 连接管理、进程管理 也都被阉割&#xff0c;5.9版本是可以在面板中查看服务器进程管理的&#xff0c;如图&#xff1a…

c++矩阵连乘的动态规划算法并输出_「Javascript算法设计」× 动态规划与回溯算法...

目录&#xff1a;分而治之算法动态规划回溯算法分而治之算法分而治之算法是算法设计的一种方式&#xff0c;它将一个问题分成多个和原问题相似的小问题&#xff0c;递归解决小问题&#xff0c;再将解决方式合并以解决原来的问题&#xff08;例如快速排序&#xff0c;二分搜索等…

背包问题九讲_背包问题

背包问题九讲我发现背包问题既棘手又有趣。 我敢肯定&#xff0c;如果您正在访问此页面&#xff0c;您已经知道了问题说明&#xff0c;但是只是为了完成本章&#xff1a; 问题&#xff1a; 给定一个最大容量为W和N的背包&#xff0c;每个背包都有自己的值和重量&#xff0c;将…

随机森林的特征 是放回抽样么_机器学习超详细实践攻略(10):随机森林算法详解及小白都能看懂的调参指南...

一、什么是随机森林前面我们已经介绍了决策树的基本原理和使用。但是决策树有一个很大的缺陷&#xff1a;因为决策树会非常细致地划分样本&#xff0c;如果决策树分得太多细致&#xff0c;会导致其在训练集上出现过拟合&#xff0c;而如果决策树粗略地划分样本&#xff0c;又不…