指定Web打印的打印机
前一段时间我帮一个朋友开发了一个Web快递单打印程序,程序本身很简单的,就几千行代码,我一个周末就可以搞定,因为太简单了,我都只把它叫程序,而不叫系统,呵呵。但朋友使用后,提出了一个比较中肯的需求,快递单是针式打印机打印,而平时的文档一般是A4纸,通过激光打印机打印,我把他们的默认打印机设为针式打印机,这样虽然可以在打印快递单时方便的直接打印(不需要打印预览)出快递单,但他们在打印文档时,已经习惯了不选择打印机,直接就打印,这样就经常把要打印的文档发到针式打印机上打印,浪费了不少快递单。我通过调查发现,现在一般的公司都会装两种打印机,一种是针式打印机,用来打印各种单据和发票,一种是激光喷墨之类的打印机用来打印文档,正常情况下是把文档的打印机设为默认打印机。
我想我们作为程序员,不管系统的大小,简单和复杂,良好的用户体验是我们追求的设计目标。我们做程序和系统,本身就是去减轻用户的工作,而不是因为使用了我们所开发的程序和系统,而使工作变得更复杂,在程序的操作方面,能让用户少选一下就应该做到少选一下,能让用户少点一次就应该做到少点一次,能让用户少出错就应该做到少出错。
我在这种思想的指导下,对这个小东西也精益求精吧,呵呵。这个Web打印控件是我自己设计的,我就想在原来的基础上增加指定打印机的功能,这样用户就不用再为打印机选来选去。折腾了好几个小时,终于可以指定打印机了,但这个打印机的名称是在程序中写死的,我又觉得不方便,特别是对于网络打印机,得把“\”改为“\\”,挺不方便的,打印机的名称一般又比较长,中间还有空格,很容易输错了,如果输错了,则指定的打印机无效了。我就想好事做到底吧,干脆在控件中把本地的打印机列表抓出来,然后作为一个下拉框,供用户选择,再把选择的结果保存下来,这样既不会出错,又很灵活,如果用户的打印机重装了或者移到另外的电脑上,只要自己选择一下就好了,也不用我再改程序了。
控件中指定打印机的示例代码如下:
protected void BtnDepositPrint_Click(object sender, EventArgs e) {string FileValue, PrintValue, ParaName, ParaValue; FileValue = FileToString(".\\Frp\\DepositAmt.fr3"); ParaName = "ShopName`~PrintDepositAdd`~PrintPaperNo`~Title"; //`~为各参数的分隔符 ParaValue = "测试酒楼" + "`~说明:本单据为贵客押金收取凭证,盖章有效。退房时请出示,遗失者自负,请妥善保存。退房时间为12:00时,延时退房18:00时以前按半天房费收取,18:00时以后算全天房价。押金单有效期为一个月,过期作废。 贵重物品请交前台寄存,未寄存丢失自负。 谢谢!" + "`~身份证:4325011980639512" + "`~押金单"; SqlConnection ConPrintTest = new SqlConnection(ConfigurationManager.ConnectionStrings["PrintTestConnectionString"].ToString()); ConPrintTest.Open(); DataSet DsCashLog = new DataSet(); SqlDataAdapter DaCashLog = new SqlDataAdapter("Select top 1 CashNo, CashDate, CashAmt, PayName, GuestName, RoomNo, ItemRemark, CashUserName, Remark From CashLog", ConPrintTest); DaCashLog.FillSchema(DsCashLog, SchemaType.Source, "CashLog"); DaCashLog.Fill(DsCashLog, "CashLog"); PrintValue = TableToXml(DsCashLog.Tables["CashLog"]); DsCashLog.Dispose(); ConPrintTest.Close(); string ScriptStr; ScriptStr = "<script language='javascript'>window.onload = function() { try { var ObjPrintMange = new ActiveXObject('WebPrint.WebPrintUnit'); } catch(e) { if( confirm('打印控件未安装,现在下载吗?') ) { window.location='./PrintActivex.exe'; } return; } var OldVersion=ObjPrintMange.Version; NewVerion='5.0(2011-08-01)'; if(OldVersion < NewVerion) { ObjPrintMange = null; alert('打印控件需升级。请先进行下载,下载后关闭IE,然后安装升级版。'); window.location='./PrintActivex.exe'; return; } " + " ObjPrintMange.CheckReg('公司名称', '3B8E5B998A3125EE89983EA940BB2AEE'); " //注册码 + " ObjPrintMange.Printer='\\\\192.168.1.88\\Epson LQ-300K';" + " ObjPrintMange.PrintReport('" + FileValue + "' , '" + ParaName + "', '" + ParaValue + "', '" + PrintValue + "', '', '', '', '', '');" + "ObjPrintMange = null; window.location='./Default.aspx'; } </script>"; //window.location转向新的网页 ScriptStr = ScriptStr.Replace(System.Environment.NewLine, string.Empty); Response.Write(ScriptStr); }
控件中读取客户端本地打印机列表的示例代码如下:
<script language='javascript'> window.onload = function() {try {var ObjPrintMange = new ActiveXObject('WebPrint.WebPrintUnit'); }catch (e) {if (confirm('打印控件未安装,现在下载吗?')) { window.location = './PrintActivex.exe'; }return; } var OldVersion = ObjPrintMange.Version; NewVerion = '5.0(2011-08-01)';if (OldVersion < NewVerion) { ObjPrintMange = null; alert('打印控件需升级。请先进行下载,下载后关闭IE,然后安装升级版。'); window.location = './PrintActivex.exe';return; } ObjPrintMange.CheckReg('公司名称', '3B8E5B998A3125EE89983EA940BB2AEE'); var ObjCmbPrinterList = document.getElementById('CmbPrinterList');var strPrinterList = ObjPrintMange.PrinterList; var arrayPrinterList = strPrinterList.split(';'); ObjCmbPrinterList.innerHTML = '';for (var i = 0; i < arrayPrinterList.length - 1; i++) { ObjCmbPrinterList[i] = new Option(arrayPrinterList[i], 0); } ObjPrintMange = null;} </script>
指定Web打印的打印机,对于打印预览方式,系统则把指定打印机设为首选打印机;对于直接打印,系统则把打印任务直接分配给指定打印机。若为空则为默认打印机。指定的打印机必须是客户端电脑已安装好的,本地打印机和网络打印机都可以,对于网络打印机的名称,注意“\”改为“\\”,比如:ObjPrintMange.Printer='\\\\192.168.1.88\\Epson LQ-300K'; ,若指定的打印机不存在,则还是默认的打印机。
有什么问题请加入QQ群:218392762(一群:135506194、二群:150850837都已满,请加入三群)或者请直接Q我:12988672。
报表预览、编辑和下载的网址: http://www.lc-simple.com/PirntTest/
转载于:https://www.cnblogs.com/dong0738/archive/2011/10/07/2200539.html
指定Web打印的打印机相关推荐
- web页面调用打印机不预览直接执行打印
web页面调用打印机不预览直接执行打印 <%@ page language="java" import="java.util.*" contentType ...
- java web 打印控件_web打印,web打印控件,dotnet web打印控件,java web打印控件,webprint...
webprint打印参数设置小插件,主要实现打印纸张,边距,打印机等的设置. 主要功能: 设置页眉页脚属性 设置打印页面左右上下边距 设置打印方向,打印份数,打印指定页 打印模版和指定纸型绑定 设置自 ...
- 2013第39周一Web打印
2013第39周一Web打印 项目中遇到了Java Web打印问题,简单调用IE浏览器的打印不能完全满足要求,于是就搜集了Web打印相关的主题,简单汇总一下.web打印难点在分页.页面纸张设置,页眉页 ...
- 基于IE内核的一个WEB打印实现方案
工作需要实现一个基于IE内核的打印方案.本文将对于此方案的进行一个整体解析.由于此方案涉及自己以前未涉及的很多方面,在研究过程中学习了很多,因此在此也是做一次总结. 本文主要分为以下几个部分: (一) ...
- 兼容所有浏览器的Web打印控件的设计方案
兼容所有浏览器的Web打印控件的设计方案 设计方案的简单实现网址:http://www.lc-simple.com/PrintTest/ 第一章:Web打印控件的原理 Web打印控件的工作的原理如下: ...
- HTML生成PDF、web打印动态分页、预览。内容满了,自动换页、移动端兼容 bookjs-eazy
WEB打印,HTML转PDF工具.bookjs-eazy 仓库地址: GITEE | GITHUB 主要解决,HTML生成PDF,分页可控的问题 依赖js库:polyfill.jquery.lodas ...
- PAZU -- 4Fang WEB 打印控件
PAZU -- 4Fang WEB 打印控件 无限制免费版,完美您的WEB应用 一.概述 PAZU 是4Fang为配合"四方在线"软件于2004年开发的WEB打印控件,适用于各种W ...
- PAZU WEB打印控件
PAZU WEB打印控件 PAZU 组件在国内我们提供授权给包括中国电信.移动和银行在内的超过300家大中型企业和IT企业应用于基于WEB的开发 PAZU 支持包括Java, Dot Net, JSP ...
- Web打印--Lodop使用手册install_lodop.exe
~_~一个程序员的淘宝店:点击打开链接 http://www.hbsszx.com/lodop/PrintSample27.html Lodop是一款专业的WEB打印控件,其设计目标是简单易用.功能足 ...
- 锐浪html5打印,WEB打印
WEB打印方式概述 WEB浏览器本身具备打印当前网页的功能,当网页内容超过一页时就需要分页处理,浏览器对这样的分页处理都不完善,直接利用浏览器的打印功能很难实现多页数据的完美打印.各种浏览器的打印行为 ...
最新文章
- python使用matplotlib可视化3D直方图(3D histogram、三维直方图、包含三个坐标轴x、y、z)、3D直方图可视化多个维度数据的区别和联系
- 干货丨一文看懂生成对抗网络:从架构到训练技巧
- [C#]从URL中获取路径的最简单方法-new Uri(url).AbsolutePath
- MFC之进度条CProgressCtrl
- java删除第一个节点_访问单个节点的删除(Java)
- python代码编码成jni_python 设置文件编码格式的实现方法
- 大东电报与雷格斯在全球部署宝利通高清系统
- 大数据阶段划分及案例单词统计
- scala 学习笔记--集合
- Spring安全权限管理(Spring Security的配置使用)
- 用JavaScript+HTML实现双色球随机摇号效果
- 离线安装docker
- linux vga 驱动,Linux VGA驱动移植实验【转】
- tibco linux安装手册,TIBCO Admin 5.11.1 安装及Domain建立 (Linux)
- 苹果新一代iPad发布,库克表示后PC时代已经来临
- 普通话测试第四题评分标准_普通话等级考试内容及评分标准
- Matplotlib画动态散点图:
- 我为什么选择Go语言(Golang)
- QC、QA未来的发展前景和“钱”景在哪?
- 黑阔主流攻防之不合理的cookie验证方式