2015-10-02 63 views
0

我有使用D3庫生成的SVG圖像,它們看起來不錯。問題是,addSVG不能使用它們。我證實'常規'SVG的工作,我可以做基本的形狀,筆畫,顏色填充。有沒有辦法讓模式在那裏?有沒有辦法使用addSVG爲jsPDF使用模式/紋理?

理想情況下,我可以擴展addSVG來處理dataURIs,或者可以使用模式填充來構建CSS嗎?

如果這不起作用,那麼可能是一種解析SVG XML字符串的方法嗎?

如果不是其中之一,有沒有辦法在'常規'SVG中創建一些模式來代替?也許有一個比D3更簡單的現有庫?我其實不需要太多。

編輯:值得一提的是,Node.js不是一個選項,外部服務器資源也不是真正的選項。我正在將基於服務器的內部SVG保存到PNG轉換器,以保證最後一次回退。另外,典型的客戶端SVG到PNG轉換也是不行的,我必須支持IE11,並且我無法繞過安全錯誤canvas.toDataURL拋出(我不認爲這是可能的)。

編輯:addSVG是非常基本的,不支持模式和其他花哨的比特。我能夠使用canvg和addImage作爲解決方法。鏈接的文章在答案不適用於IE11。

回答

0

看看addSVG()的代碼,我發現它只對SVG有非常基本的支持。它僅支持<path>元素,它們必須位於SVG的頂層。另外,它不支持改變路徑顏色,它只允許'c'和'l'路徑命令。

因此,對您的問題的簡單答案是「否」。 :/

假設您不想編寫自己的SVG轉換器(並且沒有其他插件),那麼您可能不得不自己將SVG轉換爲位圖並插入它。

How to converted SVG Files into PDF in JSPDF using javascript

+0

不工作。 Canvas.toDataUrl在IE中不起作用。我已經不幸地讀過那篇文章。這是非常有用的信息,謝謝。 – nighliber