Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inny][Laravel 5.2] Drukowanie do pdf, błąd 500
Forum PHP.pl > Forum > PHP > Frameworki
miccom
Cześć.
Chcę zlecić laravelowi drukowanie do PDF, ale przy dużcyh wydrukach otrzymuję komunikat


Strona strona.pl nie działa

Serwer miccom.pl nie może teraz obsłużyć tego żądania.
HTTP ERROR 500



Jak rozwiązać ten problem?
Proszę o pomoc.
Pyton_000
Poprawić kod.
miccom
Hmm,a w jaki sposób mogę poprawić kod?
Dla mniejszej ilości elementów działa ok, jak kod wyświetlam na stronie w html to jest ok, ale jk tylko chcę dać do pdf to zamula.

Mimo tego mam poprawić kod?

Poniżej kod, i myślę że chyba nie ma w nim nic skomplikowanego oprócz ilości danych.

  1. public function drukujListe($id)
  2. {
  3. switch($id){
  4. case 1:
  5. $data = Player::where('plec', '=', 1)->where('rok','=',Auth::user()->rok)->orderBy('nazwisko')->get();
  6. $name ='Dziewcząt';
  7. break;
  8. case 2:
  9. $data = Player::where('plec', '=', 2)->where('rok','=',Auth::user()->rok)->orderBy('nazwisko')->get();
  10. $name ='Chłopców';
  11. break;
  12. case 3:
  13. $data = Player::where('rok','=',Auth::user()->rok)->orderBy('nazwisko')->get();
  14. $name ='Dziewcząt i chłopców';
  15. break;
  16. }
  17.  
  18. $formPrint = '
  19. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  20. <style>
  21. *{ font-family: DejaVu Sans, font-size: 12px;}
  22. .footer { position: fixed; left: 0px; bottom: 0px; right: 0px; height: 50px; text-align:center; }
  23. td{padding-left:5px;}
  24. #printList{
  25. margin:0 auto;
  26. width:400px;
  27. }
  28. #headerPrintList{
  29. text-align:center;
  30. height:60px;
  31.  
  32. }
  33. </style>
  34. <div id="printList">
  35. <div id="headerPrintList">
  36. Rocznik 2016<br>
  37. </div>
  38. <table border="1" style="width:100%; border-collapse: collapse;font-size:11px;">
  39. <tr>
  40. <td colspan="3" style="text-align:center; font-weight:bold;">
  41. LISTA '.$name.'
  42. </td>
  43. </tr>
  44. <tr style="background-color:lightgray">
  45. <td style="width:10%">l.p</td>
  46. <td style="width:70%;">
  47. NAZWISKO, Imię
  48. </td>
  49. <td style="width:20%;">
  50. szkoła
  51. </td>
  52. </tr>';
  53. $i = 1;
  54. foreach($data as $singleData ){
  55.  
  56.  
  57.  
  58.  
  59.  
  60. $formPrint .= '<tr>
  61. <td>'.$i.'</td>
  62. <td>'.$singleData->nazwisko.' '.$singleData->imie.'</td>
  63. <td>
  64. '.$this->pobierzSzkoleTXT($singleData->szkolaId).'
  65. </td>
  66. </tr>';
  67. $i++;
  68. }
  69. $formPrint .= '</table>
  70. <p class="footer">LISTA 2016<br>
  71. </p>
  72. </div>
  73. ';
  74.  
  75. //echo $formPrint;
  76. $pdf = PDF::loadHTML($formPrint)->setPaper('a4')->setOrientation('portrait')->setWarnings(true);
  77. return $pdf->download('lista'.$name.'.pdf');
  78.  
  79. }
Pyton_000
a PDF:: to ?
miccom
PDF to programik do obsługi druków pdf

https://github.com/barryvdh/laravel-dompdf
Pyton_000
Spróbuj https://github.com/barryvdh/laravel-snappy

Nie każdy lib poradzi sobie z generowaniem dużych dok. pdf
k_@_m_i_l
https://github.com/niklasravnsborg/laravel-pdf - ostatnio to wykorzystywałem. 1000 stron dokumentu udało się wygenerować. Na każdej stronie były dwa obrazki. Ale to też zależy od ustawień serwera (dostępna pamięć, czas wykonania etc).
Koldy
moze tak troche offtopic,
ale czemu jak masz dostepny blade od laravel'a to pakujesz caly kod html w zmienna deklarowana w funkcji?
miccom
A szczerze, coś to zmienia?

Nigdy nie zastanawiałem się nad tym...
Jeśli coś zmienia to pisz, zmienię.
Pyton_000
Porządek smile.gif
Rysh
Cytat(Pyton_000 @ 13.03.2017, 17:44:37 ) *
Porządek smile.gif

Dokładnie, popraw kod - oddziel logikę od widoku.

Poza tym, używaj angielskich słówek skoro używasz angielskich nazw masz nazwę metody drukujListę a model nazywa się już Player - piszesz po angielsku czy po polsku ?
Oczywiście to nie wpływa na działanie kodu, ale dobrych nawyków trzeba się wyuczyć. W zapytaniu where wg mnie powinieneś używać stałych a nie plec = 1 czy 2
miccom
Cytat(Rysh @ 18.03.2017, 15:04:12 ) *
W zapytaniu where wg mnie powinieneś używać stałych a nie plec = 1 czy 2


A jak skonstruować where aby używać stałych?
Nie zrozumiałem tej porady.
Proszę o wyjaśnienie.
Sabistik
To jest ogólna porada do przejrzystości kodu. Powinieneś zdefiniować stałe typu GENDER_MALE = 1; GENDER_FEMAILE = 2; wtedy używasz np
  1. Player::where('plec', '=', Player::GENDER_MALE)->


Dzięki temu nie musisz pamiętać konkretnych wartości liczbowych.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.