如题,页面上有个按钮,点击获取到服务器上的PDF然后无预览直接打印,请问有什么好的实现方式?十分感谢!
异想天开啊,你是要做黑客吗???
为啥这样说呢?
@Result_For: 因为打印是需要客户端的打印机驱动之类的东西滴,客户端有没有这东西,有没有打印机都不知道,js确实有个window.print(),但功能很弱。。。
总是想着替浏览器把客户端的事儿都做了。。。不是异想天开吧。。。
@顾晓北: 老板说可以,物理反驳,下面这段代码是java写的,你看C#是否也支持呢?
借助iText和Adobe Acrobat的Javascript支持,可以实现PDF文档的自动打印(可以做到不显示打印对话框) …… PdfReader reader = new PdfReader(pdfStream); [1] StringBuffer script = new StringBuffer(); [2] script.append(“this.print({bUI: false,bSilent: true,bShrinkToFit: false});”) .append(“\r\nthis.closeDoc();”); ByteArrayOutputStream bos = new ByteArrayOutputStream(pdfStream.length); try { PdfStamper stamp = new PdfStamper(reader, bos); [3] stamp.setViewerPreferences(PdfWriter.HideMenubar | PdfWriter.HideToolbar | PdfWriter.HideWindowUI); stamp.addJavaScript(script.toString()); stamp.close(); } catch (DocumentException e) { logger.error(e.getMessage(), e.getCause()); } return new StreamingResolution(“application/pdf”, new BufferedInputStream(new ByteArrayInputStream(bos.toByteArray()))) ; …… 代码说明: 1、pdfStream是用iText生成的PDF文档字节流 2、script是要加入到PDF文档里的Javascript代码。这段Javascript代码先调用PDF文档对象的print方法,然后用closeDoc方法关闭文档。print方法的参数指定了不要显示打印对话框,参数含义参考Acrobat JavaScript Scripting Reference 3、bos用来保存加入Javascript后的PDF文档字节流,它作为PdfStamper对象的输出流。PdfStamper对象调用addJavaScript方法将Javascript代码加入到PDF文档中。 Web页面嵌入PDF文档:
@Result_For: [三次方懵逼]bos里真的能装进去javascript么。浏览器真能认识这个流么。
@Result_For: 应该是你们老板牛逼吧。。。还Java,浏览器能运行的只有JavaScript。。。额,或许在ie里VBScript也可以???
做出来了可以跟我说一下让我学习一下这么牛逼的技术。。。
http://stackoverflow.com/a/16239785/3762081
參考這個,載入PDF的區塊隱藏即可