2011-08-26 135 views
3

我目前正在嘗試使用raphael生成的圖表從html頁面生成pdf。如何強制Raphael JS輸出爲svg

它適用於每個瀏覽器,除了Internet Explorer < 9,其中raphael使用vml。

我正在使用wkhtmltopdf轉換頁面,它使用webkit來呈現頁面,因此它在使用IE時不支持vml。

有沒有辦法強制Raphael在IE中渲染svg而不是vml? 我知道它不會顯示,但我要做的是在vml中渲染一次,在svg中再次渲染一次。

我已經看到了,我可以設置的屬性

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

但對象已經被實例化後,這是行不通的。

回答

0

很多命令的參考R.vml嘗試設置,以及,

Raphael.vml = false; 
+0

不幸的是,這是行不通的。一旦對象被實例化,似乎沒有什麼可以改變它。 – Moop

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沒有任何關係。也許如果您在問題上進一步發展,我們可以幫助您找到解決方案。

2

我也是那些希望Internet Explorer生成SVG的人之一。它不必顯示,只需發送到服務器。所以,我看着這樣的:

您可以強制拉斐爾以爲它應該產生一個SVG這樣做:

var rProto, paper; 

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

    var paper = Raphael(...); 

然而,拉斐爾現在拋出噸的錯誤,因爲Internet Explorer將按照現代的代碼路徑瀏覽器,這顯然不起作用。我查看了這些錯誤,並且他們似乎無法修復或解決問題。