基于http请求web打印组件,实现浏览器、移动端、服务端无预览打印
打印功能在项目开发中比较常用,尤其是工业级应用十分广泛,且无预览打印,而因浏览器安全机制,无法直接实现无预览打印,根据项目需求,做了一个打印的插件,可以实现无预览打印,且模板调整十分便捷
环境:Bartender 、visual studio2017
设计思路:启动一个ASP.NET应用,对外暴露接口,将数据通过参数方式接收,调用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.创建asp.net应用
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文件Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"App_Data\Bartend\bartend.exe");//指定模板文件对应的数据文件private static string LabelPath =Path.Combine(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 = Path.Combine(LabelPath, labelFileName);string LabelTextPath = Path.Combine(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数据源的时候,只能输入文件地址,无法进行选择
链接:https://pan.baidu.com/s/1lUvHxPakYtiCuRzOTyedCA
提取码:0e38
使用此方式需要熟悉.net开发后台应用,Bartender 的使用不清楚的可以在网上搜一下,亲测有效,欢迎留言探讨
基于http请求web打印组件,实现浏览器、移动端、服务端无预览打印相关推荐
- jeecg实现无预览打印
jatoolprint官网地址:收费版:http://print.jatools.com/ 免费版: http://printfree.jatools.com/ 代码结构如下: 打印效果如下(因为免 ...
- IE调用WebBrowser控件实现WEB打印、分页打印、无预览打印
WebBrowser控件 WebBrowser ActiveX 控件提供托管的包装. 托管的包装便可以在 Windows 窗体客户端应用程序中显示网页. 你可以使用WebBrowser控件重复中你的应 ...
- 使用vue2实现打印在线word文件,文件流形式打印在线word,预览打印
需要使用的三个插件 docx-preview (npm install docx-preview) 安装 jszip (npm install jszi ...
- php 浏览器 打印控件,JavaScript_JavaScript 实现打印,打印预览,打印设置,WebBrowser是IE内置的浏览器控件 - phpStudy...
JavaScript 实现打印,打印预览,打印设置 WebBrowser是IE内置的浏览器控件,无需用户下载. 一.WebBrowser控件 二.WebBrowder控件的方法 //打印 WebBro ...
- js 直接打开选择文件窗口_基于HTML5 构建的 Web端现代化PDF在线预览插件——PDF.js...
引言 PDF文件现在在许多企业中常用 - 无论您是要生成销售报告,交付合同还是发送发票,PDF都是首选的文件类型.PDF.js是由Mozilla编写的JavaScript库.由于它使用vanilla ...
- Vue PDF文件预览打印vue-pdf
Vue PDF文件预览vue-pdf 最近做项目,遇到预览PDF这个功能,在网上找了找,大多推荐的是pdf.js,不过在Vue中还是想偷懒直接npm组件,最后找到了一个还不错的Vue-pdf 组件,G ...
- 浏览器及时感知服务端数据变化的方式
需求 在公司,有一个需求,是浏览器实时获取服务端数据变化,然后根据变化做相应的动作.需求场景如下:手机端扫描二维码,然后获取待取件订单列表,点击取件,进行取件,同时远端打印机打印出取件小票. 技术难点 ...
- 基于JAVA融呗智慧金融微资讯移动平台服务端计算机毕业设计源码+数据库+lw文档+系统+部署
基于JAVA融呗智慧金融微资讯移动平台服务端计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA融呗智慧金融微资讯移动平台服务端计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈 ...
- 微信公众号,点击按钮打开pdf文件流,安卓跳转到浏览器里下载,ios可预览但默认不能下载
微信公众号,点击按钮打开pdf文件流,安卓跳转到浏览器里下载,ios可预览但默认不能下载 注:在pc上开始时采用这两种方式是没有效果的,或者打开的是空页面,但上线到公众号是没有问题的!!!!!!!!! ...
最新文章
- stack UVA 442 Matrix Chain Multiplication
- 运筹学的课程笔记 markov decision process
- ##安装MySql数据库并解决如果安装出错卸载的注意事项
- python matlib库_python matplotlib 库学习
- [ofbiz]less-than (lt;) and greater-than (gt;) symbols
- php 使用PDO,防止sql注入 简单说明
- uva 1631——Locker
- python模块学习(1)
- android 下拉刷新实现方式,Android RecyclerView设置下拉刷新的实现方法
- 使用 pqgrid 将JSON数据转换成TABLE
- oracle rac 距离限制,Oracle Extended Distance Clusters (Oracle 扩展距离集群 - 异地RAC)
- Selenium2 + Python3.6实战(五):生成HTML测试报告 Invalid argument
- 广义平稳随机过程定义_广义平稳随机过程介绍.ppt
- 004-集成maven和Spring boot的profile功能打包
- Kubernetes查看日志命令
- Windows PE文件各个节(Section)分析
- 一大堆概率概念_拔剑-浆糊的传说_新浪博客
- 如何一次将蓝牙耳机连接到多个设备
- 杨涛鸣 杨焘鸣:世界各个角落都存在人脉关系
- ecu可以用计算机控制吗,ECU应该怎么调?买来的电脑里的默认ECU程序能用么?
热门文章
- Eclipse等IDE配置Anaconda/Python3开发环境(win10_x64)
- SpringCloud - Spring Cloud 之 Gateway网关(十三)
- 【每日蓝桥】25、一五年省赛Java组真题“立方变自身”
- 传说她是清华大学校花或重庆工商大学校花
- 储能逆变器双向变流器设计,PCS 30KW双向DCDC和三电平逆变PCS 仿真源码含有并网和离网两个模型
- docker镜像下载加速
- 魔方大数据系列圆桌论坛(22)之 “数据智能助力产业升级“ 暨国内首个大数据微应用实验室落户上海超级计算中心签约仪式
- 从逐笔成交分析主力异动
- BuuCTF难题详解| Misc | VN 2020 公开赛 内存取证
- 安装 虚拟机 centos8 设置基础软件仓库时出错