我需要使用java backing bean process更改javascript window.print()
命令。
这里,我正在使用Jsf1.2
作为程序化,打印任何网页,
我们使用window.print()。打开一个菜单选择打印机打印页面。
现在我需要使用java bean方法调用来压缩这个过程。但是无论如何它都不适用于我。
我真正需要的是,当我点击网页上的打印按钮时。它直接在选定的打印机上打印(使用PrintServiceLookup.lookupPrintServices
方法在支持bean中完成此打印机选择。此选择适合我。)
这是我的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内容。如果找不到任何内容,这可以是最后一个选项)。然后
从inputhidden传递给bean。但是现在如何使用这个String
打印内容。