我正在进行一个项目,一个收入管理系统,由于某些原因,它需要在WebView上显示一些报告并打印,而设计概念要求WebView变得透明。我能够在这里解决WebView透明问题:Transparent background in the WebView in JavaFX对“ Harry Hur ”1的信用,因为我无法通过FX CSS实现这一点,而且我也能够在WebView上显示我的报告,如下所示:
代码:
WebView reportView = new WebView();
engine = reportView.getEngine();
engine.setUserAgent("Mozilla/5.0 (Linux; Android 4.1.1; HTC One X Build/JRO03C) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31");
//document property listener to make my webview transparent whenever a new document is loaded in
engine.documentProperty().addListener((ObservableValue<? extends Document> observable, Document oldValue, Document newValue) -> {
try{
// Use reflection to retrieve the WebEngine's private 'page' field.
Field f = engine.getClass().getDeclaredField("page");
f.setAccessible(true);
com.sun.webkit.WebPage page = (com.sun.webkit.WebPage) f.get(engine);
page.setBackgroundColor((new java.awt.Color(0, 0, 0, 0)).getRGB());
}catch(Exception ex){
ex.printStackTrace();
}
});
//enables javascript on the webengine after load
engine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
@Override
public void changed(ObservableValue ov, Worker.State oldState, Worker.State newState) {
if(newState == Worker.State.SUCCEEDED) {
System.out.println("complete load.");
try {
engine.setJavaScriptEnabled(true);
} catch(Exception ex){
ex.printStackTrace();
}
}
}
});
engine.loadContent("<body style='background : rgba(0,0,0,0);'>My Html Content...</body>");
结果 Transparent WebView with content loaded onto it
...但问题是,当我尝试打印时,它在纸张上打印出一个深色的背景矩形图像,我想纸上的黑色部分是包含报告的html页面。以下是显示:
打印代码:
PrinterJob job = PrinterJob.createPrinterJob();
if (job != null && job.showPrintDialog(null) {
engine.print(job);
job.endJob();
}
打印输出: 因为我是新来的并且没有达到10个声誉我无法提供打印输出图像链接但是该帖子无论如何解释了它。
但是当我尝试评论使WebView透明的代码时,它会使WebView保持其默认背景颜色(白色)并将报告文本颜色更改为黑色,它会正常打印到纸张上,但实际上并不是它呈现的方式用css。我的风格使用“Segoe UI Light”和“Segoe UI Bold”呈现文本字体,但它以“Times New Roman”字体和相同的字体大小打印出整个内容:下面是显示:
结果: White background WebView with blac text content loaded into it
打印输出: 因为我是新来的并且没有达到10个声誉我无法提供打印输出图像链接但是该帖子无论如何解释了它。
问题是:
请问有没有办法让我的WebView透明并打印WebEngine,没有背景渲染打印输出就像用css设置样式一样?如果有人能帮助我,我会很感激,因为我在JavaFX上只有8个月的经验。
仍然在打印时,还需要一些报告以常规方式显示(TableView)。我已经应用了一些在线帮助(关于如何打印节点),但我认为它没有为我提供问题的确切解决方案。请有人帮我一些代码,这些代码可以帮助我打印一个TableView,即使它过流也可以打印整个数据,即使是像Java Swing Table那样不在视图中的数据?
< / LI> 醇>