bezirovoviku / temgen
模板生成器
dev-master
2016-01-03 21:47 UTC
Requires
- php: >=5.3.2
- cebe/markdown: ~1.0.1
Requires (Dev)
- phpunit/phpunit: 4.*
This package is not auto-updated.
Last update: 2024-09-18 19:17:08 UTC
README
这是一个简单的文档文件模板系统。它使用文本替换,允许循环替换和基本过滤器。
安装
您可以使用composer安装此库
composer require bezirovoviku/temgen
要求
LibreOffice (2+) - 仅用于OPDF转换器
PhantomJS - 仅用于PPDF转换器
使用方法
首先,您需要包含生成器类
use Temgen\Generator;
然后按照以下方式使用生成器类
//Creates generator $generator = new Generator(); //Adds basic filters $generator->addFilters(); //Sets temporary folder used to store documents $generator->setTmp('/tmp'); //Sets path to template file $generator->setTemplate(new Document('template.html')); //Generates zip archive from specified data $generator->generateArchive(json_decode($this->data, true), 'archive.zip');
创建自定义过滤器
要创建自定义过滤器,您需要实现 \Temgen\Generator\Filter 接口
class MyFilter implements \Temgen\Generator\Filter { /** * Returns tag used to identify filter * * @return string tag identifing filter */ public function getTag() { return 'myfilter'; } /** * Filter given arguments and return result * * @param \Temgen\Generator $generator generator calling this filter * @param array $context replacing context * @param array $arguments arguments passed to filter * @param string|null $input pipe input (if present) * @return string result */ public function filter($generator, $context, $arguments, $input) { return strtoupper($input); } }
然后,您需要将此过滤器的实例添加到生成器实例中,如下所示
$generator = new Generator(); $generator->addFilter(new MyFilter());
现在,在这个生成器实例中,过滤器 MyFilter 将可以通过 {myfilter} 语法访问
导出PDF
这需要已安装的libreoffice
//Creates docx generator $generator = new Generator\Docx(); //PDF converter $converter = new Converter\OPDF(); //Adds basic filters $generator->addFilters(); //Sets temporary folder used to store documents $generator->setTmp('/tmp'); //Sets path to template file $generator->setTemplate(new Document\Docx('template.docx')); //Generates zip archive from specified data, converts using converter $generator->generateArchive(json_decode($this->data, true), 'archive.zip', $converter);