05.03.2020

Dom PDF ile laravelde PDF oluşturmak

Laravel

Ö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>

Yazar: Can BAYAT
Kimdir: 2015 yılından bu yana EMD Enerji Merkezi Danışmanlık şirketine bağlı olarak çalışmaktadır. 2016 SAÜ Fen Bilimleri Enstitüsü Jeofizik Mühendisliği Yüksek Lisans mezunudur. Evli ve bir çocuk babasıdır.
| | canbayat [at] gmail |