WebClient webClient = new WebClient();
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setJavaScriptEnabled(false);
webClient.getOptions().setCssEnabled(true);
webClient.getOptions().setDownloadImages(true);
Page page = webClient.getPage("http://www.example.com");
WebResponse response = page.getWebResponse();
我应该如何使用response
呈现图片或pdf?
我找到了几个问题和几个“做到这一点”的图书馆。
但我无法在其中任何一个,通过http请求的有效方式,将返回转换为图像或pdf,自动下载并包括所有css和图像外部链接。
我不关心格式(PNG或PDF),只要输出类似于浏览器呈现的内容。
答案 0 :(得分:1)
您有两种选择:
1)继续使用htmlUnit,使用
获取响应的HTMLpage.asXml();
然后使用像iTextRenderer这样的第三方:https://stackoverflow.com/a/17826418/3650731
2)或者您可以使用Headless Chrome并使用它截取屏幕截图。在大多数情况下,输出应该比使用htmlUnit + iText更好,因为htmlUnit不会将Javascript /现代Html5 / css3渲染为无头镀铬。
以下是我撰写的关于Headless Chrome with Java的博文:https://ksah.in/introduction-to-chrome-headless/
以下是关于如何使用Headless chrome截取屏幕截图的问答:https://stackoverflow.com/a/43388989/3650731
答案 1 :(得分:0)
HtmlUnit是一个无头浏览器,最终这意味着根本没有页面渲染/布局。
根据您的使用情况,您可以将页面的XHtml转储写入磁盘,并注意转储所需的依赖项。这就是我为WETATOR所做的事(www.wetator.org)。如果您愿意,可以免费获取源代码(也许您可以从https://wetator.repositoryhosting.com/trac/wetator_wetator/browser/trunk/wetator/src/org/wetator/backend/htmlunit/XHtmlOutputter.java开始)