关于JS调用Adobe Reader ActiveX插件,在web环境下调用本地打印机执行静默打印的实现

	因为之前被实施商的前端童鞋理直气壮的卡了脖子告诉我写不出来,让我很不爽,所以还是搜集了一些资料最终测试成功了。
	注意一下这个只能在IE10及以上的IE内核环境下可用(我只测试了这个环境,但是IE是没跑了,别的浏览器要用IE兼容模式才行),前提是安装了Adobe Reader插件,这个可以去官网下载。
	下面就直接甩代码了,没啥可解释的……
<!DOCTYPE html>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script type="text/javascript">
    
function directpdfprint1() {   
    try { 
        var prt = document.getElementById("ob");    
        prt.printAllFit(1); 
    } catch (e) { 
        alert("未安装adobe reader插件,请联系管理员安装!");  
    }
}
window.onload = function () {
    directpdfprint1() 
} 
</script>
<head>


</head>
<body>  
<div>
    <OBJECT id="ob" width="0" height="0" border="0" CLASSID="CLSID:CA8A9780-280D-11CF-A24D-444553540000">
        <param name="SRC" value="http://localhost:9000/1.pdf"> 
    </OBJECT>
</div>
</body>

上述代码可实现web静默打印(页面加载后自动执行),由于我一直也没有找到动态加载组件src属性的方法,所以选择了将页面由后端直接生成代码,并通过response直接回写,在回写过程中由后端对src进行修改达成动态效果。

@GetMapping("/test")
public void test(HttpServletRequest request , HttpServletResponse response) throws IOException {
    response.setContentType("text/html");
    response.setCharacterEncoding("UTF-8");
    PrintWriter out = response.getWriter();
    out.write("<!DOCTYPE html>\n" +
            "<script src=\"https://code.jquery.com/jquery-3.1.1.min.js\"></script>\n" +
            "<script type=\"text/javascript\">\n" +
            "    \n" +
            "function directpdfprint1() {   \n" +
            "    try { \n" +
            "        var prt = document.getElementById(\"ob\");    \n" +
            "        prt.printAllFit(1); \n" +
            "    } catch (e) { \n" +
            "    \talert(\"未安装adobe reader插件,请联系管理员安装!\");  \n" +
            "    }\n" +
            "}\n" +
            "window.onload = function () {\n" +
            "    directpdfprint1() \n" +
            "} \n" +
            "</script>\n" +
            "<head>\n" +
            "\n" +
            "</head>\n" +
            "<body>  \n" +
            "<div>\n" +
            "    <OBJECT id=\"ob\" width=\"0\" height=\"0\" border=\"0\" CLASSID=\"CLSID:CA8A9780-280D-11CF-A24D-444553540000\">\n" +
            "        <param name=\"SRC\" value=\"");
            //业务中可以动态替换30行数据
    out.write("http://localhost:9000/3.pdf");
    out.write("\"> \n" +
            "    </OBJECT>\n" +
            "</div>\n" +
            "</body>\n" +
            "<style type=\"text/css\">\n" +
            "    .one{\n" +
            "        transform:rotate(90dge);\n" +
            "    }\n" +
            "</style>");
    out.flush();

}
	好了,就是这样=。=   
	注意这个只会使用用户本地设置的默认打印机。
	拜拜
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值