LoginSignup
0
2

More than 3 years have passed since last update.

Laravel-SnappyでPDFを出力するときにチャートが表示されなくなった

Posted at

Laravel 環境でPDFを作成するとなると Laravel-snappy を使うとケースがあると思います。ついでに google chart api を使って、グラフも出力してしまおう。

この記事では、そんな環境下で突如としてグラフが出力されなくなった方のお役に立てれば良いなと思いまとめた記事になります。

環境

現象が発生した環境です。

  • Laravel 5.8 (5.8.36)
  • laravel-snappy 0.4.6
  • wkhmltopdf 0.12.4

参考記事

今回発生した現象

2020年5月辺りから、PDFに表示できていたグラフが表示されなくなり、真っ白なPDFが作成されてしまう現象が起きるようになりました。

それまでは、Laravel-Snappyでpdfを出力できるようになるまで でご説明頂いているような対応で出力しています。

問題が発生するまで使っていたコード

function init() {
    google.load('visualization', '1.1', {
        'packages': ['corechart'],
        callback: drawCharts
    });
}

修正後のコード結果

原因の說明の前に対応策から、出力できるように書き換えたコードはこのようになります。
Laravel-Snappyでpdfを出力できるようになるまでにも書かれていますが、setOnLoadCallback メソッド内で Promise が使われているため、 wkhtmltopdf がES6に対応しておらず、JavaScriptが発火しません。その代わりとして、 setInterval メソッドで対応することで、比較的最近のバージョンでも出力できるようになっています。

コード内に書かれている '48' というのが重要で、Googleのサンプル にかかれている current にするとエラーになってします。(原因は、調査中)

修正後のコード

function init() {
    google.charts.load('48', {'packages':['corechart']});
    var interval = setInterval(
        function() {
            if ( google.visualization !== undefined && google.visualization.DataTable !== undefined && google.visualization.PieChart !== undefined ){
                clearInterval(interval);
                window.status = 'ready';
                drawCharts();
            }
        }, 100);
}

原因

TBD

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2