web windows 打印 调用_web调用打印机自动打印 - CSDN
精华内容
参与话题
  • JAVA:实现 web 打印功能(简单易懂)

    万次阅读 热门讨论 2020-06-23 17:00:19
    这是我们调用打印页面: 源码部分: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name=...

    可以直接调用测试:

    测试实例下载:https://download.csdn.net/download/qq_36537546/12546247

    这是我们调用的打印页面:

    源码部分:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <link rel="stylesheet" href="css/page/index.css">
        <title>window调用打印接口</title>
        <style>
            #pr{width:100px;height:40px;line-height:40px;text-align:center;background:#ccc;}
            .box{width:600px;background:red;}
        </style>
    </head>
    <body>
        <div class="box">
            <h1>要打印的内容</h1>
            <p>测试内容</p>
        </div>
        <div id="pr">点击打印</div>
    </body>
    </html>
    <script>
        function $(selector){
            return document.querySelector(selector);
        }
        //获取整个页面
        $("#pr").onclick =function(){
            window.print();
        }
    
        /* 实现打印全部页面(也可以打印局部页面 - 看需求) ---- 
       	   我是只打印boby里边的内容
       	   获取我们定义的id
       	*/
        $("#pr").onclick =function(){
            var oldHtml = $("body").innerHTML; 
            var printbox = $(".box").innerHTML;
            $("body").innerHTML = printbox;
            window.print();
            $("body").innerHTML = oldHtml;
    
        }
    </script>

     

    展开全文
  • Web调用本地打印机-Java实现

    万次阅读 2018-10-25 15:55:32
    用Java调用本地打印机实现功能,将java程序打包成exe可执行文件,在本地注册表中新增URL协议,最后web端通过该协议实现启动本地exe程序进行打印 实现过程: 1、下载32位TSCActiveX.dll,并注册到windows环境中,...

    实现思路:

    用Java调用本地打印机实现功能,将java程序打包成exe可执行文件,在本地注册表中新增URL协议,最后web端通过该协议实现启动本地exe程序进行打印

    实现过程:

    1、下载32位TSCActiveX.dll,并注册到windows环境中,指令为Regsvr32.exe TSCActiveX.dll 下载地址:https://download.csdn.net/download/u010188178/10642451

    2、创建Java工程(这一步可以先不做,因为我用普通Java工程最终失败了,在这里只是为了说明当时的解决过程)

    3、核心代码(见页面底端),这里需要引入外部包 jna-3.0.9.jar

    4、添加入口类(main方法类),然后打包成jar文件

    5、运行jar,java -jar ******.jar

    此时发会报错“Class not fond”,找不到 com.sun.jna.Library,说明第三方包未能引入,解决方案:参考 https://blog.csdn.net/u010188178/article/details/82454220

    问题解决,到这一步便可以运行jar文件调用本地打印。

    6、使用exe4j将jar文件打包为exe文件 工具及使用说明的下载地址:https://download.csdn.net/download/u010188178/10643229

    生成exe文件后,执行之。然后又报错:java.lang.NoClassDefFoundError: com/sun/jna/Library,与上面报错原因类似,找不到第三方包。

    经过多次尝试失败,最终未能解决,因此回到上述提到的第“2”步,既然普通工程引入第三方jar包在自身打包过程会如此“不幸”,故想到使用maven来构建并打包项目;同时考虑到web端与exe运行程序之间的参数传递问题,因此我决定使用springboot+maven工程。核心代码不变,其他步骤同上,最终生成有效可执行exe文件。

    7、添加自定义URL协议

    Windows Registry Editor Version 5.00
    
    [HKEY_CLASSES_ROOT\TscPrint]
    
    "URL Protocol"="D:\\test\\tsc_printer.exe"
    
    @="TscPrintProtocol"
    
    [HKEY_CLASSES_ROOT\TscPrint\DefaultIcon]
    
    @="D:\\test\\tsc_printer.exe,1"
    
    [HKEY_CLASSES_ROOT\TscPrint\shell]
    
    [HKEY_CLASSES_ROOT\TscPrint\shell\open]
    
    [HKEY_CLASSES_ROOT\TscPrint\shell\open\command]
    
    @="\"D:\\test\\tsc_printer.exe\" \"%1\""

     

    8、在页面上调用自定义协议启动打印程序

     

    注意事项:

    1、使用的是打印机的命令进行操作,这里需要jna的jar包,还有jdk要求是32位的,并且要要注册对应的dll,对应不同的系统要在不同的Windows下进行注册DLL,注册成功之后需要win+R ,调用并运行  Regsvr32.exe TSCActiveX.dll 指令

    2、需要用到第三方jar包,jna

    3、打印图片的指令“PUTPCX”仅支持单色PCX图像,上传到打印机前需要先将图片转换成单色PCX格式

    转换步骤:

    (1)将图片转换成单色位图,比如可使用windows自带的画图工具:打开图片-另存为单色位图

    (2)将单色位图转换成PCX格式,比如可用PS工具将其另存为PCX

    (讲一下当时解决这个问题的过程:调用打印机PUTPCX命令打印图片始终不能成功打印,然后阅读该型号打印机的编程API,提到该指令仅支持单色PCX图像,于是将矛头指向PCX;通过上网查询,了解PCX格式的头文件结构,单色应该具有这样2个特征,即文件头第3字节的“位/像素”值为1且第65字节平面数也为1;了解到这些后已经兴奋不已,因为自己在大学期间学过图相隐写技术,通过修改图像头文件的某些位置并不会让图片看起来有异样,于是就想当然的直接修改第3和第65字节的十六进制数值;然后保存图片,调用打印机,打印成功,但发现图片完全变了样,说明PCX格式文件头的这2个位置是不允许直接修改的;最后经技术负责人点拨,既然不知道怎样将PCX转换成单色,为何不先将其他格式图片转换成单色,再将其转换成PCX格式,经实验,方案可行。)

     

    存在不足:

    1.代码仅是技术上的实现,并未结合实际业务进行优化

    2.暂不支持图片的打印(已解决)

    3.不足之处,请批评指正,指正邮箱:tianjiaoerdai@163.com

     

    核心代码:

    import java.text.SimpleDateFormat;
    
    import java.util.Date;
    
    import java.util.List;
    
    import com.sun.jna.Library;
    
    import com.sun.jna.Native;
    
    
    
    public class JavaPrinter {
    
    private static JavaPrinter instance = null;
    
    private JavaPrinter(){
    
    }
    
    public static JavaPrinter getInstance(){
    
    if (instance == null) {
    
    synchronized (JavaPrinter.class) {
    
    if (instance == null) {
    
    instance = new JavaPrinter();
    
    }
    
    }
    
    }
    
    return instance;
    
    }
    
    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);
    
    }
    
    /**
    
    * 打印入场券,宽高为80.6*201mm
    
    * @param tscName 打印机名称
    
    * @param title 打印标题
    
    * @param others 除标题外的其他文字
    
    * @param qrCode 二维码文字
    
    * @param copies 打印份数
    
    * @auther WolfShadow
    
    * @date 2018年9月4日
    
    */
    
    public void printTickt(String tscName, String title, List<String> others, String qrCode, int copies){
    
    System.setProperty("jna.encoding", "GBK");// 支持中文
    
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    
    String time = df.format(new Date());
    
    // TscLibDll.INSTANCE.about();
    
    TscLibDll.INSTANCE.openport(tscName);
    
    // TscLibDll.INSTANCE.downloadpcx("C:\\UL.PCX", "UL.PCX");
    
    // 设定标签的宽度、高度、打印速度、打印浓度、感应器类别、Gap/Black mark垂直间距、Gap/Black mark偏移距离
    
    TscLibDll.INSTANCE.setup("80.6", "201", "5", "8", "1", "2", "0");
    
    TscLibDll.INSTANCE.clearbuffer();
    
    // TscLibDll.INSTANCE.sendcommand("PUTPCX 550,10,\"UL.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:字符串类型,打印文字内容。
    
    int startX = 200, startY = 1300, angle = 90, rowHight = 50;
    
    TscLibDll.INSTANCE.windowsfont(startX, startY, 42, angle, 2, 0, "Arial", title);
    
    int index = 1;
    
    for(String str : others){
    
    TscLibDll.INSTANCE.windowsfont(startX+(index++)*rowHight, startY, 36, angle, 0, 0, "Arial", str);
    
    }
    
    /*
    
    纠错级别:L、M、Q、H
    
    */
    
    //var cmd = 'QRCODE 条码X方向起始点,条码Y方向起始点,纠错级别,二维码高度,A(A和M),旋转角度,M2(分为类型1和类型2),S1 (s1-s8,默认s7),\"1231你好2421341325454353\"';
    
    String command = "QRCODE 200,600,Q,7,A,0,M2,S7,\"" + qrCode + "\""; // 打印二维码的参数和内容
    
    TscLibDll.INSTANCE.sendcommand(command); // 传送指令
    
    // (打印份数,每页打印张数)
    
    TscLibDll.INSTANCE.printlabel(""+copies, "1");
    
    TscLibDll.INSTANCE.closeport();
    
    System.exit(0);
    
    }
    
    }

     

     

    展开全文
  • Web调用本地打印机-JS实现

    万次阅读 2018-10-25 15:56:55
    大概步骤: 1.安装打印机驱动,连接打印机 ... 3.编写JS代码(见页面下方)   存在不足: ...2.代码仅是尝试技术上的实现,并未根据业务进行优化,比如很多数据需要从后台获取并以参数的形式进行传入,目前是写死的数...

    大概步骤:

    1.安装打印机驱动,连接打印机

    2.下载并部署TSCActiveX,下载地址 https://download.csdn.net/download/u010188178/10642451

    3.编写JS代码(见页面下方)

     

    存在不足:

    1.仅支持IE浏览器

    2.代码仅是尝试技术上的实现,并未根据业务进行优化,比如很多数据需要从后台获取并以参数的形式进行传入,目前是写死的数据

     

     

    核心代码:

    function printCode() {
    
    var TSCObj;
    
    TSCObj = new ActiveXObject("TSCActiveX.TSCLIB");//打印机使用的dll
    
    //TSCObj.ActiveXabout(); // 打印机信息
    
    TSCObj.ActiveXopenport("TSC TTP-247");//打印机名称,不能写错
    
    //TSCObj.ActiveXdownloadpcx ("D:/myeclipseproject/filesManager/trunk/doc/02-参考资料/03-二维码打印机/01-开发帮助/PHP调用范例/TSCActiveX.DLL-PHP-Example/","123.PCX");
    
    TSCObj.ActiveXsetup("80.6", "201", "4", "2", "1", "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:字符串类型,打印文字内容。
    
    */
    
    var now = new Date();
    
    TSCObj
    
    .ActiveXwindowsfont(200, 1300, 48, 90, 0, 0, "Arial",
    
    "音乐节音乐节音乐节");
    
    TSCObj.ActiveXwindowsfont(250, 1300, 48, 90, 0, 0, "Arial",
    
    "时间:2018年9月3日" + now.toLocaleString());
    
    TSCObj.ActiveXwindowsfont(300, 1300, 48, 90, 0, 0, "Arial", "场地:杭州体育馆");
    
    TSCObj.ActiveXwindowsfont(350, 1300, 48, 90, 0, 0, "Arial",
    
    "票价:¥10000.00");
    
    
    
    /*
    
    纠错级别:L、M、Q、H
    
    */
    
    //var cmd = 'QRCODE 条码X方向起始点,条码Y方向起始点,纠错级别,二维码高度,A(A和M),旋转角度,M2(分为类型1和类型2),S1 (s1-s8,默认s7),\"1231你好2421341325454353\"';
    
    //var cmd = 'QRCODE 60,30,H,7,A,0,M2,S1,\"\u7f16\u7801\"';
    
    var cmd = 'QRCODE 200,600,H,7,A,0,M2,S1,\"码维二\"';
    
    
    
    TSCObj.ActiveXsendcommand(cmd);
    
    TSCObj.ActiveXprintlabel("1", "1");//(打印份数,每页打印张数)
    
    TSCObj.ActiveXclearbuffer();//清除
    
    TSCObj.ActiveXcloseport();//关闭打印端口
    
    }

     

    展开全文
  • java中调用打印机打印本地文件

    万次阅读 2017-09-08 11:23:30
    package com.iba.cxx.adm.controller; import javax.print.*; import javax.print.attribute.DocAttributeSet; import javax.print.attribute.HashDocAttributeSet; import javax.print.attribute.HashPrintRequest
    package com.iba.cxx.adm.controller;
    
    import javax.print.*;
    import javax.print.attribute.DocAttributeSet;
    import javax.print.attribute.HashDocAttributeSet;
    import javax.print.attribute.HashPrintRequestAttributeSet;
    import javax.swing.*;
    import java.io.File;
    import java.io.FileInputStream;
    
    /**
     * Created by Administrator on 2017/9/8 0008.
     */
    public class TestController {
    
        public static void main(String[] args) {
            JFileChooser fileChooser = new JFileChooser(); //创建打印作业
            int state = fileChooser.showOpenDialog(null);
            if(state == fileChooser.APPROVE_OPTION){
               // File file = new File("D:/haha.txt"); //获取选择的文件
                File file = fileChooser.getSelectedFile();//获取选择的文件
                //构建打印请求属性集
                HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
                //设置打印格式,因为未确定类型,所以选择autosense
                DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
                //查找所有的可用的打印服务
                PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
                //定位默认的打印服务
                PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
                //显示打印对话框
                PrintService service = ServiceUI.printDialog(null, 200, 200, printService,
                        defaultService, flavor, pras);
                if(service != null){
                    try {
                        DocPrintJob job = service.createPrintJob(); //创建打印作业
                        FileInputStream fis = new FileInputStream(file); //构造待打印的文件流
                        DocAttributeSet das = new HashDocAttributeSet();
                        Doc doc = new SimpleDoc(fis, flavor, das);
                        job.print(doc, pras);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
    展开全文
  • 页面直接调用打印机,打印pdf文件

    万次阅读 2018-10-15 15:25:07
    &lt;div id="pdf"...说明:doPrint是一个数组,里面保存了需要打印的pdf的路径(doPrint修改成你需要打印的pdf文件的路基即可) for(var i=0;i&lt;doPrint.length;i++){  var ...
  • 注:本文由BeyondVincent(破船)翻译首发 ... ...第20日-打印: ... 今天,我将介绍来自你的Windows 8程序中的打印。在以前我作为一面软件开发人员时,唯一一次关注过打印是与一个web page相关,只需要调用wi
  • 最近项目需求需要使用web页面的打印功能,最开始使用window.print()直接打印能出效果,但是无法实现预览功能,并且不同的浏览器执行的效果都不一样。后面百度找到webEx……那个组件,结果在html页面可行,放到项目的...
  • 一、入门 1、启动HttpPrinter 双击 HttpPrinter_latest/...我们常用的 web打印 在 js 目录下 3、token 干嘛用的 token你可以理解为密码 发送的 token值 要 在 httpprinter的token列表里面 token列表的查看步骤: 系...
  • 调用SHDOCVW(web浏览器) COM组件的时候,返回了错误 HRESULT E_FAIL。总结如下: 1. 在控制面板--->管理工具--->服务 中,开启Distributed Transaction Coordinator 服务 。 2. 打开控制面板--->管理工具--->...
  • API Monitor(API监控工具)

    万次阅读 2015-04-22 15:04:51
    API Monitor是一个免费软件,可以让你监视和控制应用程序和服务,取得了API调用。 它是一个强大的工具,看到的应用程序和服务是如何工作的,或跟踪,你在自己的应用程序的问题。 产品特点 64位支持  API监控...
  • 开始尝试,后续成功后再修改文章。
  • 昨天试了下一个Windows Web Browser Control,居然可以了,下面做个记录:  m_Browser.Navigate(sHttpAddress, &vtNULL, &vtNULL, &vtNULL, &vtNULL);  m_Browser.ExecWB(OLECMDID_PRINT,OLECMDEXECOPT_...
  • JS web打印

    千次阅读 2010-01-21 15:48:00
    11.1 Web打印Web打印是一种常用的打印方式,其使用方法简单、方便、快捷,在浏览网页的同时就可以实现打印的功能。实例291 调用IE自身的打印功能实现打印实例说明通过JavaScript调用IE自身的打印功能实现打印,...
  • dubbo 获取application和ip 打印日志,以便排查问题.. 让对方有针对的去具体某个机器上去排查. xxxService.xxx(); // 远程调用 boolean isConsumerSide = RpcContext.getContext().isConsumerSide(); //...
  • Java调用R(一)_Rserve

    千次阅读 2013-08-22 13:31:04
    最近做项目涉及到R总结一些Java本地调用R和Java web项目中调用R的基本步骤 1. R中安装Rserve包 2. 系统变量Path加上 C:\Program Files\R\R-3.0.1\bin\i386;C:\Program Files\R\R-3.0.1\library\rJava\jri  ...
  • WEB中前台JS控制打印PDF文件

    万次阅读 2017-02-13 20:34:24
    最近遇到项目中需要在浏览器中一键打印 远程PDF文件,经过网上搜集资料最终选择了在客户端安装adobe reader后,实现上从服务器端下载一个pdf文件流,在IE中用adobe插件打开(在前台页面中隐藏Object标签),然后用...
  • 第一部分 调用SHDOCVW(web浏览器) COM组件的时候,返回了错误 HRESULT E_FAIL。总结如下: 1. 在控制面板---&gt;管理工具---&gt;服务 中,开启Distrib
  • C# Print

    千次阅读 2011-09-12 12:45:12
    收集了一些打印方面文章, 包含WinForm, Asp.Net中使用, 有结合Excel/Word, 也有直接使用报表工具打印功能, Web打印采用css结合WebBrowse控件.(文章及相关代码搜集自网络,仅供学习参考,版权属于原作者! )01. Windows ...
  • ASMX

    万次阅读 2010-12-24 14:31:00
    当 Microsoft® .NET Framework 第一次发布时,它引入了一个有突破性的 Web 服务框架,那就是 ASMX。设计 ASMX 的目的在于尽可能地简化 Web 服务的开发过程,这样即使您不是 XML 专家,也可以创建并运行 Web 服务。...
  • window.print 页面打印

    万次阅读 2015-06-15 16:42:28
    window.print() 实际上,是浏览器打印功能菜单的一种程序调用。与点击打印功能菜单一样,不能精确分页,不能设置纸型,套打的问题更加无从谈起,只不过,可以让用户不用去点菜单,直接点击网页中的一个按钮,或一个...
1 2 3 4 5 ... 20
收藏数 53,379
精华内容 21,351
关键字:

web windows 打印 调用