Öncelikle Controller içinde fonksiyonumuzu oluşturuyoruz. bende APP\Http\Controllers\Admin\InstallmentsController.php 'içinde olacak. fonksiyon installment (taksit) id'si üzerinden çalışıyor.
public function invoicePdf(Request $request, $id)
{
$installment = Installment::findOrFail($id);
$data = [
'id' => $id,
'installment' => $installment,
'students' => $students,
'sonuc' =>$sonuc,
];
$pdf = PDF::loadView('admin/installments/invoice', $data);
$pdf ->setPaper('A5', 'landscape');
return $pdf->download('.$installment->id.'_invoice.pdf');
}
şimdi yolumuzu (route) route/web.php içinde tanımlayalım. burada id bazlı detay alacağımız için id değişkeni eklemeyi unutmuyoruz.
Route::get('admin/installments/{id}/invoice','Admin\\InstallmentsController@invoicePdf');
Artık PDF görüntüsü alacağımız sayfayı aynı HTML sayfası oluşturur gibi invoice.blade.php içinde tasarlıyoruz. Örnek olduğu için tek satır gösterdim. ihtiyaçlarınıza göre devam edilebilir. Ayrıca font da tanımlayarak türkçe karakter sorunu ortadan kalkıyor eğer pdf oluşturulacak tablo çok detaylı ise internetten türkçe karakter için farklı yöntemleri denemek daha verimli olabilir.
<p style="font-family: DejaVu Sans, sans-serif;" align="center"><strong>TAHSİLAT MAKBUZU </strong></p>
<table style="font-family: DejaVu Sans, sans-serif;" border="1" width="100%">
<tbody>
<tr>
<td><br />
<p><strong>Senet No: {{ $id}}</strong></p>
</td>
</tr>
</tbody>
</table>
Şimdi de unuttuğumuz yazdır butonu yolunu ekleyelim :)
<p><a href="{{ url('admin/installments/'. $installment->id .'/invoice') }}" title="{{trans('students.Print')}}"><button class="btn btn-outline-warning btn-sm">
<i class="fas fa-print" ></i>YAZDIR</button></a></p>