java web服务中为什么PrinterJob设置打印机的时候设置不了局域网里的打印机?
PrinterJob prnJob = PrinterJob.getPrinterJob();
prnJob.setPrintService("获取的网络打印机");//这里执行不成功
主要是如果我只是单纯的写一个Java main来设置就可以,用java web返回命令设置就会卡着执行不下去,原来以为是Tomcat问题,但是换jetty运行也是不行?
javaweb? PrinterJob 是AWT里面的、这里所要调用打印机是客户端的、这个不可行。
可以通过javascript来实现打印:
<div id="order"> //需要打印的数据 </div> <script language="javascript"> //打印方法 function doPrint() { //打开一个新的窗体 var newWin = window.open('about:blank',"",""); //取得id为"order"的<div id="order"></div>之间的内容 var titleHTML = document.getElementById("order").innerHTML; //将取得的打印内容放入新窗体 newWin.document.write(titleHTML); //刷新新窗体 newWin.document.location.reload(); //调用打印功能 newWin.print(); //打印完毕自动关闭新窗体 newWin.close(); } </script>
网页打印可以
问题是有一个需求是要在不打开页面的情况下,通过程序选择打印机进行批量打印,现在在设置打印机为局域网打印机的时候出了问题。
@wwwqqeew: 现在在设置打印机为局域网打印机的时候出了问题?你还是没明白我的意思?不要尝试PrinterJob prnJob = PrinterJob.getPrinterJob();AWT包是c/s里面常用,你想想javaweb端的服务器调用PrinterJob的时候你那里设置的是服务器端的打印机、而你这里打印是客户端发起然后调用客户端的打印机打印、
javascript就可以通过客户端调用起网络打印机、只要你的客户端配置了打印机、至于你说的批量和不打开页面的情况下,你可以通过中间一个页面缓冲完成不打开页面打印、
@Beyond-bit: “你可以通过中间一个页面缓冲完成不打开页面打印”,这个提议很好
但是还有一个问题是,有多台在局域网内可使用的打印机,要在系统里设置对于某一类的信息,只能用某一台打印机来打印,就需要提前设置好打印机,再进行打印。设置打印机这个,目前我只找到了IE的插件一个实现的方式,但是在其他浏览器里就不能用了(系统要求的浏览器是FireFox),所以我才想能用其他方式来实现设置打印机这个。
@wwwqqeew: 目前我只找到了IE的插件一个实现的方式?系统要求的浏览器是FireFox?
firefox插件很多,应该有类似于设置的插件,安装一个即可、但是这有一个弊端就是你的客户端使用firefox的用户都要安装这个插件才可以设置打印机,否则可能就是默认的了、
我觉得这种做法还不如让其打印的时候在计算机上自己选择默认的打印机、插件这个麻烦而且限制了用户群、