1.Lodop是什么?

Lodop(标音:劳道谱,俗称:露肚皮)是专业WEB控件,用它既可裁剪输出页面内容,又可用程序代码直接实现复杂打印。控件功能强大,却简单易用,所有调用如同JavaScript扩展语句,主要接口函数如下:

●	PRINT_INIT(strPrintTaskName)打印初始化
● SET_PRINT_PAGESIZE(intOrient,intPageWidth,intPageHeight,strPageName)设定纸张大小
参数说明:
intOrient:打印方向及纸张类型
1---纵向打印,固定纸张;
2---横向打印,固定纸张;
3---纵向打印,宽度固定,高度按打印内容的高度自适应(见样例18);
0---方向不定,由操作者自行选择或按打印机缺省设置。
intPageWidth:
纸张宽,单位为0.1mm 譬如该参数值为45,则表示4.5mm,计量精度是0.1mm。
intPageHeight:
固定纸张时该参数是纸张高;高度自适应时该参数是纸张底边的空白高,计量单位与纸张宽一样。
strPageName:
纸张类型名 ● ADD_PRINT_HTM(intTop,intLeft,intWidth,intHeight,strHtml)增加超文本项
● ADD_PRINT_TEXT(intTop,intLeft,intWidth,intHeight,strContent)增加纯文本项
● ADD_PRINT_TABLE(intTop,intLeft,intWidth,intHeight,strHtml)增加表格项
● ADD_PRINT_SHAPE(intShapeType,intTop,intLeft,intWidth,intHeight,intLineStyle,intLineWidth,intColor)画图形
● SET_PRINT_STYLE(strStyleName, varStyleValue)设置对象风格
● PREVIEW打印预览
● PRINT直接打印
● PRINT_SETUP打印维护
● PRINT_DESIGN打印设计

最基本的打印过程至少有初始化语句、添内容语句和打印语句三部分组成,例如:

LODOP.PRINT_INIT("打印任务名");               //首先一个初始化语句
LODOP.ADD_PRINT_TEXT(0,0,100,20,"文本内容一");//然后多个ADD语句及SET语句
LODOP.PRINT(); //最后一个打印(或预览、维护、设计)语句

官网地址C-Lodop的PDF文档打印在线案例

2.在vue项目中如何实现批量打印功能?

1.在index页面中引入js文件

<script language="javascript" src="http://www.c-lodop.com/demolist/LodopFuncs.js"></script>

2.在批量打印时我们得先区分是html标签打印还是pdf打印
// 批量打印lazada国内面单(html标签)
printingClick() {
const tableInfo = this.multipleSelection.map(item => window.decodeURIComponent(escape(window.atob(item.shippingPdfUrl))))
console.log(tableInfo)
LODOP = getLodop()
LODOP.PRINT_INIT('打印')
LODOP.SET_PRINT_PAGESIZE(3, 1000, 1500, '')// 3代表纵向打印,宽度固定,高度按打印内容的高度自适应,纸张10*15
for (let i = 0; i < tableInfo.length; i++) {
this.creatOneRage(tableInfo[i])
}
LODOP.SET_PREVIEW_WINDOW(0, 0, 0, 0, 0, '')
if (LODOP.SET_PRINTER_INDEXA(0)) { LODOP.PRINT() } // 这里实现的是选择打印机,数字代表打印机的型号,如果不需要预览,将LODOP.PREVIEW()改为LODOP.PRINT()
},
creatOneRage(table) {
LODOP.NewPage()
LODOP.ADD_PRINT_IMAGE(12, 12, '95%', '95%', table)
LODOP.SET_PRINT_STYLEA(0, 'Stretch', 2)
},

SET_PRINTER_INDEX(oIndexOrName);按序号或名称指定打印机,选定后禁止手工重选;

SET_PRINTER_INDEXA(IndexorName);按序号或名称指定打印机,选定后允许手工重选;

// 批量打印pdf文件
// 批量打印pdf文件
printingShopee() {
const strURL = ['QzpcVXNlcnNcYWRtaW5cRG93bmxvYWRzXDE5MDkxOTA1MzU0S0QzRy5wZGY=', 'QzpcVXNlcnNcYWRtaW5cRG93bmxvYWRzXDE5MTAyMzIwMjUxQVdUSCAoMSkucGRm']// 线上地址有跨越问题,本地路径模拟打印,路径不能直接识别,所以先加密了
const strURLorContent = strURL.map(item => window.atob(item))
LODOP = getLodop()
LODOP.PRINT_INIT('打印')
LODOP.SET_PRINT_PAGESIZE(3, 1000, 1500, '')
for (let j = 0; j < strURLorContent.length; j++) {
this.creatPdfRage(strURLorContent[j])
}
LODOP.SET_PREVIEW_WINDOW(0, 0, 0, 0, 0, '')
if (LODOP.SET_PRINTER_INDEXA(1)) { LODOP.PREVIEW() } //上面的例子选择的打印机序号为0,这里为1,上面的直接打印,这里的是预览,可以根据需求选择
LODOP.PREVIEW()
},
creatPdfRage(pdf) {
LODOP.NewPage()
LODOP.ADD_PRINT_PDF(0, 0, '100%', '100%', pdf)
},
3.部分面单信息返回的html标签我们需要进行过滤
demo:
一个很长的html标签字符串,我们需要过滤掉`<div class="A4" style="padding-top: 1px;">`标签后面的所有内容:
<script type="text/javascript">
var str = '<style type="text/css">@media print and (max-width: 100000px) { html, bodwidth: 210m } 12313465465413654<div class="A4" style="padding-top: 1px;"><div class="cut-line" style="position:relative;"><img alt="image" src="http://cdn-cloudprint.cainiao.com/waybill-print/cloudprint-imgs/496d988f51f34b0b863a24a529dc8c7e.png" style="height:20px; position:relative; top:-11px;" /><div style="text-align:center; margin-top: 5px;"><img alt="image" src="https://th-live.slatic.net/cms/3PL/ORF5.png" width="90%" /></div></div>'
console.log(str)
var arr = str.split('<div class="A4" style="padding-top: 1px;">')
console.log(arr[0])
</script>

注:打印机的安装,先去打印机官网下对应的驱动,然后在控制面板中添加打印机

能打印PDF的C-Lodop4.0测试版已能下载,下载地址是: http://demo.c-lodop.com:8000/CLodop_Setup4.0(Beta).zip 安装后在欢迎页面末尾找“PDF打印”链接,或输入地址:

http://localhost:8000/c_pdfprint

vue项目中使用Lodop实现批量打印html页面和pdf文件的更多相关文章

  1. vue项目中使用ts(typescript)入门教程

    最近项目需要将原vue项目结合ts的使用进行改造,这个后面应该是中大型项目的发展趋势,看到一篇不错的入门教程,结合它并进行了一点拓展记录之.本文从安装到vue组件编写进行了说明,适合入门. 1.引入T ...

  2. vue项目中导出PDF的两种方式

    参考大家导出的方式,基本上是如下两种: 1.使用 html2Canvas + jsPDF 导出PDF, 这种方式什么都好,就是下载的pdf太模糊了.对要求好的pdf这种方式真是不行啊! 2.调用浏览器 ...

  3. 在vue项目中设置BASE_URL

    在vue项目中设置BASE_URL 1.在config文件夹中新建global.js文件 const BASE_URL = 'http://192.168.1.62:8080/rest/' expor ...

  4. vue项目中使用bpmn-流程图xml文件中节点属性转json结构

    内容概述 本系列“vue项目中使用bpmn-xxxx”分为七篇,均为自己使用过程中用到的实例,手工原创,目前陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意事项,具 ...

  5. vue 项目中实用的小技巧

    # 在Vue 项目中引入Bootstrap 有时在vue项目中会根据需求引入Bootstrap,而Bootstrap又是依赖于jQuery的,在使用npm按照时,可能会出现一系列的错误 1.安装jQu ...

  6. 如何在VUE项目中添加ESLint

    如何在VUE项目中添加ESLint 1. 首先在项目的根目录下 新建 .eslintrc.js文件,其配置规则可以如下:(自己小整理了一份),所有的代码如下: // https://eslint.or ...

  7. 在vue项目中, mock数据

    1. 在根目录下创建 test 目录, 用来存放模拟的 json 数据, 在 test 目录下创建模拟的数据 data.json 文件 2.在build目录下的 dev-server.js的文件作如下 ...

  8. 浅谈 Axios 在 Vue 项目中的使用

    介绍 Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中. 特性 它主要有如下特性: 浏览器端发起XMLHttpRequests请求 Node端发起http ...

  9. 去除vue项目中的#及其ie9兼容性

    一.如何去除vue项目中访问地址的# vue2中在路由配置中添加mode(vue-cli创建的项目在src/router/index.js) export default new Router({ m ...

随机推荐

  1. 关于前端使用JavaScript获取base64图片大小的方法

    base64原理 Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24),之后在6位的前面补两个0,形成8位一个字节的形式. 如果剩下的字符不足3个字节,则用0填充,输出字 ...

  2. Spring Boot中application.properties和application.yml文件

    application.properties和application.yml文件可以放在一下四个位置: 外置,在相对于应用程序运行目录的/congfig子目录里. 外置,在应用程序运行的目录里 内置, ...

  3. Ruby爬虫header发送cookie,nokogiri解析html数据

    之前用php写过一个爬虫,同样是获取局域网的网站数据,这次我使用相同的网络环境,更低的电脑配置,使用ruby来再次爬虫,惊人的发现ruby使用自带的类库net/http爬取速度要远远超过php的cur ...

  4. python 同步与异步的性能区别及实例

    同步与异步的性能区别  1. #coding:utf-8 import gevent def task(pid): """ Some non-deterministic ...

  5. Python如何让字典保持有序

    问题: Python如何让字典保持有序 ? 解决方案: 使用collections.OrderedDict代替Dict. 验证程序: from collections import OrderedDi ...

  6. 以后的IT路还很长(1)

    以后的IT路还很长(1) 最近有两位兄弟同事离职了,蛮可惜了,在一个战壕一起一.两年了,人各有志嘛!希望他们发展更好些! 目前的公司是个创业型的公司,公司从08年的50来个人,扩张到今年11年400多 ...

  7. 用新架构适配MI3中遇到的各种坑

    用新架构适配MI3中遇到的各种坑 首先不得不说hendy架构的强大之处, mi3也直接开机但是遇到各种坑,不能怪架构不够强大,只有说miui定制化太高.下面详细说一下mi3适配中的各种坑.有些坑会附带 ...

  8. (转载)Eclipse中使用SVN

    为了方便个人使用,转载过来的,如需查阅,请前往原文地址:http://www.cnblogs.com/wvqusrtg/p/4993849.html 1.在Eclipse里下载Subclipse插件 ...

  9. C++走向远洋——61(项目一、排序函数模板)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  10. 图形用户界面(GUI)应用程序开发——菜鸟的第一步

    参考资源:贺老师博文 在看完贺老师的博文后,我就照葫芦画瓢的做了个求三角形面积的程序.这是我写的一篇所用时间最长博文(两个多小时,真心挺累,或许是我太笨吧),为了尽可能详细的把步骤写明白我截了二十一张 ...