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

环境: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打印组件,实现浏览器、移动端、服务端无预览打印相关推荐

  1. jeecg实现无预览打印

    jatoolprint官网地址:收费版:http://print.jatools.com/ 免费版:  http://printfree.jatools.com/ 代码结构如下: 打印效果如下(因为免 ...

  2. IE调用WebBrowser控件实现WEB打印、分页打印、无预览打印

    WebBrowser控件 WebBrowser ActiveX 控件提供托管的包装. 托管的包装便可以在 Windows 窗体客户端应用程序中显示网页. 你可以使用WebBrowser控件重复中你的应 ...

  3. 使用vue2实现打印在线word文件,文件流形式打印在线word,预览打印

    需要使用的三个插件 docx-preview      (npm install docx-preview) 安装 jszip                    (npm install jszi ...

  4. php 浏览器 打印控件,JavaScript_JavaScript 实现打印,打印预览,打印设置,WebBrowser是IE内置的浏览器控件 - phpStudy...

    JavaScript 实现打印,打印预览,打印设置 WebBrowser是IE内置的浏览器控件,无需用户下载. 一.WebBrowser控件 二.WebBrowder控件的方法 //打印 WebBro ...

  5. js 直接打开选择文件窗口_基于HTML5 构建的 Web端现代化PDF在线预览插件——PDF.js...

    引言 PDF文件现在在许多企业中常用 - 无论您是要生成销售报告,交付合同还是发送发票,PDF都是首选的文件类型.PDF.js是由Mozilla编写的JavaScript库.由于它使用vanilla ...

  6. Vue PDF文件预览打印vue-pdf

    Vue PDF文件预览vue-pdf 最近做项目,遇到预览PDF这个功能,在网上找了找,大多推荐的是pdf.js,不过在Vue中还是想偷懒直接npm组件,最后找到了一个还不错的Vue-pdf 组件,G ...

  7. 浏览器及时感知服务端数据变化的方式

    需求 在公司,有一个需求,是浏览器实时获取服务端数据变化,然后根据变化做相应的动作.需求场景如下:手机端扫描二维码,然后获取待取件订单列表,点击取件,进行取件,同时远端打印机打印出取件小票. 技术难点 ...

  8. 基于JAVA融呗智慧金融微资讯移动平台服务端计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA融呗智慧金融微资讯移动平台服务端计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA融呗智慧金融微资讯移动平台服务端计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈 ...

  9. 微信公众号,点击按钮打开pdf文件流,安卓跳转到浏览器里下载,ios可预览但默认不能下载

    微信公众号,点击按钮打开pdf文件流,安卓跳转到浏览器里下载,ios可预览但默认不能下载 注:在pc上开始时采用这两种方式是没有效果的,或者打开的是空页面,但上线到公众号是没有问题的!!!!!!!!! ...

最新文章

  1. stack UVA 442 Matrix Chain Multiplication
  2. 运筹学的课程笔记 markov decision process
  3. ##安装MySql数据库并解决如果安装出错卸载的注意事项
  4. python matlib库_python matplotlib 库学习
  5. [ofbiz]less-than (lt;) and greater-than (gt;) symbols
  6. php 使用PDO,防止sql注入 简单说明
  7. uva 1631——Locker
  8. python模块学习(1)
  9. android 下拉刷新实现方式,Android RecyclerView设置下拉刷新的实现方法
  10. 使用 pqgrid 将JSON数据转换成TABLE
  11. oracle rac 距离限制,Oracle Extended Distance Clusters (Oracle 扩展距离集群 - 异地RAC)
  12. Selenium2 + Python3.6实战(五):生成HTML测试报告 Invalid argument
  13. 广义平稳随机过程定义_广义平稳随机过程介绍.ppt
  14. 004-集成maven和Spring boot的profile功能打包
  15. Kubernetes查看日志命令
  16. Windows PE文件各个节(Section)分析
  17. 一大堆概率概念_拔剑-浆糊的传说_新浪博客
  18. 如何一次将蓝牙耳机连接到多个设备
  19. 杨涛鸣 杨焘鸣:世界各个角落都存在人脉关系
  20. ecu可以用计算机控制吗,ECU应该怎么调?买来的电脑里的默认ECU程序能用么?

热门文章

  1. Eclipse等IDE配置Anaconda/Python3开发环境(win10_x64)
  2. SpringCloud - Spring Cloud 之 Gateway网关(十三)
  3. 【每日蓝桥】25、一五年省赛Java组真题“立方变自身”
  4. 传说她是清华大学校花或重庆工商大学校花
  5. 储能逆变器双向变流器设计,PCS 30KW双向DCDC和三电平逆变PCS 仿真源码含有并网和离网两个模型
  6. docker镜像下载加速
  7. 魔方大数据系列圆桌论坛(22)之 “数据智能助力产业升级“ 暨国内首个大数据微应用实验室落户上海超级计算中心签约仪式
  8. 从逐笔成交分析主力异动
  9. BuuCTF难题详解| Misc | VN 2020 公开赛 内存取证
  10. 安装 虚拟机 centos8 设置基础软件仓库时出错