6

我正在尝试将 html 页面转换为 PDF。PhantomJS 的转换工作正常,但是,phantomjs 似乎不支持CSS3 列

我正在运行的命令(html->pdf)

phantomjs.exe examples/rasterize.js http://davidwalsh.name/demo/css-columns.php sample.pdf

生成的 PDF 不支持 CSS 列样式,而是显示垂直的项目列表。

但是,运行以下命令来转换html->image 确实遵循 CSS3 Columns 样式

phantomjs.exe examples/rasterize.js http://davidwalsh.name/demo/css-columns.php sample.png

有人可以确认这是预期的行为吗?

顺便说一句,我尝试过使用wkhtmltopdf但这确实/不会支持 CSS Columns

非常感谢

4

3 回答 3

3

我相信 PhantomJs 所依赖的 webkit 版本可能没有实现 CSS3 列,尽管主要的 webkit 浏览器(Safari 和 Chrome)都实现了。这个链接

https://github.com/ariya/phantomjs/wiki/Supported-Web-Standards

和这个链接

http://trac.webkit.org/wiki/QtWebKitFeatures22

AFAIK 将尽可能多地阐明这个主题。

于 2014-01-22T00:22:02.137 回答
2

我得出与@Stolli 相同的结论。但作为一种解决方法,我确实做了以下事情:

使用 CSS3 列并使用 wkhtmltopdf 库附带的 wkhtmltoimage 将 html 转换为图像。这将保持 CSS3 列结构。

然后将生成的图像嵌入到 html 字符串中,例如: <html><img src='path/to/my/file'/></html>并使用 wkhtmltopdf 转换为 PDF。

显然,这里有很多依赖关系,所以它不适合生产环境。

于 2014-02-06T16:29:18.563 回答
0

不,我不相信它直到今天,但另一种方法是使用https://github.com/peterdemartini/html5-to-pdf它使用 Nightmare 浏览器而不是幻像并支持 CSS 列,我只是尝试了一下.

于 2017-08-24T15:56:21.150 回答