4

我已经开始在我的 symfony 项目中使用 WhiteOctober TCPDF 包,但我不知道如何更改默认配置值,例如页面格式。我试过把它放在我的 config.yml 中:

white_october_tcpdf:
    tcpdf:
        k_tcpdf_external_config: true
        pdf_page_format: 'LETTER'
        pdf_author: 'Company Name'
        pdf_header_title: 'Order Confirmation'
        pdf_header_string: 'Company Name'
        pdf_header_logo: '%kernel.root_dir%/../web/images/logo.png'
        pdf_header_logo_width: '35'
        pdf_margin_header: 15
        pdf_margin_footer: 15
        pdf_margin_top: 25
        pdf_margin_bottom: 25
        pdf_margin_left: 25
        pdf_margin_right: 25

但他们在打电话时完全被忽略了

$pdf = $this->get('white_october.tcpdf')->create();

在我的控制器中。生成的 PDF 仍为 A4 格式,没有页眉和默认边距。

我是否缺少使捆绑包采用我的自定义配置的东西?

4

5 回答 5

1

我也有同样的问题。更改供应商代码不是最佳实践。我的解决方法如下:

我在我的 src 文件夹中创建了一个新类“CustomWhiteOctoberTCPDBundle”。

namespace TCPDFBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;

class CustomWhiteOctoberTCPDFBundle extends Bundle
{
 public function getParent()
    {
        return 'WhiteOctoberTCPDFBundle';
    }  
    public function boot() {
         //Put modified method as mentioned in the previous answer

    }
}

On AppKernel.php put:
    public function registerBundles()
    {
        $bundles = array(...
            new WhiteOctober\TCPDFBundle\WhiteOctoberTCPDFBundle(),
            new TCPDFBundle\CustomWhiteOctoberTCPDFBundle(),
于 2015-07-29T14:55:39.350 回答
0

您需要编辑 vendor/tecnick.com/tcpdf/config 文件夹中的 tcpdf_config.php。

于 2014-03-17T19:23:12.353 回答
0

添加此代码...

            if (preg_match("/^pdf_/i", $k)) {
                if (!defined($constKey)) {
                    define($constKey, $v);
                }
            }

到捆绑文件

 /vendor/whiteoctober/tcpdf-bundle/WhiteOctober/TCPDFBundle/WhiteOctoberTCPDFBundle.php

原始文件https://github.com/wrep/TCPDFBundle/blob/master/WrepTCPDFBundle.php 目前仅匹配以开头的配置参数^k 此捆绑包的配置选项显示在这里

https://github.com/wrep/TCPDFBundle/blob/master/WrepTCPDFBundle.php

我不得不从 tcpdf_config.php 添加一些配置参数,这些参数没有在上面的文档配置示例中列出。这是我完整的 white_october_tcpdf: 部分app/config/config.yml

...ober_tcpdf:
file:                 %kernel.root_dir%/../vendor/tecnick.com/tcpdf/tcpdf.php
class:                TCPDF
tcpdf:
    k_path_url:           %kernel.root_dir%/../vendor/tecnick.com/tcpdf/
    k_path_main:          %kernel.root_dir%/../vendor/tecnick.com/tcpdf/
    k_path_fonts:         %kernel.root_dir%/../vendor/tecnick.com/tcpdf/fonts/
    k_path_cache:         %kernel.cache_dir%/tcpdf
    k_path_url_cache:     %kernel.cache_dir%/tcpdf
    k_path_images:        %kernel.root_dir%/../vendor/tecnick.com/tcpdf/examples/images/
    k_blank_image:        %kernel.root_dir%/../vendor/tecnick.com/tcpdf/examples/images/_blank.png
    k_cell_height_ratio:  1.25
    k_title_magnification:  1.3
    k_small_ratio:        0.66666666666667
    k_thai_topchars:      true
    k_tcpdf_calls_in_html:  true
    k_tcpdf_external_config:  true
    head_magnification:   10
    pdf_page_format:      LETTER
    pdf_page_orientation:  P
    pdf_creator:          TCPDF
    pdf_author:           TCPDF
    pdf_header_title:  Example Title
    pdf_header_string: "this is motto - My Company\nwww.mycompany.org" 
    pdf_header_logo: ../../../../../web/bundles/home/images/peas.jpg    
    pdf_header_logo_width: 30
    pdf_unit:             mm
    pdf_margin_header:    5
    pdf_margin_footer:    10
    pdf_margin_top:       27
    pdf_margin_bottom:    25
    pdf_margin_left:      15
    pdf_margin_right:     15
    pdf_font_name_main:   helvetica
    pdf_font_size_main:   10
    pdf_font_name_data:   helvetica
    pdf_font_size_data:   8
    pdf_font_monospaced:  courier
    pdf_image_scale_ratio:  1.25
于 2014-03-20T03:30:05.293 回答
0

好吧,刚才我解决了同样的问题:

你需要像 mirk 说的那样定义你需要的常量,

white_october_tcpdf:
tcpdf:
  .
  .
  .

那么您需要使用此代码更改类:/vendor/whiteoctober/tcpdf-bundle/WhiteOctober/TCPDFBundle/WhiteOctoberTCPDFBundle.php

                // All K_ and _pdf constants are required
            if (preg_match("/^k_/i", $k) OR preg_match("/^pdf_/i", $k)) {
                if (!defined($constKey)) {
                    $value = $this->container->getParameterBag()->resolveValue($v);
                    if (($k === 'k_path_cache' || $k === 'k_path_url_cache') && !is_dir($value)) {
                        $this->createDir($value);
                    }

                    define($constKey, $value);
                }
            }

匹配两种常量类型。

于 2016-10-18T06:55:57.903 回答
0

这已在WhiteOctoberTCPDFBundle(2018 年 6 月 21 日发布)的1.1.0 版中解决:

修复问题“未加载自定义配置参数”(PR #45

因此,更新您的捆绑包版本现在应该可以解决此问题 - 您可以添加其他配置而无需更改代码。

以前,只读取以开头的配置值k_,现在全部读取。

于 2018-06-21T14:50:58.670 回答