discustecnologia / pdf-report-bundle
Symfony Bundle。wkhtmltopdf 的包装器,使用 twig 模板生成 PDF 文件。
1.0.1
2017-05-22 17:27 UTC
Requires
- php: >=5.5.9
- mikehaertl/phpwkhtmltopdf: ^2.2
- symfony/framework-bundle: ~2.7|~3.0
- twig/twig: ^1.0||^2.0
This package is not auto-updated.
Last update: 2024-09-20 20:26:23 UTC
README
Symfony Bundle。wkhtmltopdf 的包装器,使用 twig 模板生成 PDF 文件。
依赖项
您需要在系统中安装 wkhtmltopdf。
安装
您需要在操作系统上安装 wkhtmltopdf。
使用 composer 安装包
composer require discustecnologia/pdf-report-bundle
在 kernel 中启用包
public function registerBundles() { $bundles = [ // ... new DiscusTecnologia\PdfReportBundle\DiscusTecnologiaPdfReportBundle(), // ... ]; ... }
如何使用
在控制器中,而不是使用
return $this->render(...);
您应该使用
$pdfReport = $this->get('discus-tecnologia.pdf-report'); $pdfReport->setHeader('default/header.twig'); $pdfReport->setFooter('default/footer.twig'); $pdfReport->setMargins(20, 20, 20, 20); $pdfReport->addPages('default/testReport.twig', []); return $pdfReport->generate();
基于记录的 twig 报告示例,每页显示 4 条记录
{% for i in ((pdfReportPageNumber -1) * 4)..(((pdfReportPageNumber * 4)-1) < (obj|length - 1) ? ((pdfReportPageNumber * 4)-1) : obj|length-1) %}
<div>{{ obj[i] }}</div>
{% endfor %}
示例 Symfony 控制器
namespace AppBundle\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; use DiscusTecnologia\PdfReportBundle\Service\PdfReport; class DefaultController extends Controller { /** * @Route("/", name="homepage") */ public function indexAction(Request $request) { $pdfReport = $this->get('discus-tecnologia.pdf-report'); $pdfReport->setSavePDF("/var/tmp/pdfreport.pdf"); $pdfReport->setHeader('default/header.twig'); $pdfReport->setFooter('default/footer.twig'); $pdfReport->setMargins(20, 20, 20, 20); //Default size is A4. You can use A0, A1, A2, A3, A4, A5 or pass custom size array as [width, height] $pdfReport->setPageSize(PdfReport::A3); $pdfReport->setGrayscale(true); $pdfReport->setOrientationLandscape(); $pdfReport->setTotalPages(2); $pdfReport->setHeaderHeight(40); $pdfReport->setFooterHeight(40); $pdfReport->setCss("#footer p { font-size: 10px; text-align: center; background: #ccc; } #content { width: 168mm; /*border: 1px #000000 solid;*/ } p { /*border: 1px #FF0000 solid;*/ max-width: 168mm; text-indent: 30px; margin-bottom: 15px; line-height: 20px; font-size: 14px; text-align: justify; }"); $pdfReport->addPages('default/testeRel.twig', ['obj' => ['a', 'b', 'c', 'd', 'e', 'f', 'g'] ]); return $pdfReport->generate(); //return $pdfReport->renderHTML(); //use for debug } }
许可证
此包位于 MIT 许可证下。请参阅包中的完整许可证。
鸣谢
作者:Rodrigo Ramos
Discus Tecnologia