diff --git a/app/Http/Controllers/SongPdfController.php b/app/Http/Controllers/SongPdfController.php index 0857d72..7614bef 100644 --- a/app/Http/Controllers/SongPdfController.php +++ b/app/Http/Controllers/SongPdfController.php @@ -31,21 +31,27 @@ public function preview(Song $song, SongArrangement $arrangement): JsonResponse ]); } - public function download(Song $song, SongArrangement $arrangement): Response + public function download(Song $song, SongArrangement $arrangement): Response|JsonResponse { abort_unless($arrangement->song_id === $song->id, 404); - $groupsInOrder = $this->buildGroupsInOrder($arrangement); + try { + $groupsInOrder = $this->buildGroupsInOrder($arrangement); - $pdf = Pdf::loadView('pdf.song', [ - 'song' => $song, - 'arrangement' => $arrangement, - 'groupsInOrder' => $groupsInOrder, - ]); + $pdf = Pdf::loadView('pdf.song', [ + 'song' => $song, + 'arrangement' => $arrangement, + 'groupsInOrder' => $groupsInOrder, + ])->setPaper('a4', 'portrait'); - $filename = str($song->title)->slug() . '-' . str($arrangement->name)->slug() . '.pdf'; + $filename = str($song->title)->slug().'-'.str($arrangement->name)->slug().'.pdf'; - return $pdf->download($filename); + return $pdf->download($filename); + } catch (\Throwable $e) { + return response()->json([ + 'message' => 'PDF-Erzeugung fehlgeschlagen: '.$e->getMessage(), + ], 500); + } } private function buildGroupsInOrder(SongArrangement $arrangement): array diff --git a/resources/js/Components/ArrangementConfigurator.vue b/resources/js/Components/ArrangementConfigurator.vue index 0079777..9922513 100644 --- a/resources/js/Components/ArrangementConfigurator.vue +++ b/resources/js/Components/ArrangementConfigurator.vue @@ -1,5 +1,5 @@