2017 © Pedro Peláez
 

library laravel-mpdf

Laravel Mpdf: Using Mpdf in Laravel 5 for generate Pdfs.

image

carlos-meneses/laravel-mpdf

Laravel Mpdf: Using Mpdf in Laravel 5 for generate Pdfs.

  • Thursday, June 15, 2017
  • by carlos-meneses
  • Repository
  • 1 Watchers
  • 7 Stars
  • 1,254 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 0 Open issues
  • 4 Versions
  • 22 % Grown

The README.md

Laravel Mpdf: Generate PDF Files with ease.

Easily generate PDF files using Laravel's Blade templates and the MPDF library. This package has been tested since Laravel 5.4., (*1)

Installation

Run this composer command in your laravel application:, (*2)

composer require carlos-meneses/laravel-mpdf

Important Notes:

br/, (*5)

To start using Laravel, add the Service Provider and the Facade to your config/app.php:, (*6)

Note: This package supports auto-discovery features of Laravel 5.5+, You only need to manually add the service provider and alias if working on Laravel version lower then 5.5., (*7)

'providers' => [
    // ...
    Mccarlosen\LaravelMpdf\LaravelMpdfServiceProvider::class
]
'aliases' => [
    // ...
    'PDF' => Mccarlosen\LaravelMpdf\Facades\LaravelMpdf::class
]

Basic Usage

To use Laravel Mpdf add something like this to one of your controllers. You can pass data to a view in /resources/views., (*8)

//....

use PDF;

class ReportController extends Controller 
{
    public function viewPdf()
    {
        $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 execute php artisan vendor:publish --tag=mpdf-config or create config/pdf.php and add this:, (*9)

return [
    'mode'                       => '',
    'format'                     => 'A4',
    'default_font_size'          => '12',
    'default_font'               => 'sans-serif',
    'margin_left'                => 10,
    'margin_right'               => 10,
    'margin_top'                 => 10,
    'margin_bottom'              => 10,
    'margin_header'              => 0,
    'margin_footer'              => 0,
    'orientation'                => 'P',
    'title'                      => 'Laravel mPDF',
    'author'                     => '',
    'creator'                    => '',
    'subject'                    => '',
    'keywords'                   => '',
    'watermark'                  => '',
    'show_watermark'             => false,
    'show_watermark_image'       => false,
    'watermark_font'             => 'sans-serif',
    'display_mode'               => 'fullpage',
    'watermark_text_alpha'       => 0.1,
    'watermark_image_path'       => '',
    'watermark_image_alpha'      => 0.2,
    'watermark_image_size'       => 'D',
    'watermark_image_position'   => 'P',
    'custom_font_dir'            => '',
    'custom_font_data'           => [],
    'auto_language_detection'    => false,
    'temp_dir'                   => storage_path('app'),
    'pdfa'                       => false,
    'pdfaauto'                   => false,
    'use_active_forms'           => false,
];

To override this configuration on a per-file basis use the fourth parameter of the initializing call like this:, (*10)

// ...

PDF::loadView('pdf', $data, [], [
    'title' => 'Another Title',
    'margin_top' => 0
])->save($pdfFilePath);

Get instance your Mpdf

You can access all mpdf methods through the mpdf instance with getMpdf method., (*11)

use PDF;

$pdf = PDF::loadView('pdf.document', $data);
$pdf->getMpdf()->AddPage(/*...*/);

Headers and Footers

If you want to have headers and footers that appear on every page, add them to your <body> tag like this:, (*12)

<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:, (*13)

@page {
  header: page-header;
  footer: page-footer;
}

Inside of headers and footers {PAGENO} can be used to display the page number., (*14)

Included Fonts

By default you can use all the fonts shipped with Mpdf., (*15)

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):, (*16)

return [
    'custom_font_dir'  => base_path('resources/fonts/'), // don't forget the trailing slash!
    'custom_font_data' => [
        'examplefont' => [ // must be lowercase and snake_case
            '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:, (*17)

body {
  font-family: 'examplefont', sans-serif;
}

Chunk HTML

For big HTML you might get Uncaught Mpdf\MpdfException: The HTML code size is larger than pcre.backtrack_limit xxx error, or you might just get empty or blank result. In these situations you can use chunk methods while you added a separator to your HTML:, (*18)

//....
use PDF;
class ReportController extends Controller 
{
    public function generate_pdf()
    {
        $data = [
            'foo' => 'hello 1',
            'bar' => 'hello 2'
        ];
        $pdf = PDF::chunkLoadView('<html-separator/>', 'pdf.document', $data);
        return $pdf->stream('document.pdf');
    }
}

```html, (*19)

Hello World

{{ $foo }}
{{ $bar }}

## Added Support for the Macroable Trait You can configure the macro in the `AppServiceProvider` provider file. ```php //... use Mccarlosen\LaravelMpdf\LaravelMpdf; class AppServiceProvider extends ServiceProvider { //... public function boot() { LaravelMpdf::macro('hello', function () { return "Hello, World!"; }); } //... }

Now, (*20)

PDF::loadView(/* ... */)->hello();

License

Laravel Mpdf is open-sourced software licensed under the MIT license, (*21)

The Versions

15/06 2017

dev-master

9999999-dev

Laravel Mpdf: Using Mpdf in Laravel 5 for generate Pdfs.

  Sources   Download

MIT

The Requires

 

laravel pdf mpdf

22/04 2017

v1.1

1.1.0.0

Laravel Mpdf: Using Mpdf in Laravel 5 for generate Pdfs.

  Sources   Download

MIT

The Requires

 

laravel pdf mpdf

21/04 2017

v1.0

1.0.0.0

Laravel Mpdf: Using Mpdf in Laravel 5 for generate Pdfs.

  Sources   Download

MIT

The Requires

 

laravel pdf mpdf

21/04 2017

v1.0-beta

1.0.0.0-beta

Laravel Mpdf: Using Mpdf in Laravel 5 for generate Pdfs.

  Sources   Download

MIT

The Requires

 

laravel pdf mpdf