我正在使用Java开发Web应用程序,我必须在客户端打印机上单击按钮时打印报告。如何实施?如何从客户端显示打印机???
我用:
PrintService[] printers =
PrintServiceLookup.lookupPrintServices(null, null);
但这是在服务器端。
答案 0 :(得分:3)
由于您的要求不明确。我不确定您想要什么,但是对于打印,您可以使用此window.print()
function myFunction() {
window.print();
}
<p>Click To print.</p>
<button onclick="myFunction()">Click</button>
修改强> 如果您想打印颗粒元素内容,可以使用此功能:
function myPrint(data)
{
var testPage = window.open('', 'Test Page', 'height=500,width=500');
testPage.document.write('<html><head><title>Test Page</title>');
testPage.document.write('</head><body >');
testPage.document.write(data);
testPage.document.write('</body></html>');
testPage.document.close();
testPage.focus();
testPage.print();
testPage.close();
return ;
}
答案 1 :(得分:1)
您必须在客户端页面上使用javascript。
window.print()
https://developer.mozilla.org/en-US/docs/Web/API/Window/print
如果您想尝试applet方法,请查看this answer
出于安全原因,您不能这样做。如果可以的话,小程序会 已经因为打印10页以上的'特殊而臭名昭着 提供'当你访问不道德的网站。
OTOH,如果客户愿意接受applet的一个提示 启动时,您可以对代码进行数字签名。
使用来自JNLP API的PrintService也可以获得类似的结果,而无需签名的小程序。
与以下示例相似
import javax.jnlp.*;
...
PrintService ps;
try {
ps = (PrintService)ServiceManager.lookup("javax.jnlp.PrintService");
} catch (UnavailableServiceException e) {
ps = null;
}
if (ps != null) {
try {
// get the default PageFormat
PageFormat pf = ps.getDefaultPage();
// ask the user to customize the PageFormat
PageFormat newPf = ps.showPageFormatDialog(pf);
// print the document with the PageFormat above
ps.print(new DocToPrint());
} catch (Exception e) {
e.printStackTrace();
}
}
// Code to construct the Printable Document
class DocToPrint implements Printable {
public int print(Graphics g, PageFormat pageformat, int PageIndex){
// code to generate what you want to print
}
}