Snappy PDF 中未显示 Google 图表

moh*_*h96 8 wkhtmltopdf laravel laravel-snappy

我正在尝试加载图表,然后使用Laravel-snappy将其转换为 PDF

这是我用来生成pdf的代码:

$pdf = SnappyPDF::loadView('report', []);
$pdf->setOption('enable-javascript', true);
$pdf->setOption('no-stop-slow-scripts', true);
$pdf->setOption('page-size', 'A4');
$pdf->setOption('lowquality', false);
$pdf->setOption('disable-smart-shrinking', true);
$pdf->setOption('images', true);
$pdf->setOption('window-status', 'ready');
$pdf->setOption('run-script', 'window.setTimeout(function(){window.status="ready";},5000);');
return $pdf->inline();
Run Code Online (Sandbox Code Playgroud)

这是 HTML/CSS report.blade.php

<head>
    <script src="http://www.gstatic.com/charts/loader.js"></script>
    <script>
      function init() {
        google.charts.load('current', {packages: ['corechart']});
        var interval = setInterval(function () {
          if (google.visualization !== undefined && google.visualization.DataTable !== undefined 
            && google.visualization.PieChart !== undefined) {
            clearInterval(interval);
            window.status = 'ready';
            drawChart();
          }
        }, 100);
      }

      function drawChart() {
        // Define the chart to be drawn.
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'Element');
        data.addColumn('number', 'Percentage');
        data.addRows([
          ['Nitrogen', 0.78],
          ['Oxygen', 0.21],
          ['Other', 0.01]
        ]);

        var chart = new google.visualization.PieChart(document.getElementById('myPieChart'));
        chart.draw(data, {});
      }
    </script>
</head>
<body onload="init()">
<div id="myPieChart" style="width: 500px; height: 500px;"></div>
</body>
Run Code Online (Sandbox Code Playgroud)

PDF 输出总是返回一个空白页。

php*_*hpd 4

我遇到了同样的问题 - 获取空白图表或错误消息“未定义不是函数。”。

经过 3 天尝试所有可能的选项后,对我有用的是“恢复”回旧的 Google Charts 版本。

<script>google.load("visualization", "44", {packages:["corechart"]});</script>
Run Code Online (Sandbox Code Playgroud)

我之前使用“1”作为版本号。刚刚发现现在使用版本“1”意味着您正在使用当前版本!来自 Google Charts 文档 - “所有‘jsapi’请求现在都被重定向到新的加载器。如果您之前加载版本‘1’或‘1.0’,那么现在将加载‘当前’版本。”

也尝试过45版本,万一也失败了。看起来较新的版本存在 wkhtmlpdf 加载问题。