在jsf中从java bean打印打印机上的当前html页面

时间:2013-04-04 12:16:13

标签: java jsf servlets printing jsf-1.2

我需要使用java backing bean process更改javascript window.print()命令。

这里,我正在使用Jsf1.2

作为程序化,打印任何网页,

我们使用window.print()。打开一个菜单选择打印机打印页面。

现在我需要使用java bean方法调用来压缩这个过程。但是无论如何它都不适用于我。

我真正需要的是,当我点击网页上的打印按钮时。它直接在选定的打印机上打印(使用PrintServiceLookup.lookupPrintServices方法在支持bean中完成此打印机选择。此选择适合我。)

这是我的question是如何在点击按钮时在java bean中获取我的整页内容以进行打印。

还有一个问题,

当我使用下面的代码进行简单的字符串打印时,它在代码中显示没有错误,在编译时和运行时但在打印机上打印时显示错误(在图像下方)。我从在线研究中得到这个代码,我正在使用网络打印机。

enter image description here

打印代码::

try{
            System.out.println("getHtmlData = "+getHtmlData());
            PrintService[] printServices;
            String testData = "Hello World my first java print";
            InputStream is = new ByteArrayInputStream(testData.getBytes());
            DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
            PrintServiceAttributeSet printServiceAttributeSet = new HashPrintServiceAttributeSet();
            System.out.println("getPrinter() = "+getPrinter()); // here i give my printer name
            printServiceAttributeSet.add(new PrinterName(getPrinter(), null));       
            printServices = PrintServiceLookup.lookupPrintServices(null, printServiceAttributeSet); 
            System.out.println("printServices len = "+printServices.length+" ::: name = "+printServices[0].getName()); ///to verify its my selected printer or not
            PrintService service = printServices[0];
            DocFlavor[] flavors = service.getSupportedDocFlavors() ;
            //display : selected printers flavors
            for (int i = 0; i < flavors.length; i++) {
                 System.out.println("\t" +flavors[i]);
            }
            Doc doc= new SimpleDoc(is, flavor, null);
            DocPrintJob job = service.createPrintJob();
            //PrintJobWatcher pjDone = new PrintJobWatcher(job);

            // Print it
            job.print(doc, null);
            is.close();
            System.out.println("print Done");  
        }catch (Exception e) {
            System.out.println("error 1 "+e.toString());
           e.printStackTrace();
        }

我知道这听起来像是间谍程序,但我需要从java bean打印页面。

更新1:

  • 我可以使用document.documentElement.outerHTML获取页面内容 js(实际上我不想使用js来传递html内容。如果找不到任何内容,这可以是最后一个选项)。然后 从inputhidden传递给bean。但是现在如何使用这个String 打印内容。

0 个答案:

没有答案