【问题标题】:Does Phantomjs support CSS3 Columns for HTML to PDF conversion?Phantomjs 是否支持用于 HTML 到 PDF 转换的 CSS3 列?
【发布时间】:2013-10-09 15:14:08
【问题描述】:

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

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

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

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

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

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

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

顺便说一句,我尝试过使用wkhtmltopdf,但这个does/will not be supporting CSS Columns

非常感谢

【问题讨论】:

  • 好奇你是否曾发现任何支持列的东西。我遇到了类似的问题,虽然 wkhtmltopdf 做得很好,但我仍然希望有列支持。
  • @Dante617 不,没有任何开源支持 CSS3 列。我尝试了 Phantom JS 和 wkhtmltopdf 无济于事。两个生成器都是非常好的库。 Phantom 在速度方面略胜一筹。
  • 谢谢。是的,我最终也使用了 Phantom JS,因为它对浮动有很好的支持,我只是用它来模拟列。

标签: css phantomjs


【解决方案1】:

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

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

还有这个链接

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

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

【讨论】:

【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2020-12-03
      • 1970-01-01
      • 2015-02-23
      • 1970-01-01
      • 2023-03-22
      • 2015-03-02
      • 1970-01-01
      • 2013-03-31
      • 2015-09-22
      相关资源
      最近更新 更多