2016-11-24 74 views
1

我正在使用TCPDF php庫將我的svg轉換爲pdf。我的svg使用body,div和span的foreignObject來顯示文本中的一些註釋。 當我在瀏覽器中打開SVG時,它看起來很好,但是當我使用TCPDF將其轉換爲PDF時,我得到的空白空間中我的文本應該與獲取灰色背景一起顯示。來自SVG的外來對象未被轉換並以TCPDF出現在PDF中

+0

歡迎來到Stackoverflow。請閱讀以下鏈接以改善您的問題:[Tour](http://stackoverflow.com/tour)| [如何問](http://stackoverflow.com/help/how-to-ask)| [最小,完整和可驗證的例子](http://stackoverflow.com/help/mcve) – Tom

回答

1

如果您在SVG中使用<foreignObject>,那麼您需要一個轉換器,它不僅呈現SVG,還呈現HTML。也許有人銷售支持HTML的SVG轉換器,但我不知道其中之一。

SVG標準提供了<foreignObject>元素,以便用戶可以將非SVG內容嵌入到SVG中。 SVG標準不要求SVG渲染器支持可能放置在foreignObject中的任何特定類型的內容。

瀏覽器在外部對象中支持HTML的事實顯然純粹是因爲它們是HTML查看器。

除了避免使用foreignObject外,沒有明確而明顯的解決方法。

如果您不關心SVG內容在轉換爲PDF時保留爲矢量,那麼您可以使用類似phantomjs的東西將SVG轉換爲位圖。然後將該位圖轉換爲PDF。這不是一個很好的解決方案。

+0

我在Brower中沒有遇到任何問題,它的瀏覽器工作正常,但是當我在TCPDF中使用SVG時,foreignObject元素沒有出現。是的,我需要SVG留在矢量形式。我使用$ pdf-> ImageSVG($ file ='images/tux.svg',$ x = 30,$ y = 100,$ w ='',$ h = 100,$ link ='',$ align = '',$ palign ='',$ border = 0,$ fitonpage = false);用於從TCPDF添加PDF格式的svg –

+0

祝您找到支持HTML的PDF格式的SVG轉換器。你可能不得不認真考慮改變你的SVG,使它們不使用''。 –

+0

@PaulLeBeau請看看「draw.io」是如何工作的。他們絕對使用svg中的foreignObject來顯示文本。然後使用一些服務器端轉換器將此svg轉換爲pdf。他們使用什麼轉換器? – krispo