Installation
- Clone or download the project repository.
- Navigate to the project directory in your terminal.
- Run
composer install
to install all dependencies.
composer require mpdf/mpdf
Configuration
- Copy
.env.example
to.env
. - Configure your database settings in the
.env
file. - Set up your email settings in the
.env
file.
Custom Bangla Font Installation
- Download your desired Bangla font and place it in the
resources/fonts
directory. - Download bangla font
Nikosh.ttf
- Copy the font paste
laravel-PDF-bangla-font\vendor\mpdf\mpdf\ttfonts
- Open
config/pdf.php
and update the'default_font'
key with the name of your Bangla font file (without the extension).
Usage
- Define your route to generate the PDF.
Route::get('/generate-pdf', [FormController::class, 'generatePDFAndSendEmail']);
- Implement the
generatePDFAndSendEmail
method in your controller.
public function generatePDFAndSendEmail(Request $request)
{ // Prepare data for the PDF $emailData = [ 'email' => '[email protected]', 'password' => '123', 'eng_name' => 'Hasibur Rahman', 'ban_name' => 'হাসিবুর রহমান', 'father_name' => 'Hasmat Ali', 'mother_name' => 'Zainab Begum', 'permanent_address' => 'California', 'mobile' => '01700000000', 'blood_group' => 'AB+', 'department_id' => 9, 'date_of_birth' => '1998-12-21', 'passing_year_id' => 4, 'image' => 'https://www.redwolf.in/image/cache/catalog/stickers/tom-face-sticker-india-600x800.jpg', 'signature' => 'https://signature.freefire-name.com/img.php?f=3&t=Tom', 'lm_no' => '2000', 'current_date' => '2022-11-30', ]; // Generate PDF content $pdfContent = $this->generatePDF($emailData); // Send email with PDF attachment $this->sendEmailWithAttachment($emailData, $pdfContent, '[email protected]'); // Return a response indicating success return "Email sent with PDF attachment.";
}
- Implement the
generatePDF
andsendEmailWithAttachment
methods in your controller.
private function generatePDF($data)
{ // Create new mPDF instance $mpdf = new \Mpdf\Mpdf([ 'default_font_size' => 16, 'default_font' => 'nikosh', // Change this to your desired Bengali font ]); // Generate PDF content with data $pdfContent = view('pdf.bengali_pdf', $data)->render(); // Write HTML content to PDF $mpdf->WriteHTML($pdfContent); // Get PDF content as string return $mpdf->Output('', 'S');
} private function sendEmailWithAttachment($emailData, $pdfData, $recipientEmail)
{ // Send email with PDF attachment Mail::send('pdf.bangla_email', $emailData, function ($message) use ($emailData, $pdfData, $recipientEmail) { $message->to($recipientEmail, 'Recipient Name') ->subject('New User Registration') ->attachData($pdfData, 'LM-'.$emailData['lm_no'].'.pdf'); });
}
View
Your view file (pdf.bengali_pdf.blade.php
) should contain the HTML structure for your PDF content.
<!-- Sample PDF content -->
<h1>{{ $emailData['eng_name'] }}</h1>
<h2>{{ $emailData['ban_name'] }}</h2>
<p>Father's Name: {{ $emailData['father_name'] }}</p>
<p>Mother's Name: {{ $emailData['mother_name'] }}</p>
<p>Permanent Address: {{ $emailData['permanent_address'] }}</p>
<p>Mobile: {{ $emailData['mobile'] }}</p>
<p>Blood Group: {{ $emailData['blood_group'] }}</p>
<p>Date of Birth: {{ $emailData['date_of_birth'] }}</p>
<!-- You can include additional dynamic data as required -->
Running the Application
- Start your Laravel development server.
- Visit the
/generate-pdf
route in your browser. - Verify that the email is sent with the PDF attachment.
Discover more from Coursity
Subscribe to get the latest posts sent to your email.