我解释一下,我有一个Laravel项目,我需要在其中做一个报告并将其显示在浏览器中以便下载。该报告需要有一些Chartjs制作的图形,这就是我所做的。
我的路线:
Route::get('/informe', 'informeController@procesar');
Route::get('/graph', 'informeController@graph');
Route::post('/save', 'informeController@graphStore');
Route::get('/up', 'informeController@graphUpdate');
一个非常大的控制器,但是谁拥有这个伪代码。
public function graph()
{
return view('graphMaker');
}
public function graphUpdate(Request $request)
{
//get data from a database and send it to a view that requested data
return response()->json($data);
}
public function graphStore(Request $request){
//save the images obtained from the view using this commands in JS
//ctx2 = document.getElementById('donutchart');
//img = ctx2.toDataURL('image/png');
return route('/informe');
}
public function procesar(){
//get more data from the database and generate a pdf using mpdf
}
最后,该视图仅使用Chartjs和JS代码以HTML格式制作2个图表,并用所需的信息更新图表。这是刀片视图。
所以我的问题是,是否有一种方法可以通过使用视图和下载为png的方式生成图表,但是在整个浏览器中都不会通过laravel看到它。
毕竟,如何在Bowser中显示pdf?因为进行查询时不会显示procesar()
输出($ mpdf-> Output ();
)。
如果我忘记提及某些事情或信息,请问我。谢谢大家。
答案 0 :(得分:0)
我明白了您的要求,您可以使用render()
方法获得编译后的刀片模板,即:HTML格式,如下所示。
$html = view('graphMaker')->render()
但是问题是您要制作的图表是使用chart.js
(它是一个客户端库)完成的。这意味着您需要使用浏览器来绘制实际图表。
一种选择是使用库从服务器端(即PHP本身)呈现图表(您将不得不找到自己,但一个链接为here),然后将呈现的html传递给{{ 1}}来制作pdf,但是事实是,服务器端没有好的图表选项。
我认为最好的选择是使用chrome driver加载HTML并截图(如果我没记错,您可以直接从中制作PDF)