C-LODOP打印插件使用
程序员文章站
2022-06-14 08:09:59
...
事例为vue中使用
安装
安装c-lodop插件CLodop_Setup_for_Win32NT.exe
和 打印机对应驱动
下载引入CLodopfuncs.js
至目录
下载地址
编写LodopFuncs.js
用于加载clodop,
用于打印前判断c-lodop是否安装和加载
注意: 依赖 CLodopfuncs.js
,CLodop_Setup_for_Win32NT.exe
注意下面代码中的引入路径, 具体按照实际情况修改
var CLodopJsState;
//====加载C-Lodop的过程(用script元素动态引用主文件CLodopfuncs.js)====
function loadCLodop() {
if (CLodopJsState == "loading" || CLodopJsState == "complete") return;
CLodopJsState = "loading";
var head =
document.head ||
document.getElementsByTagName("head")[0] ||
document.documentElement;
var JS1 = document.createElement("script");
var JS2 = document.createElement("script");
var JS3 = document.createElement("script");
//优先调用本地(Localhost)8000端口服务:
JS1.src = "http://localhost:8000/CLodopfuncs.js?priority=2";
//如果失败,则调用本地18000端口:
JS2.src = "http://localhost:18000/CLodopfuncs.js?priority=1";
//最后如本地无C-Lodop时,则演示通过本服务远程打印:
JS3.src = "/CLodopfuncs.js"; //---------------------此处为本地依赖的CLodopfuncs.js
JS1.onload = JS2.onload = JS3.onload = function() {
CLodopJsState = "complete";
};
JS1.onerror = JS2.onerror = JS3.onerror = function(evt) {
CLodopJsState = "complete";
};
head.insertBefore(JS1, head.firstChild);
head.insertBefore(JS2, head.firstChild);
// head.insertBefore(JS3, head.firstChild);
}
//本例演示所有浏览器都调用C-Lodop:
function needCLodop() {
return true;
}
//执行加载:
if (needCLodop()) {
loadCLodop();
}
//====获取LODOP对象的主过程:====
function getLodop(oOBJECT, oEMBED) {
var LODOP;
try {
try {
LODOP = getCLodop(); //获得主对象(getCLodop是在CLodopfuncs.js定义的)
if (!LODOP && CLodopJsState !== "complete") {
if (CLodopJsState == "loading") {
alert("网页还没下载完毕,请稍等一下再操作");
return;
}
}
} catch (err) {
alert(
"您还未安装打印控件,点击确定下载打印控件,安装成功后刷新页面即可进行打印"
);
loadLodop()
}
//清理旧例子的object或embed元素(避免乱提示干扰理解):
if (oEMBED && oEMBED.parentNode) oEMBED.parentNode.removeChild(oEMBED);
if (oOBJECT && oOBJECT.parentNode) oOBJECT.parentNode.removeChild(oOBJECT);
return LODOP;
} catch (err) {
alert("getLodop出错:" + err);
}
}
// 下载loadLodop
function loadLodop() {
window.open("../../static/CLodop_Setup_for_Win32NT.exe"); //---------------------此处为本地依赖的CLodop安装插件
}
export { getLodop }; //导出getLodop
挂载clodop打印插件,暴露$lodop
, (此处为vue中的使用,具体视情况省略)
import { getLodop } from "@/utils/LodopFuncs";
Vue.prototype.$lodop = getLodop
使用
例: 打印如下 表格内容
<!-- 不需要scoped属性, 保证打印样式-->
<style lang="css">
.tablebox{
color: green;
background: black
}
</style>
<template>
<div id="printctx">
<table class="tablebox">
<tbody>
<tr>
<td>姓名</td> <td>年龄</td> <td>血型</td> <td>收费项</td>
</tr>
</tbody>
</table>
</div>
</template>
this.$nextTick
为vue中DOM异步更新之后的操作, 具体看情况而定, 可省略;
- 思路: 手下获取
id = printctx
的html, 获取并拷贝一份当前样式字符串, 通过传入LODOP.ADD_PRINT_HTM
函数中生成打印区域 - 注意点: 例子中打印为
id = printctx
的区域, 这时编写样式的style
标签, 不能加上scoped
属性, 否则打印样式丢失
this.$nextTick(()=>{
var styleStr = Array.prototype.slice
.call(document.querySelectorAll("style,link"))
.reduce((a, i) => {
a += i.outerHTML;
return a;
}, "");
var htmlStr = document.getElementById("printctx").outerHTML;
var strHTML = styleStr + htmlStr;
console.log(strHTML);
var LODOP = this.$lodop();
// console.log(strHTML)
LODOP.PRINT_INIT("订单"); //打印初始化
LODOP.SET_PRINTER_INDEX(0);
//LODOP.SET_PRINT_STYLE("FontSize", 12); //设置对象风格
// LODOP.SET_PRINT_STYLE("Bold", 1); 设置对象风格
LODOP.SET_PRINT_PAGESIZE(0, "25cm", "14cm", ""); //设定纸张大小
LODOP.SET_PRINT_MODE("PRINT_PAGE_PERCENT", "80%"); //设置缩放
// LODOP.SET_PREVIEW_WINDOW(2, 2, 0, 0, 0, '')//设置窗口
LODOP.ADD_PRINT_HTM("1cm", "1cm", "24cm", "14cm", strHTML);
LODOP.PREVIEW();
})
打印参考
推荐阅读
-
百度浏览器快递查询插件使用教程图文详解
-
Angular中使用better-scroll插件的方法
-
Kotlin之在Gradle中无参(no-arg)编译器插件的使用详解
-
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
-
jQuery文件上传插件Uploadify使用指南
-
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
-
AE怎么使用Keylight插件更换视频背景?
-
win7系统使用打印机提示操作无法完成错误代码0x000006ba解决方法
-
使用Python编写vim插件的简单示例
-
jQuery插件jQuery-JSONP开发ajax调用使用注意事项