2013-10-09 30 views
5

我试图将html页面转换为PDF。该转换工作正常与PhantomJS,然而,phantomjs似乎并不支持CSS3 columnsPhantomjs是否支持HTML到PDF转换的CSS3列?

我跑的命令(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

非常感谢

+0

好奇,如果你发现任何支持列的东西。我碰到类似的问题,虽然wkhtmltopdf做得很好,但我仍然希望有专栏支持。 – MikeTheReader

+0

@ Dante617不支持,没有什么是开源支持CSS3的列。我试图幻影JS和wkhtmltopdf无济于事。两个发电机都是非常好的库。速度方面,幻影略胜一筹。 – singh1469

+0

谢谢。是的,Phantom JS也是我最终选择的,因为它对float有很好的支持,我只是用它来模仿列。 – MikeTheReader

回答

3

我相信,在其PhantomJs可能依赖WebKit的版本没有实现CSS3列,虽然各大WebKit浏览器(Safari和Chrome)都这样做。此链接

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

而这个链接

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

会流下尽可能轻,因为这个主题,据我所知。

+0

我来到这个非常结论。非常感谢。 – singh1469

+0

为此问题投票:https://github.com/ariya/phantomjs/issues/11821。 “解决方法”是先转换为图像 – Ryan

2

我和@Stolli得出了同样的结论。但作为解决方法,我做了以下操作:

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

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

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