gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 20:48:03 26 4
gpt4 key购买 nike

有一些不错的项目可以从 html/css/js 文件生成 pdf

  1. http://wkhtmltopdf.org/ (开源)
  2. https://code.google.com/p/flying-saucer/ (开源)
  3. http://cssbox.sourceforge.net/ (不一定是直接生成 pdf)
  4. http://phantomjs.org/ (开源允许 pdf 输出)
  5. http://www.princexml.com/ (商业化,但最好的一个)
  6. https://thepdfapi.com/
  7. 的 html 吐出 pdf 的 chrome 修改

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

但是我如何开始以自动方式控制浏览器,以便我可以做类似的事情

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

我可以通过浏览页面然后将其打印为 pdf 轻松地手动完成这项工作,并且我在 pdf 文件上获得了一个准确的、100% 符合规范的呈现 html/css/js 页面。通过浏览器中的配置选项,甚至可以在 pdf 中省略 url header 。但同样,我该如何开始尝试自动化这个过程呢?

我想在服务器端自动化,打开浏览器,导航到一个页面,并使用浏览器呈现的页面生成 pdf。

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

最佳答案

我不是专家,但 PhamtomJS 似乎是适合这项工作的工具。我不确定它在下面使用什么 headless 浏览器(我猜它是 chrome/chromium)

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?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25574082/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com