Java調用TSC印表機進行列印

來源:互聯網
上載者:User

標籤:dir   reg   cancel   修改   jdk   confirm   印表機   system   div   

    最近項目中用到了印表機,最開始的完全不懂,現在弄好了,所以做了總結,該篇包括背景調用列印(兩種方式)跟前端的js的列印,但是只有IE現在支援列印,而且如果想遠端連線印表機,二維碼的產生和直接由印表機的命令進行操作,就要把修改瀏覽器的安全配置,下面再做詳細的介紹

第一種後台列印:        使用 javax中的 Prin tServiceLookup類進行列印,可以直接調用預設的印表機,也可以使用下列的方法進行篩選列印:      PrintServiceLookup. look u pMu lt iDocPrintServices( flavors attributes); 可執行代碼如下:
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);            }        }

 

 

 

  第二種後台列印:    注意:第二種跟第三種列印使用的是印表機的命令進行操作,這裡需要 jna的jar包,還有jdk要求是32位的,並且要要註冊對應的dll,對應不同的系統要在不同的Windows下進行 註冊DLL,註冊成功之後需要 win+R ,調用並運行   Regsvr32.exe TSCActiveX.dll 指令
    可執行代碼如下:
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();    }}

 


注意:這種列印方式,需要USB串連(ttp-244 pro),如果想線上產生,遠端連線,需要使用第三種方式 第三種JS列印    在使用JS進行列印的時候要主要瀏覽器的限制,目前只有IE瀏覽器進行支援,在進行列印時,控制台出現Automation 伺服器不能建立對象的,請調節瀏覽器的安全中的自訂層級中的ActiveX中相關的設定為啟用,代碼如下:
<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印表機進行列印

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.