Есть ли способ запустить просмотр без необходимости показа в браузере в laravel? - PullRequest
2 голосов
/ 11 февраля 2020

Я объясняю, у меня есть проект Laravel, в котором мне нужно сделать отчет и отобразить его в браузере для загрузки. В этом отчете должны быть графики, составленные с помощью диаграммы js, и вот что я сделал.

мои маршруты:

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
}

Наконец, представление просто создает 2 диаграммы в HTML, используя диаграмму js и код JS, который обновляет диаграммы необходимой информацией. Это блейд-представление.

Поэтому мой вопрос заключается в том, существует ли метод для генерации диаграмм, использующий представление и загрузку в качестве png, но без отображения в браузере, в течение всего времени laravel.

И после всего этого, как отобразить PDF в Bowser? Потому что при выполнении запросов он не показывает вывод procesar() ($ mpdf-> Output ();).

Если я забыл упомянуть что-то или нужна информация, просто спросите меня. Спасибо всем.

1 Ответ

0 голосов
/ 11 февраля 2020

Я получаю то, что вы просите, вы можете получить скомпилированный шаблон блейда ie: в формате HTML, используя метод render(), подобный следующему.

$html = view('graphMaker')->render()

Но проблема в том, что график, который вы пытаетесь сделать, сделан с использованием chart.js, который является клиентской библиотекой. Это означает, что вам нужен браузер, чтобы нарисовать реальный график.

Один из вариантов - визуализировать диаграмму со стороны сервера (ie: в PHP), используя библиотеку (которую вам придется найти самостоятельно, но одна ссылка здесь ) и передайте обработанный html в Mpdf для создания pdf, но факт в том, что на стороне сервера нет хороших вариантов построения диаграмм.

Лучше всего использовать драйвер chrome для загрузки HTML и сделать снимок экрана (если я не ошибаюсь, вы можете напрямую сделать PDF из она)

...