Laravel 10 ile DomPDF Kullanarak PDF Dosyası Oluşturma

L

Bu yazıda, Laravel 10'da görünümden PDF dosyası oluşturma konusunu ele alacağız. Laravel 10'da PDF dosyası oluşturma konusunda bir sorununuz varsa, basit bir çözümle örnek vereceğim.

Laravel 10'da bir PDF dosyası nasıl oluşturulacağına dair basit bir örnek sunacağım. Laravel 10'da bir PDF dosyası oluşturmak için DomPDF adlı composer paketini kullanacağız. Aşağıdaki adımları takip ederek basit bir PDF dosyası elde edebilirsiniz.

Adım 1: Laravel 10'ı Yükleyin

Bu adım zorunlu değildir; ancak henüz bir Laravel uygulaması oluşturmadıysanız, aşağıdaki komutu çalıştırarak devam edebilirsiniz:

composer create-project laravel/laravel example-app

Adım 2: DomPDF Paketini Yükleyin

Sonraki adımda, DomPDF paketini aşağıdaki composer komutunu kullanarak yükleyeceğiz:

composer require barryvdh/laravel-dompdf

Adım 3: Controller Oluşturma

Bu adımda, PDFController adında bir controller oluşturacağız ve generatePDF() adında bir fonksiyon içerisine PDF oluşturma kodunu yazacağız. İşte controller'ı oluşturmak için kullanılacak komut:

php artisan make:controller PDFController

PDFController içerisinde, kullanıcılar tablosundan verileri alacak ve bu verileri PDF dosyasında görüntüleyeceğiz. Aşağıdaki tinker komutunu kullanarak kullanıcılar tablosuna bazı sahte veriler ekleyebilirsiniz:

php artisan tinker
User::factory()->count(10)->create()

Şimdi, controller dosyasındaki kodu güncelleyelim.

app/Http/Controllers/PDFController.php

<?php
  
namespace App\Http\Controllers;
  
use Illuminate\Http\Request;
use App\Models\User;
use PDF;
  
class PDFController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function generatePDF()
    {
        $users = User::get();
  
        $data = [
            'title' => 'Welcome',
            'date' => date('m/d/Y'),
            'users' => $users
        ]; 
            
        $pdf = PDF::loadView('myPDF', $data);
     
        return $pdf->download('download.pdf');
    }
}

Adım 4: Route Eklemek

Daha sonra, routes/web.php dosyasını açın ve içindeki kodu güncelleyin.

routes/web.php

<?php
  
use Illuminate\Support\Facades\Route;
  
use App\Http\Controllers\PDFController;
  
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
  
Route::get('generate-pdf', [PDFController::class, 'generatePDF']);

Adım 5: Görünüm Dosyası Oluşturma

Son adımda, myPDF.blade.php(resources/views/myPDF.blade.php) adında bir görünüm dosyası oluşturalım ve aşağıdaki kodu ekleyelim:

resources/views/myPDF.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>Laravel 10 Generate PDF Example</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
</head>
<body>
    <h1>{{ $title }}</h1>
    <p>{{ $date }}</p>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
    tempor incididunt ut labore et dolore magna aliqua.</p>
  
    <table class="table table-bordered">
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Email</th>
        </tr>
        @foreach($users as $user)
        <tr>
            <td>{{ $user->id }}</td>
            <td>{{ $user->name }}</td>
            <td>{{ $user->email }}</td>
        </tr>
        @endforeach
    </table>
  
</body>
</html>

Laravel Uygulamasını Çalıştırma:

Gerekli tüm adımlar tamamlandı, şimdi aşağıdaki komutu yazıp giriş yaparak Laravel uygulamasını çalıştırmanız gerekiyor:

php artisan serve

Web tarayıcınıza gidin, verilen URL'yi yazın ve uygulama çıktısını görüntüleyin:

http://localhost:8000/generate-pdf

By Aydın Yağız

Aydın Yağız

Teknolojiye olan tutkumla inovasyonu destekler, kullanıcı deneyimini önceliklerim arasına alırım. Kendi yeteneklerimi ve bilgilerimi paylaşarak, daha geniş bir topluluğun faydalanmasını sağlarım. İş birliği içinde hareket ederek, geleceğin teknoloji dünyasına katkıda bulunmayı hedeflerim. Sizi de bu heyecan verici yolculuğa davet ediyor, fikirlerinizi paylaşmaya ve teknolojiye dair sınırları zorlamaya teşvik ediyorum. Birlikte büyüyelim ve yeni ufuklara açılalım!

İletişime Geçin

Kodlama dünyasına adım atın ve deneyimlerinizi paylaşın. Siz de bu aktif topluluğa katılarak yeni bağlantılar kurun, fikir alışverişinde bulunun ve bilgi birikiminizi artırın.

Özelleştir

Farklı yazı tipleri ve renk seçenekleriyle stilinizi kişiselleştirin. Aşağıdaki örneklerden birini deneyerek sizin için en uygun olanı seçin.

Yazı Tipi Örnekleri

Renk Örnekleri