2014-10-02 72 views
2

如何用html(DOM)内容占用html的css styles来创建pdf? HTML有MathJax javascript呈现的公式。我希望pdf能够使用MathJax在浏览器中显示公式。 此外,HTML包含几个图像。
哪个开源java库有助于从html内容创建这样的pdf? 我看着Apache PdfBox,但没有找到解决方案。 解决方案必须是用于商业应用的开源库。html to pdf including MathJax transformation

编辑 DOM内容是在服务器端动态生成的,不会被推送到浏览器。
FlyingSaucer接近我所需要的。但是,这不支持Java脚本,即与MathJax的HTML不能(正确)转换为PDF。

回答

1

有基于WebKit支持JavaScript的各种PDF呈现器。我发现的最好的是PhantomJS的屏幕截图功能。

http://phantomjs.org/screen-capture.html

你必须写一些代码,虽然,确保直到JS处理完后事,你不采取屏幕抓取。


更新
这里是一个非常简单的例子,从标准输入读取HTML并保存为PDF文件保存到磁盘:

// render.js 
var page = new WebPage(); 
page.content = require("system").stdin.read(); 

setTimeout(function(){ 
    page.render('export.pdf'); 
    phantom.exit(0); 
}, 100); // <- wait for JS 

你可以从你的任何服务器端运行时执行该使用,只要它可以执行一个shell。要用静态文件从命令行进行测试,您可以执行:

~/bin/phantomjs render.js < sample.html 
+0

Thnx。 DOM内容是在服务器端动态生成的,不会推送到浏览器。 – 2014-10-02 15:21:57

+0

它不需要浏览器。这是重点。你只需将HTML加入它,它就会给你一个PDF返回 – Tim 2014-10-02 15:24:09

+0

很酷。我将探讨它的Java等价物。我的应用程序运行时是JVM。 (部署到Tomcat的Web应用程序) – 2014-10-02 15:39:46