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

2024-01-02

我需要改变JavaScriptwindow.print()使用 java backing bean 进程的命令。

这里,我使用的是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:

  • 我可以通过以下方式获取页面内容document.documentElement.outerHTML在 js(实际上我不想使用js来传递html内容。如果没有找到任何东西,这可以是最后一个选项)。然后 将其从隐藏输入传递给 bean。但现在如何使用这个String打印内容。

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐