2

我需要window.print()用 java 支持 bean 进程更改 javascript 命令。

在这里,我使用的是 Jsf1.2

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

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

现在我需要用java bean方法调用压缩这个过程。但无论如何它对我不起作用。

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

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

这里还有一个问题,

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

在此处输入图像描述

打印代码::

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:

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

0 回答 0