getImageURI()返回一个无法在浏览器中打开的大网址

时间:2017-09-18 09:57:18

标签: php charts printing google-visualization png

我目前正在将我的Google柱形图转换为png,然后使用chart_div.innerHTML获取网址,将其粘贴到浏览器(Firefox)中。

我的错误是:413。这是一个错误。您的客户发出了太大的请求

有没有办法减少网址的大小?或任何可能的解决方案?我的目标是能够将我的所有4个图表转换为png并打印每个图表,或者至少打印1个。

3 个答案:

答案 0 :(得分:0)

谷歌开发者的示例解决方案,如谷歌图表的问题页面所示。

链接:

教程:https://developers.google.com/chart/interactive/docs/printing

答案 1 :(得分:0)

除非您可以访问Google服务器,否则您需要以块的形式获取图表。 HTTP 413表示服务器declined your request,因为它太大了。尝试将图表拆分为多个图表,然后将其重新放在本地或仅显示块。

答案 2 :(得分:0)

将图像发送到新窗口,
这将允许您右键单击并另存为,打印等...

window.open(chart.getImageURI(), '_blank');

以上创建了一个"弹出窗口"可能被封锁,
你也可以改变当前页面的位置......

location.href = chart.getImageURI();

请参阅以下小提琴示例...

https://jsfiddle.net/7qtuhwaw/

编辑

chrome的选项是创建下载链接,
请参阅以下工作代码段...



google.charts.load('current', {
  callback: function () {
    var data = new google.visualization.DataTable();
    data.addColumn('date', 'Date');
    data.addColumn('number', '2015');
    data.addColumn('number', '2016');
    data.addRows([
       [new Date('01/01/2016'), 200, 210],
       [new Date('02/01/2016'), 190, 220],
       [new Date('03/01/2016'), 205, 200],
       [new Date('04/01/2016'), 220, 230],
       [new Date('05/01/2016'), 212, 210],
       [new Date('06/01/2016'), 185, 193],
       [new Date('07/01/2016'), 196, 207]
    ]);

    var chart = new google.visualization.LineChart(document.getElementById('chart_div'));

    google.visualization.events.addListener(chart, 'ready', function () {
      downloadLink = document.createElement('a');
      downloadLink.href = chart.getImageURI();
      downloadLink.download = 'chart.png';
      downloadLink.click();
    });

    chart.draw(data, {
      hAxis: {
        format: 'MMM'
      },
      height: 400
    });
  },
  packages: ['corechart']
});

<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>
<div id="image_div"></div>
&#13;
&#13;
&#13;