在 Java EE 环境中,我想加载一个XML
和XSL
文件,将输出呈现到浏览器窗口,并将呈现的页面保存为 PDF。
我想以编程方式完成这一切。我正在寻找 HtmlUnit 以用作无头浏览器。这部分似乎有效,但 HtmlUnit 是否有任何 API 来调用“打印”函数或类似函数来持久化呈现的输出?我正在考虑某种方式将它与 iText 链接起来。
在 Java EE 环境中,我想加载一个XML
和XSL
文件,将输出呈现到浏览器窗口,并将呈现的页面保存为 PDF。
我想以编程方式完成这一切。我正在寻找 HtmlUnit 以用作无头浏览器。这部分似乎有效,但 HtmlUnit 是否有任何 API 来调用“打印”函数或类似函数来持久化呈现的输出?我正在考虑某种方式将它与 iText 链接起来。
我建议尝试飞碟,在这种情况下基本上是启用 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();
如果您使用 Java 进行报告,我强烈建议您使用Jasper Reports,它相对易于使用,您可以以图形方式设计报告,它可以将 XML 作为输入并为您提供多种格式的报告(包括 PDF)。