Laravel PDF: mPDF wrapper for Laravel 5
Easily generate PDF documents from HTML right inside of Laravel using this mPDF wrapper., (*1)
Installation
Require this package in your composer.json
or install it by running:, (*2)
composer require vzool/laravel-pdf
To start using Laravel, add the Service Provider and the Facade to your config/app.php
:, (*3)
'providers' => [
// ...
vzool\LaravelPdf\PdfServiceProvider::class
]
'aliases' => [
// ...
'PDF' => vzool\LaravelPdf\Facades\Pdf::class
]
Basic Usage
To use Laravel PDF add something like this to one of your controllers. You can pass data to a view in /resources/views
., (*4)
use PDF;
function generate_pdf() {
$data = [
'foo' => 'bar'
];
$pdf = PDF::loadView('pdf.document', $data);
return $pdf->stream('document.pdf');
}
Config
You can use a custom file to overwrite the default configuration. Just create config/pdf.php
and add this:, (*5)
return [
'mode' => '',
'format' => 'A4',
'defaultFontSize' => '12',
'defaultFont' => 'sans-serif',
'marginLeft' => 10,
'marginRight' => 10,
'marginTop' => 10,
'marginBottom' => 10,
'marginHeader' => 0,
'marginFooter' => 0,
'orientation' => 'P',
'title' => 'Laravel PDF',
'author' => '',
'watermark' => '',
'showWatermark' => false,
'watermarkFont' => 'sans-serif',
'SetDisplayMode' => 'fullpage',
'watermarkTextAlpha' => 0.1
];
If you want to have headers and footers that appear on every page, add them to your <body>
tag like this:, (*6)
<htmlpageheader name="page-header">
Your Header Content
</htmlpageheader>
<htmlpagefooter name="page-footer">
Your Footer Content
</htmlpagefooter>
Now you just need to define them with the name attribute in your CSS:, (*7)
@page {
header: page-header;
footer: page-footer;
}
Inside of headers and footers {PAGENO}
can be used to display the page number., (*8)
Included Fonts
By default you can use all the fonts shipped with mPDF., (*9)
Custom Fonts
You can use your own fonts in the generated PDFs. The TTF files have to be located in one folder, e.g. /resources/fonts/
. Add this to your configuration file (/config/pdf.php
):, (*10)
return [
'custom_font_path' => base_path('/resources/fonts/'), // don't forget the trailing slash!
'custom_font_data' => [
'examplefont' => [
'R' => 'ExampleFont-Regular.ttf', // regular font
'B' => 'ExampleFont-Bold.ttf', // optional: bold font
'I' => 'ExampleFont-Italic.ttf', // optional: italic font
'BI' => 'ExampleFont-Bold-Italic.ttf' // optional: bold-italic font
]
// ...add as many as you want.
]
];
Now you can use the font in CSS:, (*11)
body {
font-family: 'examplefont', sans-serif;
}
Set Protection
To set protection, you just call the SetProtection()
method and pass an array with permissions, an user password and an owner password., (*12)
The passwords are optional., (*13)
There are a fews permissions: 'copy'
, 'print'
, 'modify'
, 'annot-forms'
, 'fill-forms'
, 'extract'
, 'assemble'
, 'print-highres'
., (*14)
use PDF;
function generate_pdf() {
$data = [
'foo' => 'bar'
];
$pdf = PDF::loadView('pdf.document', $data);
$pdf->SetProtection(['copy', 'print'], '', 'pass');
return $pdf->stream('document.pdf');
}
Find more information to SetProtection()
here: https://mpdf.github.io/reference/mpdf-functions/setprotection.html, (*15)
Add a new instance called instance
which will return your mPDF instance., (*16)
License
Laravel PDF is open-sourced software licensed under the MIT license, (*17)