sabuj073 / laravel-pdf-generator
PDF generator for Laravel from HTML or Blade views
Requires
- php: ^8.1
- dompdf/dompdf: ^2.0
- illuminate/support: ^10.0|^11.0|^12.0
- illuminate/view: ^10.0|^11.0|^12.0
- mpdf/mpdf: ^8.0
This package is auto-updated.
Last update: 2026-03-10 06:12:18 UTC
README
HTML অথবা Blade view থেকে PDF বানান (Dompdf ব্যবহার)। বাংলা ফন্ট সাপোর্ট আছে – বাংলা টেক্সট PDF এ সঠিকভাবে দেখাবে।
Installation
composer require sabuj073/laravel-pdf-generator
php artisan vendor:publish --tag=pdf-generator-config
Bangla ফন্ট সেটআপ (বাংলা + ইংরেজি দুটোই সাপোর্ট)
Noto Sans Bengali একটি ফন্ট দিয়েই বাংলা ও ইংরেজি দুটো ঠিকভাবে দেখাবে।
অটো ইনস্টল (সুপারিশকৃত)
php artisan pdf-generator:install-bangla-font
এটা storage/fonts/NotoSansBengali-Regular.ttf এ ফন্ট ডাউনলোড করবে। .env এ পাথ দিতে পারেন: PDF_BANGLA_FONT_PATH= অথবা ফাঁকা রাখলেও হবে – প্যাকেজ নিজে storage/fonts/ চেক করবে।
ম্যানুয়াল ইনস্টল
যদি কমান্ড কাজ না করে:
- https://fonts.google.com/noto/specimen/Noto+Sans+Bengali এ যান
- Download করুন, ZIP এক্সট্রাক করে
NotoSansBengali-Regular.ttfবের করুন storage/fonts/এ রাখুন অথবা প্যাকেজেরvendor/sabuj073/laravel-pdf-generator/resources/fonts/এ
প্যাকেজের ভেতরে ফন্ট রাখা
আপনি চাইলে .ttf ফাইল সরাসরি প্যাকেজের resources/fonts/ ফোল্ডারে রেখে পাবলিশ করতে পারেন – তখন ইউজারদের আলাদা ডাউনলোড করতে হবে না। (Noto Sans Bengali OFL লাইসেন্সের অধীন, পুনর্বিতরণ অনুমোদিত।)
Configuration
.env:
PDF_PAPER=A4
PDF_ORIENTATION=portrait
PDF_FONT="DejaVu Sans"
PDF_BANGLA_FONT_ENABLED=true
PDF_BANGLA_FONT_PATH= (অথবা পুরো পাথ দিন)
PDF_BANGLA_FONT_FAMILY="Noto Sans Bengali"
Usage
Blade view থেকে ডাউনলোড (বাংলা থাকলে true দিন):
use Sabuj073\PdfGenerator\PdfGenerator; $pdf = app(PdfGenerator::class); return $pdf->download('invoices.show', ['invoice' => $invoice], 'invoice-001.pdf', true);
ব্রাউজারে ইনলাইন দেখানোর জন্য:
return $pdf->stream('reports.monthly', ['data' => $data], 'report.pdf', true);
ফাইলে সেভ:
$pdf->save('invoices.show', storage_path('app/invoices/inv-001.pdf'), ['invoice' => $invoice], true);
HTML স্ট্রিং থেকে (বাংলা সহ):
$html = '<h1>নমস্কার</h1><p>বাংলা টেক্সট PDF এ আসবে।</p>'; $rawPdf = $pdf->fromHtml($html, true); // or $pdf->saveHtml($html, storage_path('app/temp.pdf'), true);
কনফিগে PDF_BANGLA_FONT_ENABLED=true এবং ফন্ট পাথ সেট থাকলে loadView/fromHtml ডিফল্টই Bangla ফন্ট ব্যবহার করে। আলাদা করে চাইলে চতুর্থ/তৃতীয় আর্গুমেন্টে true দিন।
রাও আউটপুট (কাস্টম রেসপন্স):
$output = $pdf->fromView('reports.summary', ['items' => $items]); return response($output, 200, ['Content-Type' => 'application/pdf']);
Blade template
সাধারণ HTML + CSS ব্যবহার করুন। ইনলাইন CSS ভালো কাজ করে।
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <style> body { font-family: DejaVu Sans, sans-serif; } table { width: 100%; border-collapse: collapse; } </style> </head> <body> <h1>Invoice #{{ $invoice->id }}</h1> ... </body> </html>