如何从浏览器打印PDF

在Web应用程序中,是否可以强制在客户端上打印PDF文件? 如果浏览器被configuration为在窗口内打开PDF,我想调用window.print()会工作,但是一些浏览器(如我的)被configuration为从外部打开PDF。

谷歌文档的方式是通过embeddedJavaScript到PDF告诉Acrobat Reader或任何其他兼容的读者打印它。

你将需要一个PDF工具包来做到这一点随机PDF。

 <html> <script language="javascript"> timerID = setTimeout("exPDF.print();", 1000); </script> <body> <object id="exPDF" type="application/pdf" data="111.pdf" width="100%" height="500"/> </body> </html> 

你可以设置一个http头到application / pdf,然后用javascript打开一个新的窗口并打印。 但谁会真的这样做? 我的意思是现在来吧。

与taeyoung的build议类似,你可以使用iframe来渲染pdf,然后使用contentWindow.print();

你的意思是你想强制文件被发送到打印机? 您是否正在考虑意外后果的法律 – 用户的设备没有连接到打印机? 可能是黑莓手机,可能是无线上的一台笔记本电脑。 如果用户不希望它转到默认打印机,该怎么办?

您无法使用Javascript直接从浏览器打印PDF文档。 Javascript函数window.print()使用浏览器打印function,这不是你所需要的。 您可以通过Java Web Start实现您的打印目标。 把你的PDF文档直接放到jnlp中,这样你就可以运行一个接收原始PDF文档的Java程序作为参数。 现在你已经在系统中运行,不再在浏览器中,所以你可以通过JAVA API直接与打印驱动程序对接。 这看起来很简单,但实际上并不是因为JAVA打印API不接受文件作为input,而是接受实现ava.awt.print.Pageable接口的特定数据结构。

在www.pdfprint.it上存在一个Web服务,为您完成所有工作。 这里是从官方文档中摘取的一个片段。

 <?php // 1. GET the jnlp file with curl $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.pdfprint.it/printPdf?auth=XXXX"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //return the transfer as a string $jnlp = curl_exec($ch); curl_close($ch); $pdfDoc ="example.pdf"; //2. put in the jnlp your PDF document base64 encoded $jnlp = str_replace("####", base64_encode(file_get_contents($pdfDoc)),$jnlp); //3. echo the jnlp file header('Content-type: application/x-java-jnlp-file'); echo $jnlp; 

你只需要得到jnlp文件,把你的PDF文件,并将jnlp发送到浏览器。 运行打印的JAVA程序将直接从Web服务下载。 您还可以将一些打印选项设置为副本,边等