Laravel, 10 milyondan fazla kurulum ile web uygulamaları geliştirmek için mükemmel bir platformdur. Ancak, çoğu Laravel uygulaması bir noktada ekran görüntüsü veya PDF oluşturma ihtiyacı duyar:
- Veri için fatura PDF’leri oluşturma
- Paylaşılan bağlantılar için sosyal önizleme resimleri oluşturma
- Kullanıcı tarafından oluşturulan içeriğin moderasyonu için ekran görüntüleri alma
- Sertifikalar veya rozetler oluşturma
- Düzenli verilere dayalı e-posta üstbilgisi resimleri oluşturma
<p>Mevcut seçenekleriniz sınırlıdır:</p>
<ol>
<li>Chrome binary'si gerektiren <code>spatie/browsershot</code> kullanmak (paylaşımlı barındırmada sıkıntı)</li>
<li>Basit PDF'ler için yeterli ancak stil konusunda sınırlı olan <code>barryvdh/laravel-dompdf</code> kullanmak</li>
<li>Puppeteer ile kendiniz inşa etmek — aşırı ve altyapı yükü oluşturur</li>
</ol>
<p>Daha basit bir yol var: <strong>bir ekran görüntüsü API'si</strong>.</p>
<h2>
<a name="the-laravel-problem-screenshots-without-infrastructure" href="#the-laravel-problem-screenshots-without-infrastructure"></a>
Laravel Sorunu: Altyapı Olmadan Ekran Görüntüleri
</h2>
<p>Laravel, web uygulamaları oluşturmada mükemmeldir, ancak HTML'den ekran görüntüsü veya PDF oluşturma işlevi ile gelmez. İşte her yaygın çözümün eksikleri:</p>
<p><strong>Seçenek 1: Browsershot (Chrome Gerekir)</strong><br/></p>
<div class="highlight js-code-highlight">
<pre class="highlight php"><code><?php
use Spatie\Browsershot\Browsershot;
// İlk olarak, sunucunuzda Chrome’un kurulu olması gerekir
// Paylaşımlı barındırmada mı? İzinlerde sıkıntı yaşayabilirsiniz.
// Sunucusuz sistemde mi? Sadece Chrome için 500MB+ yük.
Browsershot::url(‘https://example.com‘)
->screenshot()
->save($pathToImage);
?>
<p><strong>Sorunlar:</strong></p>
<ul>
<li>Sistem düzeyinde Chrome kurulumu gerektirir</li>
<li>Paylaşımlı barındırmada çalışmaz (root erişimi yok)</li>
<li>Sunucusuz sistemde aşırı yük oluşturur</li>
<li>2021'den beri güncellenmedi</li>
</ul>
<p><strong>Seçenek 2: DomPDF (Sınırlı CSS)</strong><br/></p>
<div class="highlight js-code-highlight">
<pre class="highlight php"><code><?php
use Barryvdh\DomPDF\Facade\Pdf;
$pdf = Pdf::loadView(‘invoice’, [‘data’ => $data]);
return $pdf->download(‘invoice.pdf’);
// Temel PDF’ler için iyi çalışır, ancak:
// – CSS Grid? Hayır
// – Modern flexbox? Sınırlı
// – SVG? Sınırlı
// – Fontlar? Karmaşık
?>


