Java调用TSC打印机进行打印
2018-07-13 02:39:46来源:博客园 阅读 ()
最近项目中用到了打印机,最开始的完全不懂,现在弄好了,所以做了总结,该篇包括后台的调用打印(两种方式)跟前端的js的打印,但是只有IE现在支持打印,而且如果想远程连接打印机,二维码的生成和直接由打印机的命令进行操作,就要把修改浏览器的安全配置,下面再做详细的介绍
public static void main(String[] args) { FileInputStream textStream = null; try { textStream = new FileInputStream("地址"); } catch (FileNotFoundException e) { e.printStackTrace(); } if (textStream != null) // 当打印内容不为空时 { // 指定打印输出格式 DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;//SERVICE_FORMATTED.PRINTABLE // 定位默认的打印服务 PrintService printService = PrintServiceLookup.lookupDefaultPrintService(); // 创建打印作业 DocPrintJob job = printService.createPrintJob(); // 设置打印属性 PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); // 设置纸张大小,也可以新建MediaSize类来自定义大小 pras.add(MediaSizeName.ISO_A4); DocAttributeSet das = new HashDocAttributeSet(); // 指定打印内容 Doc doc = new SimpleDoc(textStream, flavor, das); // 不显示打印对话框,直接进行打印工作 try { job.print(doc, pras); // 进行每一页的具体打印操作 } catch (PrintException pe) { pe.printStackTrace(); } } else { // 如果打印内容为空时,提示用户打印将取消 JOptionPane.showConfirmDialog(null, "Sorry, Printer Job is Empty, Print Cancelled!", "Empty", JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE); } }
public class JavaDemo { public interface TscLibDll extends Library { TscLibDll INSTANCE = (TscLibDll) Native.loadLibrary("TSCLIB", TscLibDll.class); int about(); int openport(String pirnterName); int closeport(); int sendcommand(String printerCommand); int setup(String width, String height, String speed, String density, String sensor, String vertical, String offset); int downloadpcx(String filename, String image_name); int barcode(String x, String y, String type, String height, String readable, String rotation, String narrow, String wide, String code); int printerfont(String x, String y, String fonttype, String rotation, String xmul, String ymul, String text); int clearbuffer(); int printlabel(String set, String copy); int formfeed(); int nobackfeed(); int windowsfont(int x, int y, int fontheight, int rotation, int fontstyle, int fontunderline, String szFaceName, String content); } public static void main(String[] args) { System.setProperty("jna.encoding", "GBK");// 支持中文 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time = df.format(new Date()); String qrCode = "PD102011"; TscLibDll.INSTANCE.openport("TSC TTP-244 Pro");//打印机型号 TscLibDll.INSTANCE.setup("70","40","5","8","0","2","0"); TscLibDll.INSTANCE.clearbuffer(); String command = "QRCODE 120,90,Q,8,A,0,M1,S7,\"" + qrCode+"\""; //打印二维码的参数和内容 TscLibDll.INSTANCE.sendcommand(command); //传送指令 TscLibDll.INSTANCE.sendcommand("TEXT 300 70 36 0 0 0 arial"+ "办公耗材-标签纸"); //TscLibDll.INSTANCE.windowsfont(300, 70, 36, 0, 0, 0, "arial", "办公耗材-标签纸"); TscLibDll.INSTANCE.printlabel("1", "1"); TscLibDll.INSTANCE.closeport(); } }
<script type="text/javascript"> function printQRcode(){ var TSCObj = new ActiveXObject("TSCActiveX.TSCLIB");//打印机使用的dll //TSCObj.ActiveXabout(); // 打印机信息 TSCObj.ActiveXopenport ("TSC TTP-244 Pro");//打印机名称,不能写错 //TSCObj.ActiveXdownloadpcx ("D:/myeclipseproject/filesManager/trunk/doc/02-参考资料/03-二维码打印机/01-开发帮助/PHP调用范例/TSCActiveX.DLL-PHP-Example/","123.PCX"); TSCObj.ActiveXsetup("70","40","4","15","0","2.5","0");//打印机设置 //TSCObj.ActiveXsetup("标签宽度","标签高度","打印速度","打印浓度(0-15)","感应器类别字串型,0 表示使用垂直間距感測器(gap sensor), 1 表示使用黑標感測器(black mark senso)","Gap/Black mark垂直间距(mm)","Gap/Black mark偏移距离(mm)"); //TSCObj.ActiveXformfeed(); //TSCObj.ActiveXnobackfeed(); TSCObj.ActiveXsendcommand("DIRECTION 1"); //设置标签方向 ,DIRECTION 1 左上角 (x,y)={0,0};DIRECTION 0 右下角 (x,y)={0,0}; TSCObj.ActiveXsendcommand ("SET TEAR ON"); TSCObj.ActiveXclearbuffer(); //TSCObj.ActiveXsendcommand ("PUTPCX 0,0,\"123.PCX\""); /* 1、ActiveXprinterfont采用机器内置编码通常用来打英文。 2、ActiveXwindowsfont可以输出汉字,但是必须是系统中存在的字体。 TSCObj.ActiveXprinterfont ("a","b","c","d","e","f","g"); a:字符串,文字X方向起始点,以点表示。 b:字符串,文字Y方向起始点,以点表示。 c:內建字型名称,共12种(1: 8*12 dots 2: 12*20 dots 3: 16*24 dots 4: 24*32 dots 5: 32*48 dots TST24.BF2: 繁體中文 24*24 TST16.BF2: 繁體中文 16*16 TTT24.BF2: 繁體中文 24*24 (電信碼) TSS24.BF2: 簡體中文 24*24 TSS16.BF2: 簡體中文 16*16 K: 韓文 24*24 L: 韓文 16*16 ) d:字符串,旋转角度 e:字符串,X方向放大倍率1-8 f:字符串,Y方向放大倍率1-8 g:字符串,打印内容 ActiveXwindowsfont(a,b,c,d,e,f,g,h) 说明:使用Windows TTF字体打印文字。 参数: a:整数类型,文字X方向起始点,以点表示。 b:整数类型,文字Y方向起始点,以点表示。 c:整数类型,字体高度,以点表示。 d:整数类型,旋转角度,逆时针方向旋转。0-旋转0°,90-旋转90°,180-旋转180°,270-旋转270°。 e:整数类型,字体外形。0:标签;1:斜体;2:粗体;3:粗斜体。 f:整数类型,下划线,0:无下划线;1:加下划线。 g:字符串类型,字体名称。如:Arial,Times new Roman。 h:字符串类型,打印文字内容。 */ // TSCObj.ActiveXwindowsfont (500, 200, 48, 90, 0, 0, "Arial", "\u7f16\u7801"); TSCObj.ActiveXwindowsfont (260, 60, 60, 0, 2, 0, "Arial", "XX专用"); //var cmd = 'QRCODE 条码X方向起始点,条码Y方向起始点,纠错级别,二维码高度,A(A和M),旋转角度,M2(分为类型1和类型2),S1 (s1-s8,默认s7),\"1231你好2421341325454353\"'; var cmd = 'QRCODE 80,80,H,7,A,0,M2,S1,\"'+"123456789"+'\"'; TSCObj.ActiveXsendcommand(cmd); TSCObj.ActiveXwindowsfont (280, 150, 40, 0, 0, 0, "Arial", "123456789"); TSCObj.ActiveXwindowsfont (180, 260, 30, 0, 0, 0, "Arial", "XXXXXXXX"); TSCObj.ActiveXprintlabel ("1","1");//(打印份数,每页打印张数) TSCObj.ActiveXclearbuffer();//清除 TSCObj.ActiveXcloseport();//关闭打印端口 } </script>
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash