
标题: 怎么在web页面中,打印一个pdf文件? [打印本页]
	
	作者: admin    时间: 2015-8-13 11:14	     标题: 怎么在web页面中,打印一个pdf文件?	
			有一些报表软件,可以在后台,动态生成一个pdf文件,比如jasperreport,那么,有没有办法,让用户点击责面上的一个按钮,直接在打印机中打印出来呢?答案是可以,使用jatoolsPrinter,方法如下:复制内容到剪贴板
代码:
function printReport()
{
	var url = getPDFUrl(); // 取得报表输出的pdf地址
	document.getElementById("jatoolsPrinter").printDocument(url);
}
function getPDFUrl()
{
   return "a.pdf"  // 给出pdf地址,可以是一个静态pdf文件,也可以动态生成的一个pdf
}
<input type="button" value="打印报表" onClick="printReport()">
<!-- 插入打印控件 -->
<object id="ojatoolsPrinter" codebase="jatoolsPrinter.cab#version=5,4,0,0"
        classid="clsid:B43D3361-D075-4BE2-87FE-057188254255" width="0" height="0">
</object>	
	作者: admin    时间: 2015-8-13 11:30		
			确实方便!,但我机子里有很多打印机,要想指定打印机,不死菜? 呵呵,printDocument的第二个参数,可以帮助到你:复制内容到剪贴板
代码:
function printReport()
{
	var url = getPDFUrl(); // 取得报表输出的pdf地址
	document.getElementById("jatoolsPrinter").printDocument(url,{printer:"pdfFactory"});
}	
	作者: admin    时间: 2015-8-13 11:49		
			各个客户,有可能挂不同的打印机,这样把输出打印机写死在代码里,不太好吧? 那改进一下,多一个下拉框,让控件检索出可用打印机,然后,让用户来选择吧:
 那改进一下,多一个下拉框,让控件检索出可用打印机,然后,让用户来选择吧:复制内容到剪贴板
代码:
function getAvailablePrinters()
{
     var jatoolsPrinter = getJatoolsPrinter();
	 var printer_list = document.getElementById('printer_list');
     var printers = jatoolsPrinter.getPrinters();   // 打印机列表是一个字符串数组
     if(printers)
     {
         for (i=0;i< printers.length;i++)
             printer_list.options[i+1]=new Option(printers[i],printers[i]);
             
         printer_list.options[0].selected = true;
     }
}	
	作者: admin    时间: 2015-8-13 12:06		
			完成效果:
	
		
			 
			
				
					 完整代码:
				
			
			
	
完整代码:复制内容到剪贴板
代码:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script>
function printReport() {
	var printer = document.getElementById('printer_list').value;
	var url = getPDFUrl();
	document.getElementById("jatoolsPrinter").printDocument(url, {
				printer : printer
			});
}
function getPDFUrl() {
	return "a.pdf" // 给出pdf地址,可以是一个静态pdf文件,也可以动态生成的一个pdf
}
function getAvailablePrinters() {
	var printer_list = document.getElementById('printer_list');
	var printers = document.getElementById("jatoolsPrinter").getPrinters(); // 打印机列表是一个字符串数组
	if (printers) {
		for (i = 0; i < printers.length; i++)
			printer_list.options[i + 1] = new Option(printers[i], printers[i]);
		printer_list.options[0].selected = true;
	}
}
</script>
</head>
<body onload='getAvailablePrinters()' style='padding:30px;'>
<select id="printer_list">
    <option>--默认--</option>
</select>
<input type="button" value="打印pdf报表" onClick="printReport()">
<object id="jatoolsPrinter" codebase="jatoolsPrinter.cab#version=5,4,0,0"
        classid="clsid:B43D3361-D075-4BE2-87FE-057188254255" width="0" height="0">
</object>
</body>
</html>			
 图片附件:  QQ图片20150813120412.png (2015-8-13 12:06, 22.95 KB) / 该附件被下载次数 10820
							图片附件:  QQ图片20150813120412.png (2015-8-13 12:06, 22.95 KB) / 该附件被下载次数 10820
http://bwtvl16d.jatools.com/attachment.php?aid=768&k=a2df6569949b266b4dbcc69b6ca0f15b&t=1761886049				
 
								
 附件:  printpdf.html (2015-8-13 12:06, 1.22 KB) / 该附件被下载次数 17496
							附件:  printpdf.html (2015-8-13 12:06, 1.22 KB) / 该附件被下载次数 17496
http://bwtvl16d.jatools.com/attachment.php?aid=769&k=0277d59240da81c987e2a622b4b6602c&t=1761886049						
	作者: xue_0521    时间: 2016-2-5 13:44	     标题: 谢谢	
			 
  
  
	
	作者: xue_0521    时间: 2016-2-5 13:57		
			document.getElementById("jatoolsPrinter").getPrinters()  提示对象不支持该属性或方法
| 欢迎光临 杰表技术论坛  (http://bwtvl16d.jatools.com/) | Powered by Discuz! 6.1.0 |