This plugin renders html views as image (jpg or png) using wkhtmltoimage
command line utility from WkHtmlToPdf package.
- CakePHP 3.5+
- wkhtmltoimage
You can install this plugin into your CakePHP application using Composer.
composer require andrej-griniuk/cakephp-html-to-image-view
First of all you need to load the plugin in your bootstrap.php
Plugin::load('HtmlToImageView', ['bootstrap' => true, 'routes' => true]);
This will enable jpeg
and png
extensions on any route. Alternatively you could load the plugin without 'routes' => true
and only enable extensions on the routes you would like.
Layout path and templates sub dir are img
, e.g. you'll need to create src/Template/Layout/img/defaut.ctp
for your image views and and image view template would be, for example, src/Template/Events/img/view.ctp
. Then simply call, for example, http://localhost/events/view.jpg
to render your view as image.
Default path to wkhtmltoimage
binary is /usr/bin/wkhtmltoimage
. You can change it by setting HtmlToImageView.binary
configuration variable:
Configure::write('HtmlToImageView.binary', '/another/path/to/wkhtmltoimage');
You can pass some options to wkhtmltoimage
from your view via $this->viewOptions(['imageOptions' => [...])
. List of available options:
- crop-h - Set height for cropping
- crop-w - Set width for cropping
- crop-x - Set x coordinate for cropping
- crop-y - Set y coordinate for cropping
- format - Output file format (jpg/png)
- width - Set screen width, note that this is used only as a guide line (default 1024)
- height - Set screen height (default is calculated from page content)
- zoom - Zoom level
- quality - Output image quality (between 0 and 100) (default 94)
For example:
$this->viewOptions([
'imageOptions' => [
'width' => 250,
'zoom' => 2
],
]);
See the full documentation and installation instruction for wkhtmltoimage
at the project website
https://github.com/andrej-griniuk/cakephp-html-to-image-view/issues
Copyright (c) 2018, Andrej Griniuk and licensed under The MIT License.