discustecnologia/pdf-report-bundle

Symfony Bundle。wkhtmltopdf 的包装器,使用 twig 模板生成 PDF 文件。

安装次数: 16

依赖: 0

建议: 0

安全: 0

星星: 2

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

1.0.1 2017-05-22 17:27 UTC

This package is not auto-updated.

Last update: 2024-09-20 20:26:23 UTC


README

logo Discus Tecnologia

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