3

我目前正在尝试从带有 raphael 生成的图表的 html 页面生成 pdf。

它适用于所有浏览器,除了 raphael 使用 vml 的 Internet Explorer < 9。

我正在使用 wkhtmltopdf 转换页面,它使用 webkit 来呈现页面,因此在使用 IE 时它不支持 vml。

有没有办法强制 Raphael 在 IE 中渲染 svg 而不是 vml?我知道它不会显示,但我要做的是在 vml 中渲染一次,在 svg 中渲染第二次。

我已经看到我可以设置属性

Raphael.type = "SVG";
Raphael.svg = true; 

但在对象实例化后它不起作用。

4

3 回答 3

2

我也是希望 Internet Explorer 生成 SVG 的人之一。它不必显示,只需发送到服务器。所以我调查了这个:

你可以强迫 Raphael 认为它应该生成一个 SVG 这样做:

    var rProto, paper;

    rProto = Raphael.prototype.raphael;
    rProto.svg = true;
    rProto.vml = false;
    rProto.type = 'SVG';

    var paper = Raphael(...);

但是,Raphael 现在会抛出大量错误,因为 Internet Explorer 将遵循现代浏览器的代码路径,这显然行不通。我查看了这些错误,它们似乎并不容易修复或解决。

于 2012-02-03T16:38:44.057 回答
0

根据这个线程(虽然有点旧),没有办法让 IE 接受 SVG 元素:

http://groups.google.com/group/raphaeljs/browse_thread/thread/5a05193c0334bda7/25776b86e78d3c2f?lnk=gst&q=force+svg#25776b86e78d3c2f

但是,我不明白您所说的“它正在使用 webkit,因此在使用 IE 时它不支持 VML ”是什么意思。据我所知,WebKit 是一个不同的渲染器,它与 IE 没有任何关系。也许如果您在问题上进一步发展,我们可以帮助您找到解决方案。

于 2011-08-30T15:33:16.293 回答
0

许多命令R.vml也参考了尝试设置,

Raphael.vml = false;
于 2011-08-26T20:58:04.653 回答