如何转换和下载图表到pdf?

时间:2017-02-22 14:27:55

标签: javascript java jquery jspdf google-chartwrapper

我正在使用jsPdf插件并执行此操作

 var data = google.visualization.arrayToDataTable(dataValues,true);
         var chart = new google.visualization.CandlestickChart(document.getElementById(id));
        google.visualization.events.addListener(chart, 'ready', function () {
          var content = '<img src="' + chart.getImageURI() + '">';
          $('#graph-images').append(content);
        });

function generatePDF() {
      var imageTags = $('#graph-images img');
        var doc = new jsPDF();
        doc.setFontSize(33);
        doc.setFillColor(135, 124,45,0);
        doc.addImage(imageTags[0], 'png', 10, 10, 150, 100);
        doc.save('sample.pdf');
     }

通过使用这个我可以下载pdf文件,同时打开adobe reader中的pdf文件,说110错误。

任何人都可以帮忙,谢谢。

1 个答案:

答案 0 :(得分:0)

您应该将图片URI传递给addImage()

google.charts.setOnLoadCallback(function() {
  var data = google.visualization.arrayToDataTable(dataValues, true)
  var chart = new google.visualization.CandlestickChart(document.getElementById(id))
  chart.draw(data)
  imgData = chart.getImageURI()
})

function generatePDF() {
  var doc = new jsPDF();
  doc.setFontSize(33);
  doc.setFillColor(135, 124,45,0);
  doc.addImage(imgData, 'png', 10, 10, 150, 100);
  doc.save('sample.pdf');
}

请查看此实时演示,了解更多详情https://jsfiddle.net/p1frmxvp/1/

<强>更新

只有当我们使用jspdf 1.3.2并使用Adobe Reader打开pdf时才会发生错误here。到目前为止唯一的解决方案是使用其他查看器(Chrome,Foxit Reader .etc)打开pdf或将jspdf降级为1.2.61。我已经更新了上面的jsfiddle以使用降级的jspdf。