los / lospdf
ZF2 模块,用于封装一些 PDF 生成库
1.0.1
2016-04-23 17:02 UTC
Requires
- php: >=5.4
- zendframework/zendframework: >=2.3.2,<3.0.0
Requires (Dev)
- phpunit/phpunit: ~4.4
- satooshi/php-coveralls: dev-master
Suggests
- los/loslog: los/loslog for logging
- los/losui: los/losui for twitter bootstrap 3 styling, jquery, chosen and other libraries
- mpdf/mpdf: mpdf/mpdf for html to pdf convertion
README
简介
此 ZF2 模块提供了一个封装器,用于从 HTML 生成 PDF 文档mPdf(更多功能即将推出)。
要求
安装
可以使用 composer 或手动安装
使用 composer 安装
有关 composer 文档,请参阅 getcomposer.org。
-
进入您的项目目录
-
使用以下内容创建或编辑您的
composer.json
文件{ "require": { "los/lospdf": "1.*", "mpdf/mpdf" : ">=v5.7.4", } }
-
运行
php composer.phar install
-
打开
my/project/directory/config/application.config.php
并将LosPdf
添加到您的modules
```php
<?php
return array(
'modules' => array(
'LosPdf',
'Application'
),
'module_listener_options' => array(
'config_glob_paths' => array(
'config/autoload/{,*.}{global,local}.php',
),
'module_paths' => array(
'./module',
'./vendor',
),
),
);
```
不使用 composer 的安装
- 将此模块 LosPdf 克隆到您的 vendor 目录
- 在 config/application.config.php 中启用它,如前一个部分中的步骤 4。
用法
渲染到浏览器
以下示例演示了在控制器中的 Action 中使用 LosPdf 模块的一种典型用法
public function pdfAction() { $generated = new \DateTime('now'); $genetared = $gerado->format('d/m/Y H:i:s'); $pdf = new PdfModel(); $renderer = $this->getServiceLocator()->get('ViewPdfRenderer'); $renderer->getEngine()->setHTMLHeader('<table width="100%" style="vertical-align: bottom; font-family: serif; font-size: 8pt; color: #000000; font-weight: bold; font-style: italic; border-bottom: 1px solid #000"><tr> <td width="33%"><span style="font-weight: bold; font-style: italic;">Client</span></td> <td width="33%" align="center" style="font-weight: bold; font-style: italic;">Report Name</td> <td width="33%" style="text-align: right; ">My Company</td> </tr></table> '); $renderer->getEngine()->setHTMLFooter('Footer', '<table width="100%" style="vertical-align: bottom; font-family: serif; font-size: 8pt; color: #000000; font-weight: bold; font-style: italic; border-top: 1px solid #000"><tr> <td width="50%" style="text-align: left; font-weight: bold; font-style: italic;">Generated: '.$generated.'</td> <td width="50%" style="text-align: right; ">Page {PAGENO}</td> </tr></table> '); $pdf->setTerminal(true); $pdf->setVariables(['name'=>'Leandro']); $pdf->setOption("paperSize", "a4"); return $pdf; }
并使用视图文件。
您可以通过 $renderer->getEngine() 设置任何 mPdf 选项
$renderer = $this->getServiceLocator()->get('ViewPdfRenderer'); $renderer->getEngine()->pagenumPrefix = 'Page n ';
渲染到字符串
您可以将 PDF 输出捕获到字符串中
public function pdfAction() { $generated = new \DateTime('now'); $genetared = $gerado->format('d/m/Y H:i:s'); $pdf = new PdfModel(); $renderer = $this->getServiceLocator()->get('ViewPdfRenderer'); $renderer->getEngine()->setHTMLHeader('<table width="100%" style="vertical-align: bottom; font-family: serif; font-size: 8pt; color: #000000; font-weight: bold; font-style: italic; border-bottom: 1px solid #000"><tr> <td width="33%"><span style="font-weight: bold; font-style: italic;">Client</span></td> <td width="33%" align="center" style="font-weight: bold; font-style: italic;">Report Name</td> <td width="33%" style="text-align: right; ">My Company</td> </tr></table> '); $renderer->getEngine()->setHTMLFooter('Footer', '<table width="100%" style="vertical-align: bottom; font-family: serif; font-size: 8pt; color: #000000; font-weight: bold; font-style: italic; border-top: 1px solid #000"><tr> <td width="50%" style="text-align: left; font-weight: bold; font-style: italic;">Generated: '.$generated.'</td> <td width="50%" style="text-align: right; ">Page {PAGENO}</td> </tr></table> '); $pdf->setTerminal(true); $pdf->setVariables(['name'=>'Leandro']); $pdf->setOption("paperSize", "a4"); $pdf->setTemplate('site/index/pdf'); $output = $renderer->renderToString($pdf); //Do something with output }
渲染到文件
您可以将 PDF 保存到文件中
public function pdfAction() { $generated = new \DateTime('now'); $genetared = $gerado->format('d/m/Y H:i:s'); $pdf = new PdfModel(); $renderer = $this->getServiceLocator()->get('ViewPdfRenderer'); $renderer->getEngine()->setHTMLHeader('<table width="100%" style="vertical-align: bottom; font-family: serif; font-size: 8pt; color: #000000; font-weight: bold; font-style: italic; border-bottom: 1px solid #000"><tr> <td width="33%"><span style="font-weight: bold; font-style: italic;">Client</span></td> <td width="33%" align="center" style="font-weight: bold; font-style: italic;">Report Name</td> <td width="33%" style="text-align: right; ">My Company</td> </tr></table> '); $renderer->getEngine()->setHTMLFooter('Footer', '<table width="100%" style="vertical-align: bottom; font-family: serif; font-size: 8pt; color: #000000; font-weight: bold; font-style: italic; border-top: 1px solid #000"><tr> <td width="50%" style="text-align: left; font-weight: bold; font-style: italic;">Generated: '.$generated.'</td> <td width="50%" style="text-align: right; ">Page {PAGENO}</td> </tr></table> '); $pdf->setTerminal(true); $pdf->setVariables(['name'=>'Leandro']); $pdf->setOption("paperSize", "a4"); $pdf->setTemplate('site/index/pdf'); $renderer->renderToFile($pdf, '/tmp/report.pdf'); }
混合输出
您可以使用多种渲染类型。以下示例将 PDF 保存到文件中,将 PDF 渲染为字符串并渲染到浏览器
public function pdfAction() { $generated = new \DateTime('now'); $genetared = $gerado->format('d/m/Y H:i:s'); $pdf = new PdfModel(); $renderer = $this->getServiceLocator()->get('ViewPdfRenderer'); $renderer->getEngine()->setHTMLHeader('<table width="100%" style="vertical-align: bottom; font-family: serif; font-size: 8pt; color: #000000; font-weight: bold; font-style: italic; border-bottom: 1px solid #000"><tr> <td width="33%"><span style="font-weight: bold; font-style: italic;">Client</span></td> <td width="33%" align="center" style="font-weight: bold; font-style: italic;">Report Name</td> <td width="33%" style="text-align: right; ">My Company</td> </tr></table> '); $renderer->getEngine()->setHTMLFooter('Footer', '<table width="100%" style="vertical-align: bottom; font-family: serif; font-size: 8pt; color: #000000; font-weight: bold; font-style: italic; border-top: 1px solid #000"><tr> <td width="50%" style="text-align: left; font-weight: bold; font-style: italic;">Generated: '.$generated.'</td> <td width="50%" style="text-align: right; ">Page {PAGENO}</td> </tr></table> '); $pdf->setTerminal(true); $pdf->setVariables(['name'=>'Leandro']); $pdf->setOption("paperSize", "a4"); $pdf->setTemplate('site/index/pdf'); $output = $renderer->renderToString($pdf); $renderer->renderToFile($pdf, '/tmp/report.pdf'); return $pdf; }