【问题标题】:Export chart.js canvas to prawn-pdf in rails在rails中将chart.js画布导出为prawn-pdf
【发布时间】:2016-01-01 23:59:57
【问题描述】:

我使用chart.js 在我的 Rails 应用程序中生成图表,使用 Prawn-pdf 生成 pdf。 我想将使用chart.js 生成的画布导出为pdf。

chart.js 有一个方法toDataUrl(),它提供base64 字符串。 我在 prawn-pdf 中找不到任何接受base64 的方法。 请提出建议。

谢谢。

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);
        }
    });
}

【问题讨论】:

  • 我将使用 D3.js 生成图表以生成基于 SVG 的元素,并使用 Prawn gem 生成 PDF 格式的页面。
  • @Dusht 是否有任何特定的教程可以引导我使用 D3.js 生成图形并将它们导出为 pdf?提前致谢

标签: ruby-on-rails chart.js prawn


【解决方案1】:

chart.js 有一个方法 toDataUrl()

toDataUrl 是一个画布属性 (https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL)。

它以 base 64 编码格式返回画布的图像表示(默认为 png)。由于 Prawn 需要图像路径,因此您需要将此 base 64 字符串发送到服务器并将其保存为文件(请参阅How to save a base64 string as an image using ruby),然后让 Prawn 使用保存文件的位置。

【讨论】:

  • 这是在服务器上获取图像的正确方法,但我正在尝试使用 jquery ajax 发布 base64。但它响应 Completed 500 Internal Server Error in 13ms RuntimeError -
  • 以上是我为jquery ajax调用编辑的代码
  • 好的,我根据您的指导找到了解决方案。感谢@potatopeelings 创建图像文件的正确代码与上面的 jquery ajax 一起在注释中。
猜你喜欢
  • 1970-01-01
  • 2020-10-12
  • 2021-04-11
  • 1970-01-01
  • 2014-05-15
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多