【问题标题】:Export PHP with Google charts and table as PDF将带有 Google 图表和表格的 PHP 导出为 PDF
【发布时间】:2020-03-17 10:28:31
【问题描述】:

我有一个带有 Google 图表的 PHP 页面和一个需要导出为 PDF 的表格。

我尝试过使用

var doc = new jsPDF();
        doc.addImage(chart.getImageURI(), 0,0);
        doc.save('chart.pdf');

对于谷歌图表和表格的 dompdf,但显然当同时使用这两个代码时它不起作用。

有没有办法将页面作为一个整体导出,或者图表的 PDF 页面和表格的第二页都在同一个 PDF 文件中?

【问题讨论】:

  • 那为什么要用dompdf而不是jspdf添加表格呢?

标签: javascript pdf charts google-visualization dompdf


【解决方案1】:

您可以使用html2canvas 获取整个页面的图像,
然后将其发送到 pdf...

只需要确保图表和表格都已完成绘制。

请参阅以下工作 sn-p...

$(document).ready(function() {
  google.charts.load('current', {
    packages: ['corechart', 'table']
  }).then(function () {
    var data = new google.visualization.arrayToDataTable([
      ['x', 'y0', 'y1'],
      ['0-10', -3, 3],
      ['11-20', -2.5, 2.5],
      ['21-30', -2, 2],
      ['31-40', -1.5, 1.5],
    ]);

    var chart = new google.visualization.BarChart(document.getElementById('chart_div'));
    var chartReady = false;
    var table = new google.visualization.Table(document.getElementById('table_div'));
    var tableReady = false;


    google.visualization.events.addListener(chart, 'ready', onChartReady);
    google.visualization.events.addListener(table, 'ready', onTableReady);

    chart.draw(data, {
      hAxis: {
        format: '#,##0.000',
        ticks: [
          {v: -8, f: '8.000'},
          {v: -6, f: '6.000'},
          {v: -4, f: '4.000'},
          {v: -2, f: '2.000'},
          0, 2, 4, 6, 8
        ]
      },
      isStacked: true
    });
    table.draw(data);

    function onChartReady() {
      chartReady = true;
      onIsReady();
    }

    function onTableReady() {
      tableReady = true;
      onIsReady();
    }

    function onIsReady() {
      if ((chartReady) && (tableReady)) {        html2canvas($('#dashboard_div').get(0)).then(function(canvas) {
          // export pdf
          var pdfDoc = new jsPDF({
            orientation: 'landscape',
            unit: 'px',
            format: [canvas.width, canvas.height]
          });
          pdfDoc.addImage(canvas.toDataURL('image/png'), 0, 0);
          pdfDoc.save('page.pdf');
        });
      }
    }
  });
});
.table {
  text-align: center;
}

#table_div {
  display: inline-block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<script src="https://cdn.jsdelivr.net/npm/html2canvas@1.0.0-rc.5/dist/html2canvas.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/jspdf@1.5.3/dist/jspdf.min.js"></script>
<div id="dashboard_div">
  <div id="chart_div"></div>
  <div class="table">
    <div id="table_div"></div>
  </div>
</div>

【讨论】:

  • 希望这会有所帮助。注意:上面的 sn-p 似乎在保存时阻止下载...
  • 感谢您的帮助,当我保存 pdf 时,它只显示表格而不显示图表
  • 你会用代码更新问题吗?我把上面的 sn-p 移到了jsfiddle,在那里你可以看到两个都保存了...
  • 发现了问题,漏掉了一些行。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-29
  • 2011-08-20
相关资源
最近更新 更多