open-administration / php-latex-renderer
Renders LaTeX Templates in PHP
Installs: 434
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Type:libary
Requires
- php: ^7.4|^8.0
- psr/log: ^1|^2|^3
- symfony/process: ^5.3|^6.0
- twig/twig: ^3.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.2
- monolog/monolog: ^2.3
- roave/security-advisories: dev-latest
README
wraps latex rendering and generating with twig templates. This library does
- using twig for latex templating
- inserting user data into latex templates
- escaping user data, so no (new) latex commands can be introduced by userdata
- renders latex file and returns pdf
- has compact latex error logs
Installation
Installation via composer is suggested
composer require open-administration/php-latex-renderer
Usage
require './vendor/autoload.php'; $tex = new LatexRenderer('./templates/'); // <- dir where to search the templates $tex->setTmpDir('./runtime/'); // <- where to build the latex files $pdf = $tex->renderPdf('simple-report', [ // <- which template to use (file ending .tex.twig) 'title' => 'My Custom Title', // <- variables to set 'author' => 'Me!', ]); // output / save the pdf with file_put_contents('main.pdf', $pdf); // or echo with fitting header header("Content-type:application/pdf"); echo $pdf;
Twig options
The following symbols are used for twig templating
$options = [ 'tag_block' => ['(%', '%)'], 'tag_comment' => ['(!', '!)'], 'tag_variable' => ['((', '))'], ];
due to {{
, {#
and {%
are too common in regular latex code. Be carefull with ((
it is easy to use it in calculations as well. You can use
$tex->setTwigLexer($options)
for custom variants.
Meta Twig Context
There is a new introduced global variable _tex
, which can be used everywhere and is defined like:
$this->twig->addGlobal('_tex', [ 'files' => $fileNames, // with name.pdf => files/name.pdf (local path in dir) 'dir' => $tmpDir . "tex/$templateName/$uid/", 'template' => $twigTemplateName, ]);
Example: _tex.dir
Try the sample
php -f samples/simple-report.php
Contribute
Please run
composer cs-fix
before doing a pull request