Java调用TSC打印机进行打印
最近项目中用到了打印机,最开始的完全不懂,现在弄好了,所以做了总结,该篇包括后台的调用打印(两种方式)跟前端的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>
Java调用TSC打印机进行打印的更多相关文章
- C#调用TSC条码打印机打印二维码
#region 调用TSC打印机打印 /// <summary> /// 调用TSC打印机打印 /// </summary> /// <param name=" ...
- TSC打印机使用教程终极版
最近公司做一个资产采集的项目,之前做过此类项目,不过没有整理资料,借这次机会写一下,做个记录. 本教程使用的打印机型号:TSC TTP-244 Plus 官方文档 一.TSC打印机安装 1.机 ...
- C#调用TSC条码打印机打印条码
#region 调用TSC打印机打印条码 /// <summary> /// 调用TSC打印机打印条码 /// </summary> /// <param name=&q ...
- Java实现POS打印机自定义无驱打印
Java实现POS打印机自定义无驱打印 热敏打印机使用越来越广泛,而安装驱动相当复杂,万幸的是,几乎所有的热敏打印机都支持ESC/P指令,参考网络上一些资料后,在此整理了一份自定义打印的方案 • 打印 ...
- 按照已有的模板打印小票<二> ——调用windows打印机打印 可设置字体样式
按照已有的模板打印小票<二> ——调用windows打印机打印 可设置字体样式 之前写过一篇文章<按照已有的模板输出一(如发票)>,是关于如何给已有的模板赋值.在项目的实践过程 ...
- Java 实现 POS 打印机无驱打印
来源:https://www.ibm.com/developerworks/cn/java/j-lo-pos/index.html 行业需求 我们是一家专业做酒店餐饮软件的公司,餐饮软件一个重要的功能 ...
- Java使用POS打印机(无驱)
使用原因:应项目要求,需要使用打印机,但是如果使用Windows驱动来实现打印,在某些条件下会发生网络堵塞等,而且没有提示,所以为了确保信息的完整,避免数据丢失.我们使用无驱打印(直接写端口的方法), ...
- Rserve, java调用R源文件
Rserve安装和加载: install.packages("Rserve") library("Rserve") Rserve() java调用: REn ...
- java调用本地方法的时候报错 could not find the main class:xx.program will exit
如图所示,当在java调用本地方法的时候报错 我的解决办法是把dll文件放到System.out.println(System.getProperty("java.library.path& ...
随机推荐
- 一次mysql主从同步问题及解决过程
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 由于经常被抓取文章内容,在此附上博 ...
- 深入了解java虚拟机(JVM) 第七章 内存分配策略
理解了jvm内存分配策略不仅是程序性能调优的重要知识,还能够给养成自己一种良好的代码思路,一个程序的代码差异往往都是在这里体现出来的. 一.对象优先分配到Eden区域 一般来说,新创建的对象都会直 ...
- “全栈2019”Java多线程第十二章:后台线程setDaemon()方法详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- CTF之信息泄漏
web源码泄漏 .hg源码泄漏: 漏洞成因:hg init的时候会生成.hg,http://www.xx.com/.hg/, 工具:dvcs-ripper,(rip-hg.pl -v -u http ...
- 中山纪念中学培训DAY1
哇啊啊啊啊啊啊$……$ 并不像说环境怎么样. $Day1$模拟赛 稳重一点选了提高$B$ 然后$5min$后: $t1$装压$DP$最短路 $t2$裸地贪心 $t3……$哇$t3$怎么做啊啊啊啊. $ ...
- P4145 上帝造题的七分钟2
题目描述 "第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对一段数中每个数都开平方(下取整)的操作. 第三分钟,k说,要能查询,于是便有了求一段 ...
- 【vue】——vue.js 获取当前 自定义属性值
假设有一个标签h5, 我们给它添加了一个自定义属性值,(item.id是从动态添加的) 点击h5 标签,如何才能获取当前对应的自定义属性值呢? 想当然的我最开始这样写: <h5 class=&q ...
- shell实战之case语句的选择提示
知识点包括:case语句,cat多行输入,break和exit的区别,wget断点续传,while中断条件写法,函数的使用方法 #!/bin/bash echo "\n1. 本机容器情况如下 ...
- select子句排列顺序与聚集函数
selcet 要返回的列或表达式 from 从中检索数据的表 where 行级过滤 group by 分组说明 having 组级过滤 order by 输出排列顺序 ASC正序排 ...
- JSP常用Form表单控件
[easyui]--combobox--赋值和获取选中的值 /初始化下拉选框 $('#communityIdDiv').combobox({ url:basepath+"pushContro ...