在客户端打印机上打印

时间:2016-03-30 09:49:21

标签: javascript java applet

我正在使用Java开发Web应用程序,我必须在客户端打印机上单击按钮时打印报告。如何实施?如何从客户端显示打印机???

我用:

PrintService[] printers =
PrintServiceLookup.lookupPrintServices(null, null);

但这是在服务器端。

2 个答案:

答案 0 :(得分:3)

由于您的要求不明确。我不确定您想要什么,但是对于打印,您可以使用此window.print()

function myFunction() {
    window.print();
}
<p>Click To print.</p>

<button onclick="myFunction()">Click</button>

您可以详细了解此here(简单)和here(已解释)。

修改 如果您想打印颗粒元素内容,可以使用此功能:

 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   
        }
    }