roadiz / abstract-pdf-theme
为您的Roadiz主题提供的抽象PDF中间件,用于从内容生成PDF响应。
1.1.2
2022-06-20 15:50 UTC
Requires
- php: >=7.4
- psliwa/php-pdf: ^1.2
- rezozero/pdfsafe: ^1.1
- roadiz/roadiz: ^1.6.0
Requires (Dev)
- phpstan/phpstan: ^0.12.64
- squizlabs/php_codesniffer: ^3.5
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的有用模板。您可以直接在主题中使用它们或复制它们。