有一些报表软件,可以在后台,动态生成一个pdf文件,比如jasperreport,那么,有没有办法,让用户点击责面上的一个按钮,直接在打印机中打印出来呢?答案是可以,使用jatoolsPrinter,代码如下:
<a target=_blank href="http://bbs.jatools.com/redirect.php?tid=1732&goto=lastpost#lastpost" style="word-wrap: break-word; color: rgb(0, 0, 0); text-decoration: none; font-family: Helvetica, Arial, sans-serif; font-size: 13.3333339691162px; line-height: 21.3333339691162px;"><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 οnlοad='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>
</a>
完成后的效果: