为了在Symfony中创建PDF文件,我使用的是带有WhiteOctoberTCPDFBundle的TCPDF类.两者都通过作曲家安装.
我需要通过扩展TCPDF类来创建自定义页眉和页脚,如TCPDF文档中所述.
但对我来说,唯一可行的解决方案是直接在供应商中扩展TCPDF类,然后在供应商/ whiteoctober/tcpdf-bundle/DependencyInjection/Configuration.php中的getConfigTreeBuilder()方法中的WhiteOctoberBundle中将MYPDF类设置为默认值.
所以我的Configuration.php文件如下所示:
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('white_october_tcpdf');
$rootNode
->children()
->scalarNode('file')->defaultValue('%kernel.root_dir%/../vendor/tecnick.com/tcpdf/tcpdf.php')->end()
->scalarNode('class')->defaultValue('MYPDF')->end()
->end();
$this->addTCPDFConfig($rootNode);
return $treeBuilder;
}
Run Code Online (Sandbox Code Playgroud)
问题是直接在供应商中扩展TCPDF类是不好的做法,它导致MYPDF类在每次更新TCPDF Bundle期间消失.我应该在哪里放置MYPDF类,以便WhiteOctoberBundle可以访问它,同时它不会放在供应商文件夹中?
捆绑作者:-)这是在捆绑文档中,但是为了快速参考:
创建你的MYPDF
类并将它放在正常的Symfony2代码库中 - 让我们说吧src/Acme/DemoBundle/MYPDF.php
这个类需要扩展基础TCPDF类,这是通过供应商引入的.如果不是,你会得到一个例外.
在你config.yml
或类似的:
white_october_tcpdf:
class: 'Acme\DemoBundle\MYPDF'
Run Code Online (Sandbox Code Playgroud)您应该可以根据文档使用它:
$pdfObj = $container->get("white_october.tcpdf")->create();
Run Code Online (Sandbox Code Playgroud)
这将为您提供MYPDF
课程的新实例.