Я успешно создал диаграмму, но не знаю, как отобразить ее в формате PDF. Я пробовал много вещей, но это не работает. Я создал диаграммы, используя библиотеку «Диаграммы Laravel» и библиотеку «DOMpdf» для создания PDF-файлов. Кроме того, я пытался преобразовать Canvas в изображение, но это не работает. Пожалуйста, помогите мне. я новичок в Ларавел.
Спасибо за помощь
chart.blade.php
Документ pdf var labels = {{ Js::from($labels) }}; вар пользователей = {{ Js::from($data) }}; константные данные = { этикетки: этикетки, наборы данных: [{ label: «Мой первый набор данных», BackgroundColor: 'rgb(255, 99, 132)', borderColor: 'rgb(255, 99, 132)', данные: пользователи, }] }; константная конфигурация = { тип: 'линия', данные: данные, параметры: {} }; const myChart = новая диаграмма( document.getElementById('myChart'), конфигурация ); const Canvas = document.getElementById('myChart'); const ConvertButton = document.getElementById('convertButton'); ConvertButton.addEventListener('click', () => { const CanvasData = Canvas.toDataURL(); // Преобразование содержимого холста в URL-адрес данных // Отправляем данные холста на сервер с помощью выборки выборка('/pdf', { метод: 'POST', заголовки: { 'Content-Type': 'application/x-www-form-urlencoded' }, тело: `imageData=${encodeURIComponent(canvasData)}` }) .then(ответ => ответ.json()) .then(результат => { console.log(result.message); }); }); /pdf(маршрут) функция:
публичная функцияgeneratePDF(Request $request) { $users = User::select(DB::raw("COUNT(*) as count"), DB::raw("MONTHNAME(created_at) asmonth_name")) ->whereYear('create_at', дата('Y')) ->groupBy(DB::raw("имя_месяца")) ->orderBy('id','ASC') ->pluck('count', 'название_месяца'); $labels = $users->keys(); $data = $users->values(); $imageData = $request->input('imageData'); // Удалить префикс URL-адреса данных, чтобы получить фактические данные изображения в кодировке Base64 $imageData = str_replace('data:image/png;base64,', '', $imageData); $decodedImageData = base64_decode($imageData); эхо ""; print_r($decodedImageData);echo "
"; // Генерируем уникальное имя файла для изображения $filename = 'canvas.png'; $filepath = public_path($filename); // Сохраняем изображение в каталоге хранения Storage::disk('public')->put($filename, $decodedImageData); $chartHtml = view('pdf', Compact('filepath'))->render(); $pdf = PDF::loadHTML($chartHtml); вернуть $pdf->stream('chart.pdf'); } pdf.blade.php
Документ