Home | About | Web Stories | View All Posts

26 Apr 2022

How to install mpdf manually in Yii2 framework

As we know mPDF is a poplular PHP library. We can generate PDF files from UTF-8 encoded HTML using this PHP library. It is mainly based on FPDF and HTML2FPDF. It can be installed by automatically using composer and also manually(not recommended officially).

The mPdf version 7 does not advice for manual installation without composer so it is discouraged and not officially supported. The new mPdf uses many dependencies - libraries and classes. You need to install those dependencies also manually in the Yii2 framework. Please visit at "How to create PDF file in Yii2 using mpdf" for automatic installation using composer.

You can find library dependencies in the "require" array entry in the root composer.json file as following -
    ------------
    ------------
    },
	"require": {
		"php": "^5.6 || ^7.0 || ~8.0.0 || ~8.1.0",
		"ext-gd": "*",
		"ext-mbstring": "*",
		"myclabs/deep-copy": "^1.7",
		"paragonie/random_compat": "^1.4|^2.0|^9.99.99",
		"php-http/message-factory": "^1.0",
		"psr/http-message": "^1.0",
		"psr/log": "^1.0 || ^2.0",
		"setasign/fpdi": "^2.1"
	},
	"require-dev": {
		"mockery/mockery": "^1.3.0",
        --------------
        --------------

Installing mPdf dependencies

We need to install two require dependencies before mPdf library embed - "psr/log" and "setasign/fpdi". Other dependencies("myclabs/deep-copy", "paragonie/random_compat" etc.) are installed automatically in vendor folder when you install the Yii2 advance applicaiton package.

  1. Installing "psr/log" -
    Navigate at the Yii2 project folder in command window and enter the following command ('yii2mpdf' is my yii2 project folder)-
       
    C:\xampp\htdocs\yii2mpdf>composer require psr/log
    
    You will get the error - "Interface 'Psr\Log\LoggerAwareInterface' not found" in the absence of "psr/log" package install directory in vendor folder of the Yii2 framwork.

  2. Installing "setasign/fpdi" -
    Navigate at the Yii2 project folder in command window and enter the following command ('yii2mpdf' is my yii2 project folder)-
       
    C:\xampp\htdocs\yii2mpdf>composer require setasign/fpdi
    
    You will get the error - "Trait 'setasign\Fpdi\FpdiTrait' not found" in the absence of "setasign/fpdi" package install directory in vendor folder of the Yii2 framwork.

Installing mPdf library manually

Please visit at the url - "https://github.com/mpdf/mpdf for downloading the mPDF library files. You can download the mPDF library at this page by clicking at the "Code" button which shows the download link for the mPDF library zip like following screenshot -

mPDF lirary files zip download

Now navigate at the vendor folder in the Yii2 project(yii2mpdf is the my project folder name) and create a new folder "mpdf". Create another folder named as "mpdf" in this folder and copy all the files and folder of the downloaded mPDF library. You can observe the path and folders and files in the screenshot below -



Now it is time to inform to the Yii2 framework for newly added mPDF library files and folder. We will add the TWO new entries for mPDF into the autoload static file of the composer application. Below is the file path in my Yii2 project(yii2mpdf) -

File path - C:\xampp\htdocs\yii2mpdf\vendor\composer\autoload_static.php

We will place following first new entry for mPDF "LengthsPsr4" into "$prefixLengthsPsr4" array -
        ///////////////////ADDED FOR MPDF LIBRARY - STARTS//////////////////
        'M' => 
        array (
            'Mpdf\\' => 5,
        ),
        ///////////////////ADDED FOR MPDF LIBRARY - ENDS//////////////////
The following code shows the new entry in the "$prefixLengthsPsr4" array -
    public static $prefixLengthsPsr4 = array (
    ------------
    -------
    ----------------
    'P' => 
        array (
            'Psr\\Log\\' => 8,
            'Psr\\Http\\Message\\' => 17,
            'Psr\\EventDispatcher\\' => 20,
            'Psr\\Container\\' => 14,
            'Prophecy\\' => 9,
        ),
        ///////////////////ADDED FOR MPDF LIBRARY - STARTS//////////////////
        'M' => 
        array (
            'Mpdf\\' => 5,
        ),
        ///////////////////ADDED FOR MPDF LIBRARY - ENDS//////////////////
        'G' => 
        array (
            'GuzzleHttp\\Psr7\\' => 16,
        ),
        ------------------
        -----------------
        ------------------
        )
    
We will place following second new entry for mPDF "DirsPsr4" into "$prefixDirsPsr4" array -
        ///////////////////ADDED FOR MPDF LIBRARY - STARTS//////////////////
        'Mpdf\\' => 
        array (
            0 => __DIR__ . '/..' . '/mpdf/mpdf/src',
        ),
         ///////////////////ADDED FOR MPDF LIBRARY - EMDS//////////////////
The following code shows the new entry in the "$prefixLengthsPsr4" array -
    public static $prefixDirsPsr4 = array (
    
    ---------
    ------------
     'Psr\\EventDispatcher\\' => 
        array (
            0 => __DIR__ . '/..' . '/psr/event-dispatcher/src',
        ),
        'Psr\\Container\\' => 
        array (
            0 => __DIR__ . '/..' . '/psr/container/src',
        ),
        'Prophecy\\' => 
        array (
            0 => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy',
        ),
        ///////////////////ADDED FOR MPDF LIBRARY - STARTS//////////////////
        'Mpdf\\' => 
        array (
            0 => __DIR__ . '/..' . '/mpdf/mpdf/src',
        ),
         ///////////////////ADDED FOR MPDF LIBRARY - EMDS//////////////////
        'GuzzleHttp\\Psr7\\' => 
        array (
            0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src',
        ),
        -------------
        ------------------
        )
    

Writing action code in the controller for generating pdf file

First, we will import or call the mpdf library into a controller by using the code "use Mpdf\Mpdf;". Here for demo purpose, we will use the SiteController controller. You can create or use own controller as per your requirement.

Controller file path - C:\xampp\htdocs\yii2mpdf\frontend\controllers\SiteController.php
namespace app\controllers;

use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use yii\filters\VerbFilter;
use app\models\LoginForm;
use app\models\ContactForm;

use Mpdf\Mpdf; //Importing the mpdf library

class SiteController extends Controller {
Now, we will write the action code in the above controller class for generating the pdf file using the mpdf library. We need to create an object for mPDF. The object will be used for calling the mpdf method to show or access the html content into a view file. Following are the action function code -
// importing or calling the mPDF library into a controller
use Mpdf\Mpdf;


public function actionTestPdf(){
 $mpdf=new mPDF();
 $mpdf->WriteHTML($this->renderPartial('test_pdf_content'));
 $mpdf->Output();
 exit;
 }
 
You can check in detail for the function renderPartial() (used in the above code) at View rendering process in yii2 framework

Writing pdf content in a view file for passing it into controller

We will create new php file for showing the html content in the pdf format. Below is the file path for the html content -
View file path - C:\xampp\htdocs\yii2mpdf\frontend\views\site\pdf_content.php

This is sample html content for showing it in the generated pdf file. Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.


Accessing the pdf file

We can access the html content of the above view file in pdf format using following action url - "index.php?r=site/test-pdf"
Click here to view the pdf file as live demo.

If you prefer to install mPDF using composer - please visit and check it at "How to create PDF file in Yii2 using mpdf"

Best Books for Web Development in PHP


1

Programming PHP : Creating Dynamic Web Pages

Programming PHP : Creating Dynamic Web Pages

Book Description

It's the new and updated version of this book - Fourth Edition - that teaches you everything you need to know to build effective web applications using the latest features in PHP 7.4.

The book explains language syntax, programming techniques, and other details using examples that illustrate both correct usage and common idioms.

For those with a working knowledge of HTML, the book contains many style tips and practical programming advice in a clear and concise manner to help you become a top PHP programmer.

The book teaches about fundamentals of the language including data types, variables, operators and flow control statements. It explores about functions, strings, arrays and objects.

It teaches to apply common web application techniques, such as form processing, data validation, session tracking, and cookies.

It teaches to interact with relational databases such as MySQL or NoSQL databases such as MongoDB. It also teaches to generate dynamic images, creating PDF files, and parsing XML files.

You can learn about secure scripts, error handling, performance tuning and other advanced topics in this book.

You can get a quick reference to PHP core functions and standard extensions in this book.


Book details

Format: Kindle Edition, Paperback
Rating: 4.6 out of 5
Author: Kevin Tatroe, Peter Macintyre
Print Length: 540 pages
Publication Date: 27 March 2020
Publisher: O′Reilly, 4th edition
Kindle Price: Rs. 1,567.50*
Paperback Price: Rs. 3,614.00*
*Price and stock are correct and available at the time of article publication.

Get it here from Amazon


2

PHP Web Development with Laminas

PHP Web Development with Laminas


Book Description

This book teaches how to build fully secure and functional e-commerce applications with PHP using the next generation Zend Framework-Laminas. You can learn to develop modern object-oriented applications with PHP by using Test-Driven Development (TDD) and Behavior-Driven Development (BDD) aided by mature reusable components.

This book provides a practical approach to equip you with the knowledge of the Laminas framework needed to start building web applications based on reuse of loosely coupled components.

You will learn how to build the basic structure of a PHP web application divided into layers. You can understand the MVC components of Laminas and be able to take advantage of the Eclipse platform as a method to develop with Laminas.

Books teach to explore how object-relational mapping is implemented with Laminas-DB, behavior-driven development concepts to sharpen your skills, how to build complete models and reusable components, practice testing How to Create HTML Forms With Laminas-Forms.

By the end of this web development book, you will be able to build completely secure MVC applications in PHP language using Laminas.

Book details

Format: Kindle Edition
Author: Flávio Gomes da Silva Lisboa
Text-to-Speech: Enabled
Enhanced typesetting: Not Enabled
X-Ray: Not Enabled
Word Wise: Not Enabled
Publication Date: 9 December 2022
Publisher: Packt Publishing
Kindle Price: Rs. 750.74*
*Price and stock are correct and available at the time of article publication.

Get it here from Amazon


3

Getting started with Laravel 9, master the most popular PHP framework

Getting started with Laravel 9, master the most popular PHP framework

Book Description

This book is for all those who want to build their first application in Laravel 9. This book provides a step-by-step introduction to the writing framework, gets to know its most relevant aspects and focuses above all on practice.

Using this book you will be able to build any basic application with the framework. There are total 19 chapters in this book. Using this book, you will be able to know what are the required software to install Laravel for different operating systems.

In this book you can learn - project creation, database configuration, routing, view controllers, redirection, directive and templating engines in the form of blades, model building, CRUD applications etc.

You can learn to perform common eloquent operations that can be applied to databases using query builders. You can learn how to generate test data using classes.

You can also learn the file upload process. You can learn how to use REST APIs through CRUD type applications in VU3 using Axios requests and web components with Oruga UI.

You can also learn how to configure Browsersync with Laravel to automatically reload applications. You can learn how to protect an app in Vue with the login required to access its various modules using SPA authentication or Laravel Sanctum tokens.

Book details

Format: Kindle Edition
Rating: 1 out of 5
Author: Andrés Cruz Yoris
Print Length: 453 pages
Publication Date: 8 May 2022
Text-to-Speech: Enabled
Screen Reader: Supported
Enhanced typesetting: Enabled
X-Ray: Not Enabled
Word Wise: Not Enabled
Kindle Price: Rs. 449.00*
*Price and stock are correct and available at the time of article publication.

Get it here from Amazon


4

Learning Drupal as a framework: Your guide to custom Drupal 9. Full code included

Learning Drupal as a framework: Your guide to custom Drupal 9. Full code included

Book Description

This book uses PHP> 7.4. This course teaches you about the advanced concepts of Drupal 9, object-oriented PHP and Symfony components.

After the course, you will be able to build a variety of robust and scalable software solutions.

This book discusses advanced topics such as custom entities, entity forms, access controls, events, caching, workflows, and more when building real software.

It gives you powerful and ready-to-use snippets for your next Drupal project with +2400 lines of custom code.

Book details

Format: Kindle Edition
Rating: 5 out of 5
Author: Stef Van Looveren
Print Length: 282 pages
Publication Date: 17 July 2022
Text-to-Speech: Enabled
Screen Reader: Supported
Enhanced typesetting: Enabled
X-Ray: Not Enabled
Word Wise: Not Enabled
Kindle Price: Rs. 449.00*
*Price and stock are correct and available at the time of article publication.

Get it here from Amazon


5

Getting started with CodeIgniter 4

Getting started with CodeIgniter 4

Book Description

This book is for anyone who wants to build their first applications in CodeIgniter 4 a popular PHP framework, this writing offers a step-by-step introduction to the framework, knowing the most relevant aspects of it, and is focused above all on practice.

The book is aimed at those people who want to learn something new, learn about a framework that has very little documentation, who want to improve a skill in web development, who want to grow as a developer, and who want to continue scaling their path with other frameworks superior to this one.

This book has a total of 15 chapters and consists of explanations and practices. It teaches you how to run the framework, how to configure a database, how to create the first components, how to use of migrations for table management, working with the MVC, how to prepare CRUD application, how to use the routes, grouped routes, their options, and the different types.

You can learn about the use of the session and also of the flash session to save data and present it to the user. You can learn to manage views in a reusable way. You can learn about how to work with HTML forms and apply validations from the server side in CodeIgniter. You can learn about the authentication module with the login interface, and how to build a Rest Api type CRUD that can be consumed with JSON or XML.

You can also learn about generating test data with seeders, how to handle the relational schema of the database, how to do uploading files in the application, how to use libraries and help functions, how to integrate the PayPal platform, etc.

Book details

Format: Kindle Edition
Author: Andres Cruz
Print Length: 328 pages
Publication Date: 13 May 2022
Text-to-Speech: Enabled
Screen Reader: Supported
Enhanced typesetting: Enabled
X-Ray: Not Enabled
Word Wise: Not Enabled
Kindle Price: Rs. 319.00*
*Price and stock are correct and available at the time of article publication.

Get it here from Amazon


Tags :
Aashutosh Kumar Yadav

By Aashutosh Kumar Yadav

He is a PHP-based UI/Web designer and developer by profession and very interested in technical writing and blogging. He has been writing technical content for about 10 years and has proficient in practical knowledge and technical writing.
@www.infotokri.in

0 comments:

Post a Comment