Code Monkey home page Code Monkey logo

html2pdf's Introduction

HTML to PDF conversion extension for Yii2


This extension provides basic support for HTML to PDF and PHP to PDF conversion.

For license information check the LICENSE-file.

Latest Stable Version Total Downloads Build Status

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist yii2tech/html2pdf

or add

"yii2tech/html2pdf": "*"

to the require section of your composer.json.

Note: you'll have to install software for the actual HTML to PDF conversion separately, depending on the particular converter, you would like to use.

Usage

This extension provides support for HTML to PDF and PHP to PDF conversion. It allows composition of the PDF files from HTML and via rendering PHP templates.

Extension functionality is aggregated into \yii2tech\html2pdf\Manager application component. Application configuration example:

<?php

return [
    'components' => [
        'html2pdf' => [
            'class' => 'yii2tech\html2pdf\Manager',
            'viewPath' => '@app/views/pdf',
            'converter' => 'wkhtmltopdf',
        ],
    ],
    ...
];

For the simple conversion you can use \yii2tech\html2pdf\Manager::convert() and \yii2tech\html2pdf\Manager::convertFile() methods:

<?php

$html = <<<HTML
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p>Simple Content</p>
</body>
</html>
HTML;

// create PDF file from HTML content :
Yii::$app->html2pdf
    ->convert($html)
    ->saveAs('/path/to/output.pdf');

// convert HTML file to PDF file :
Yii::$app->html2pdf
    ->convertFile('/path/to/source.html')
    ->saveAs('/path/to/output.pdf');

The actual conversion result determined by particular converter used. You may use \yii2tech\html2pdf\Manager::$converter property for the converter setup.

Several built-in converters are provided:

Heads up! Most of the provided converters require additional software been installed, which is not provided by his extension by default. You'll have to install it manually, once you decide, which converter you will use. Please refer to the particular converter class for more details.

You may specify conversion options via second argument of the convert() or convertFile() method:

<?php

Yii::$app->html2pdf
    ->convertFile('/path/to/source.html', ['pageSize' => 'A4'])
    ->saveAs('/path/to/output.pdf');

You may setup default conversion options at the \yii2tech\html2pdf\Manager level:

<?php

return [
    'components' => [
        'html2pdf' => [
            'class' => 'yii2tech\html2pdf\Manager',
            'viewPath' => '@app/pdf',
            'converter' => [
                'class' => 'yii2tech\html2pdf\converters\Wkhtmltopdf',
                'defaultOptions' => [
                    'pageSize' => 'A4'
                ],
            ]
        ],
    ],
    ...
];

Note: the actual list of available conversion options depends on the particular converter to be used.

Template usage

You may create PDF files rendering PHP templates (view files), which composes HTML output. Such files are processed as regular view files, allowing passing params and layout wrapping. Method \yii2tech\html2pdf\Manager::render() used for this:

<?php

Yii::$app->html2pdf
    ->render('invoice', ['user' => Yii::$app->user->identity])
    ->saveAs('/path/to/output.pdf');

You may use a shared layout for the templates, which can be setup via \yii2tech\html2pdf\Manager::$layout.

During each rendering view is working in context of \yii2tech\html2pdf\Template object, which can be used to adjust layout or PDF conversion options inside view file:

<?php
/* @var $this \yii\web\View */
/* @var $context \yii2tech\html2pdf\Template */
/* @var $user \app\models\User */
$context = $this->context;

$context->layout = 'layouts/payment'; // use specific layout for this template

// specify particular PDF conversion for this template:
$context->pdfOptions = [
    'pageSize' => 'A4',
    // ...
];
?>
<h1>Invoice</h1>
<p>For: <?= $user->name ?></p>
...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.