Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: Laravel’de Doğrulanabilir PDF Sertifikaları Oluşturma Yöntemi
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » Laravel’de Doğrulanabilir PDF Sertifikaları Oluşturma Yöntemi

Yazılım

Laravel’de Doğrulanabilir PDF Sertifikaları Oluşturma Yöntemi

teknomers
Son güncelleme: 21 Temmuz 2026 21:36
teknomers
Paylaş
Paylaş

Bir kullanıcı bir kursu tamamladığında, iş başvurusu ile iliştirebileceği, tam kalitede basılabilir ve bir işverenin doğruluğunu kontrol edebileceği bir belge gibi davranan bir sertifika ister. Bu makalede, Laravel ile tam olarak bunu nasıl yapacağınızı öğreneceksiniz: bir Blade ile tasarlanmış sertifika, bir doğrulama sayfasına yönlendiren bir QR kodu ile birlikte, otomatik olarak teslim edilen bir e-posta.

Blade’de Tasarımı Koruyun

Sertifika, tek bir dosyada yaşayan sıradan bir Blade görünümüdür, stiller inline olarak tanımlanır, böylece tarayıcıda önizlediğiniz işaretleme, üretilen ile tam olarak aynıdır. Boş bir sayfa yerine tasarlanmış bir başlangıç noktası arıyorsanız, tamamlanmış sertifika şablonu iyi bir temel sunar.

{{-- resources/views/certificates/template.blade.php --}}





  

Certificate of Completion

has completed {{ $certificate->course }}

Issued {{ $certificate->issued_at->format('j F Y') }}

{!! QrCode::size(110)->generate(route('certificates.verify', $certificate)) !!}

{{ route('certificates.verify', $certificate) }}

İki şey burada sessizce çalışıyor. Tasarım, sabit piksel boyutlarında sabitlenmek yerine bir belge gibi akıyor, çünkü PDF, A4 portre sayfalarına render edilmektedir. QR kodu, dışarıdan bir şey almaya ihtiyaç duymadan inline SVG olarak üretilmektedir.

Her Sertifikaya Doğrulanabilir Bir Kimlik Verin

Doğrulama yalnızca sabit bir kamu tanımlayıcısı ve bunu çözen bir sayfa gerektirir. Sertifika satırında bir UUID yeterlidir.

Schema::create('certificates', function (Blueprint $table) {
    $table->id();
    $table->uuid()->unique();
    $table->foreignId()->constrained();
    $table->string();
    $table->timestamp();
    $table->timestamps();
});

Doğrulama rotası, UUID ile bağlandığı için, ardışık kimliklerin tahmin edilmesi kimseyi bir yere götürmez.

Route::get(, function (Certificate $certificate) {
    return view(, [=> $certificate]);
})->name();

Doğrula görünümü, öğrenicinin adı, kursu ve basım tarihi gösterir. Basılı sertifikanın QR kodunu tarayan herkes, alan adınızda bu kaydı görür ve bu, güven hikayesinin tamamıdır: kağıt bunu iddia eder, veritabanınız doğrular.

QR kodu için, standart paketi ekleyin. Varsayılan renderlayıcı SVG çıkışı veriyor, bu da tam olarak istediğiniz şey:

composer require simplesoftwareio/simple-qrcode

Bunu Vektör PDF Olarak Render Edin

Bu Blade görünümünü PDF’ye dönüştürmenin üç yolu vardır. DomPDF, saf PHP’dir ama sınırlı CSS desteği vardır ve bir sertifika tam olarak bu tür bir tasarıma sahiptir. Browsershot doğru bir şekilde render eder çünkü gerçek Chrome’u çalıştırır, ancak şimdi sunucunuzda Chrome’u yüklemek ve idare etmek zorundasınız. Üçüncü yol, bir HTML to PDF API: renderlanmış HTML’yi format: "pdf" ile POST edersiniz ve tamamlanmış bir belgeye dair bir URL alırsınız, bu da işletmeye bağlı bir tarayıcı motoru tarafından render edilir.

Servis çok kısa:

namespace App\Services;

use App\Models\Certificate;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Storage;

class CertificateService
{
    public function issue(Certificate $certificate): string
    {
        $html = view(, [
            => $certificate,
        ])->render();

        $response = Http::withHeaders([
            => config(),
        ])->post(, [
            => $html,
            => ,
        ])->throw()->json();

        $path = {->uuid.pdf";
        Storage::put(, Http::get([])->body());

        return ;
    }
}

Anahtarın config/services.php dosyasına eklenmesi, onun kod tabanından çıkmasını sağlar:

=> [
    => env(),
],

Geri dönen dosya gerçek bir vektör PDF’dir. Metin seçilebilir ve arama yapılabilir, yazı tipleri gömülüdür ve her boyutta net bir şekilde yazdırılır. Bu da tam olarak bir sertifikanın ihtiyaç duyduğu şeydir ve PNG’nin sunamayacağı bir özellik.

Öğrenciye E-posta Gönderin

PDF’yi bir kez depolayın ve ardından bir mailable içinde depolamadan ekleyin:

namespace App\Mail;

use App\Models\Certificate;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Attachment;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;

class CertificateIssued extends Mailable
{
    public function __construct(public Certificate $certificate)
    {
    }

    public function envelope(): Envelope
    {
        return new Envelope(
            subject: .$this->certificate->course,
        );
    }

    public function content(): Content
    {
        return new Content(markdown: );
    }

    public function attachments(): array
    {
        return [
            Attachment::fromStorage({$this->certificate->uuid}.pdf")
                ->as()
                ->withMime(),
        ];
    }
}

Kurs Tamamlanması ile Bağlayın

Bir geçmiş olayı dinleyici içine kurulum ve teslimat yaparak, kursun tamamlandığını işaret eden bir etkinlik için işleyin:

public function handle(CourseCompleted $event): void
{
    $certificate = Certificate::create([
        => () Str::uuid(),
        => ->user->id,
        => ->course->title,
        => now(),
    ]);

    app(CertificateService::class)->issue();

    Mail::to(->user)->send(new CertificateIssued());
}

Dinleyiciyi bir kuyruğa gönderin ve öğrenici, tamamladıktan birkaç saniye sonra doğrulanabilir bir belgeyi gelen kutusunda bulsun. Ekibinizden hiç kimse bir şey yapmadan.

Toplu İşlem ve Değişiklik Kanıtı

Hacim büyüdüğünde iki iyileştirme yapılabilir. Kitlesel verme, tarihi kohortlar veya dönem sonu çalışmaları için, her isteğe bir webhook_url geçirin ve bağlantıları açık tutmak yerine PDF’leri bitirildikçe toplayın. Ayrıca, doğrulamanın veritabanı sorgusunun ötesinde bir incelemeye dayanabilmesi gerekiyorsa, içerik hash’leri ve imzalı tanımlayıcılar belgenin kendisini değiştirilemez hale getirir; bu yaklaşım ölçekle imzalı dijital sertifikalar üretmek hakkındada ele alınmıştır.

Bu makalede Blade’de bir sertifika tasarladınız, bunu bir vektör PDF olarak render ettiniz, doğrulama bağlantılı bir QR kodu verdiniz ve kurs tamamlandığında e-posta ile teslim ettiniz. Tam sürüm, sabit genişlik ölçeklendirme notları ve Open Badges eşlemesi ile birlikte Accreditly‘de yer almaktadır.

Şu anda Laravel uygulamalarınızda sertifikaları nasıl veriyorsunuz? Yaklaşımınızı aşağıdaki yorumlarda paylaşın.

Kaynak: Orijinal Makale

Contents
  • Blade’de Tasarımı Koruyun
  • Her Sertifikaya Doğrulanabilir Bir Kimlik Verin
  • Bunu Vektör PDF Olarak Render Edin
  • Öğrenciye E-posta Gönderin
  • Kurs Tamamlanması ile Bağlayın
  • Toplu İşlem ve Değişiklik Kanıtı
Deploynix’te Çoklu Kiracı SaaS: Kiracı Başına Veritabanı mı Yoksa Paylaşılan Veritabanı mı?
Katmanlar Üzerinden Düşünmek – DEV Community
Laravel Uygulamanızın Neden Yavaş Olduğu ve Veritabanı Performansını Nasıl İyileştireceğiniz
Profil Verilerinde Teknoloji Sınıflandırmasının Otomasyonu
Deploynix ile Cloudflare Kullanımı: CDN, DDoS Koruması ve SSL Yapılandırması
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale Acil: Google’dan Yeni Gemini 3.5 ile Yazılım Açıklarına Son!
Sonraki Makale Nvidia’nın DLSS 5: Üç AI modu ile gerçek zamanlı detay değişimi

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Dimension Capital’ın 800 Milyon Dolarlık Üçüncü Fonu Bilim ve Teknolojiyi Buluşturuyor
Genel
TSMC 2027’de yonga üretim hizmetlerinde %25 fiyat artışı hedefliyor
Donanım
Samsung Galaxy Unpacked Temmuz 2026: Nasıl İzlersiniz?
Liste
Suno’nun AI Müzik Üreticisi İhlali 55M Kullanıcıyı Etkiledi
Genel
Çocukların Okuma Yeteneğine Dair Yanıltıcı Algıları Kırın
Genel
OpenAI: Hugging Face ön sürüm modelleriyle ihlal edildi
Yapay Zeka
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?