java – 如何使用浏览器(chrome/firefox)HTML/CSS/JS渲染引擎来生成PDF?

有很好的项目从html / css / js文件生成pdf

> http://wkhtmltopdf.org/(开源)
> https://code.google.com/p/flying-saucer/(开源)
> http://cssbox.sourceforge.net/(不一定是直接pdf生成)
> http://phantomjs.org/(开源允许pdf输出)
> http://www.princexml.com/(comercial但手中最好的一个在那里)

我想编程控制chrome或firefox浏览器(因为它们都是跨平台的),以使它们加载网页,运行脚本和样式页面,并生成一个pdf文件进行打印。

但是如何以自动的方式控制浏览器,以便我可以做一些事情

render-to-pdf file-to-render.html out.pdf

我可以通过浏览页面手动进行此作业,然后将其打印到pdf中,并在pdf文件上获得准确的100%规范兼容的html / css / js页面。即使在浏览器中的配置选项中也可以在pdf中省略url标题。但是,再次,如何开始尝试自动化这个过程?

我想在服务器端自动化,打开浏览器,导航到页面,并使用浏览器渲染页面生成pdf。

我做了很多研究,我只是不知道如何做出正确的问题。我想以编程方式控制浏览器,也许像硒那样,但是我将网页导出为PDF(因此使用浏览器的渲染功能来生成好的pdf)

最佳答案
我不是专家,但是PhamtomJS似乎是这个工作的正确工具。我不知道它在下面使用什么无头浏览器(我猜这是铬/铬)

var page = require('webpage').create();
page.open('http://github.com/', function() {
     var s = page.evaluate(function() {
         var body = document.body,
             html = document.documentElement;

        var height = Math.max( body.scrollHeight, body.offsetHeight, 
            html.clientHeight, html.scrollHeight, html.offsetHeight );
        var width = Math.max( body.scrollWidth, body.offsetWidth, 
            html.clientWidth, html.scrollWidth, html.offsetWidth );
        return {width: width, height: height}
    });

    console.log(JSON.stringify(s));

    // so it fit ins a single page
    page.paperSize = {
        width: "1980px",
        height: s.height + "px",
        margin: {
            top: '50px',
            left: '20px'
        }
    };

    page.render('github.pdf');
    phantom.exit();
});

希望它有帮助。

转载注明原文:java – 如何使用浏览器(chrome/firefox)HTML/CSS/JS渲染引擎来生成PDF? - 代码日志