2015-10-05 76 views
3

我使用chart.js在我的Rails應用程序中生成圖表,並使用Prawn-pdf生成pdf。 我想將使用chart.js生成的畫布導出爲pdf。導出chart.js畫布到rails-prawn-pdf

chart.js有一個方法toDataUrl()哪個給出base64字符串。 我找不到任何接受base64的pdf格式的方法。 請建議。

謝謝。

function done() 
{ 
    var url_base64 =document.getElementById("myChart").toDataURL("image/png"); 
    $.ajax({ 
     type:'post', 
     url: '/admin/create_graph_to_image', 
     dataType: 'script', 
     data: { string_base64: url_base64 } , 
     success: function (e) { 
      console.log(e); 
     }, 
     error: function (e) { 
      console.log(e); 
     } 
    }); 
} 
+0

我會使用D3.js爲圖表生成基於SVG的元素,並使用Prawn gem生成PDF格式的頁面。 – Dusht

+0

@Dusht是否有任何特定的教程,導致我生成圖形並將它們導出到PDF與D3.js?在此先感謝 – ART

回答

0

chart.js之有一個方法toDataUrl()

toDataUrl是畫布屬性(https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL)。

它以base 64編碼格式返回畫布的圖像表示(默認爲png)。由於Prawn需要圖像路徑,因此您需要將此基本64字符串發送到服務器並將其保存爲文件(請參閱How to save a base64 string as an image using ruby),然後讓Prawn使用保存文件的位置。

+0

它是一個正確的方式來獲取服務器上的圖像,但我所嘗試的是用jQuery ajax發佈base64。但它的響應 **在13ms內完成了500次內部服務器錯誤 RuntimeError - ** – ART

+0

以上是我爲jquery ajax編輯的代碼調用 – ART

+0

好的,我已根據您的指導找到了解決方案。謝謝@potatopeelings 創建圖像文件的正確代碼與上面的jquery ajax一起評論。 – ART

0

以下是我從上面調用jquery ajax的控制器操作。

def create_graph_to_image 
    url = params[:string_base64] 
    png = Base64.decode64(url['data:image/png;base64,'.length .. -1]) 
    File.open('image.png', 'wb') { |f| f.write(png) } 
    respond_to do |format| 
     format.html { render :nothing => true } 
     format.js 
    end 
end