roadiz/abstract-pdf-theme

为您的Roadiz主题提供的抽象PDF中间件,用于从内容生成PDF响应。

1.1.2 2022-06-20 15:50 UTC

This package is auto-updated.

Last update: 2024-09-20 20:37:05 UTC


README

为您的Roadiz主题提供的抽象PDF中间件,用于从内容生成PDF响应。

依赖注入

  • 将PDF服务添加到项目中的app/AppKernel.php
# AppKernel.php
/**
 * {@inheritdoc}
 */
public function register(\Pimple\Container $container)
{
    parent::register($container);

    /*
     * Add your own service providers.
     */
    $container->register(new \Themes\AbstractPdfTheme\Services\PdfServiceProvider());
}

或您的app/conf/config.yml

additionalServiceProviders: 
    - \Themes\AbstractPdfTheme\Services\PdfServiceProvider

PdfControllerTrait

用法

您需要做的就是创建主题中的节点源Controller并使用PdfControllerTrait。您将能够覆盖任何方法来配置PDF渲染,例如

  • protected function getPdfTemplate(): string(默认:'@AbstractPdfTheme/pdf/base.xml.twig'
  • protected function getPdfStylesheetPath(): string(默认:$this->getResourcesFolder() . '/config/pdf_stylesheet.xml'
  • protected function getPdfFilename(NodesSources $nodeSource = null): string(默认:'@AbstractPdfTheme/pdf/fonts.xml.twig'
<?php
namespace Themes\MyTheme\Controllers;

use Themes\AbstractPdfTheme\Controllers\PdfControllerTrait;
use Themes\MyTheme\MyThemeThemeApp;
use RZ\Roadiz\Core\Entities\Node;
use RZ\Roadiz\Core\Entities\Translation;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

class PageController extends MyThemeThemeApp
{
    use PdfControllerTrait;
    
    /**
     * @param Request $request
     * @param Node|null $node
     * @param Translation|null $translation
     * @return Response
     */
    public function indexAction(
        Request $request,
        Node $node = null,
        Translation $translation = null
    ) {
        $this->prepareThemeAssignation($node, $translation);

        if ($request->query->has('_format') && $request->query->get('_format') == 'pdf') {
            return $this->generatePdf($request, $this->nodeSource);
        }

        $response = $this->render('pages/page.html.twig', $this->assignation);

        return $response;
    }

    protected function getPdfTemplate()
    {
        return 'pdf/page.xml.twig';
    }
}

模板示例

Resources/views/文件夹包含用于创建您自己的PDF的有用模板。您可以直接在主题中使用它们或复制它们。