HtmlUnit并将页面保存为PDF

时间:2013-03-11 18:34:50

标签: pdf-generation reporting htmlunit headless-browser

在Java EE环境中,我想加载XMLXSL文件,将输出呈现到浏览器窗口,并将呈现的页面保存为PDF。

我想以编程方式完成所有操作。我在看HtmlUnit作为无头浏览器使用。这部分似乎有效,但HtmlUnit有没有任何API来调用“print”函数或类似的函数来持久化渲染输出?我想到了用iText链接它的一些方法。

2 个答案:

答案 0 :(得分:3)

我建议尝试flying-saucer,在这种情况下基本上是支持CSS / XHTML的iText包装。

我在下面写了一个简单的例子。不要忘记HtmlUnit和飞碟的必要依赖。

//Set up a new WebClient using your favourite settings
WebClient webClient = new WebClient();

//Fetch page
HtmlPage page = webClient.getPage("url-to-target.resource");

//Set PDF target output file
String outputFile = "firstdoc.pdf";
OutputStream os = new FileOutputStream(outputFile);

//Set up flying-saucer IText based renderer 
ITextRenderer renderer = new ITextRenderer();

//Create PDF
renderer.setDocumentFromString(page.asXml();
renderer.layout();
renderer.createPDF(os);

os.close();

答案 1 :(得分:-1)

如果您正在使用Java进行报告,我强烈建议您使用Jasper Reports,它相对容易使用,您可以以图形方式设计报告,它可以将XML作为输入并为您提供多种格式的报告(包括PDF)。