失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 基于http请求web打印组件 实现浏览器 移动端 服务端无预览打印

基于http请求web打印组件 实现浏览器 移动端 服务端无预览打印

时间:2020-06-04 22:08:00

相关推荐

基于http请求web打印组件 实现浏览器 移动端 服务端无预览打印

打印功能在项目开发中比较常用,尤其是工业级应用十分广泛,且无预览打印,而因浏览器安全机制,无法直接实现无预览打印,根据项目需求,做了一个打印的插件,可以实现无预览打印,且模板调整十分便捷

环境:Bartender 、visual studio

设计思路:启动一个应用,对外暴露接口,将数据通过参数方式接收,调用Bartender 工具进行驱动打印

优点:打印通过发送http请求方式,实现了无客户端限制,只要能发送http请求即可打印,打印无预览,直接驱动打印机

缺点:Bartender 不是一个免费软件

1.Bartender 使用

1.创建文件之后,双击即可修改纸张大小,将纸张大小设置为对应大小即可

2.双击文本即可制定文字的数据来源,由于数据为动态数据,将数据源设置为数据库字段

3.点击数据库设置,添加一个数据源,设置为文本格式

4.点击下一步,可以新建一个txt文件,然后里面添加一个一些数组,通过TAB键分隔,这样Bartender 会通过TAB键进行字段拆分,而我们实现动态数据源原理就是,将这个TXT文件里面的值替换掉就好了

5.点击下一步,选择通过TAB返回

6.指定域可以了,Bartender 会根据指定的txt文件TAB进行拆分出域

7.若使用二维码直接将条形的类型切换成QR code即可

2.创建应用

1.controller中接收参数

// Get api/values/batchpublic HttpResponseMessage Get(string strjson){List< Material> material =JsonConvert.DeserializeObject<List<Material>>(strjson);Material[] materials = material.ToArray();Result result = new Result();JavaScriptSerializer serializer = new JavaScriptSerializer();string str = serializer.Serialize(result);HttpResponseMessage resultMessage = new HttpResponseMessage {Content = new StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json") };//调用Printer.PrintSerialNumber(materials);return resultMessage;}

2.打印数据配置

using Com.Estsh.MES.App;using pcp_print.Models;using System;using System.Collections.Generic;using System.Data;using System.IO;using System.Linq;using System.Text;using System.Web;namespace pcp_print.utils{public class Printer{private static string BarTenderPath =//指定bartend.exe文件bine(AppDomain.CurrentDomain.BaseDirectory, @"App_Data\Bartend\bartend.exe");//指定模板文件对应的数据文件private static string LabelPath =bine(AppDomain.CurrentDomain.BaseDirectory, @"App_Data\LabelFile");private static object _lock_print_object = new object();private const char TAB = '\t';private const string NEW_LINE = "\r\n";public static bool PrintSerialNumber(string materialNumber, string materialName, string serialNumber, string labelFileName, string dataFileName){string LabelTemplatePath = bine(LabelPath, labelFileName);string LabelTextPath = bine(LabelPath, dataFileName);//将数据文件写入txt文件中,每写一个,追加一个TABStringBuilder PrintContent = new StringBuilder();PrintContent.Append(materialNumber); PrintContent.Append(TAB);PrintContent.Append(materialName); PrintContent.Append(TAB);PrintContent.Append(serialNumber); PrintContent.Append(TAB);lock (_lock_print_object){BarTenderPrinter.WriteFile(LabelTextPath, null, Encoding.UTF8, false);BarTenderPrinter.WriteFile(LabelTextPath, PrintContent.ToString(), Encoding.UTF8, false);//驱动打印BarTenderPrinter.Print(BarTenderPath, LabelTemplatePath);}return true;}}}

3.运行项目,直接浏览器访问地址即可访问

PS(Bartender 配置好之后请先测试测试一下数据文件是否正确,若是因为数据文件异常,Bartender 并不会抛出异常)

所需要的dll依赖已经放在项目中了,直接下载即可使用,集成了一个阉割版的Bartender ,缺点是模板文件无法创建,只能复制,指定TXT数据源的时候,只能输入文件地址,无法进行选择

链接:/s/1lUvHxPakYtiCuRzOTyedCA

提取码:0e38

使用此方式需要熟悉.net开发后台应用,Bartender 的使用不清楚的可以在网上搜一下,亲测有效,欢迎留言探讨

如果觉得《基于http请求web打印组件 实现浏览器 移动端 服务端无预览打印》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。