我已经开始在我的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,没有标题和默认边距。
我是否遗漏了一些东西以使捆绑包采用我的自定义配置?
答案 0 :(得分:1)
我有同样的问题。更改供应商代码不是最佳做法。我的解决方法如下:
我在src文件夹中创建了一个新类“CustomWhiteOctoberTCPDFBundle”。
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(),
答案 1 :(得分:0)
您需要编辑vendor / tecnick.com / tcpdf / config文件夹中的tcpdf_config.php。
答案 2 :(得分: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中添加一些配置参数,这些参数未在上面的文档配置示例中列出。
这是我在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
答案 3 :(得分: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);
}
}
匹配两种常量类型。
答案 4 :(得分:0)
version 1.1.0的WhiteOctoberTCPDFBundle(于2018年6月21日发布)已解决此问题:
修复问题“未加载自定义配置参数”(PR #45)
因此,现在更新软件包的版本即可解决此问题-您可以添加其他配置,而无需进行代码更改。
以前,仅读取以k_
开头的配置值,现在全部读取。