我在Prestashop 1.7.4.1中制作了在模块中打印自定义pdf的方法。一切正常,但在每页上都打印带有商店徽标的页眉和带有电子发票信息的页脚。如何隐藏它们以使模板占据打印页面的所有尺寸?
我尝试将tcpdf示例中的pdf对象代码添加到我的pdf对象代码中,但似乎我在presta中不使用TCPDF:
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
这是我的课程:
class HTMLTemplateCustomPdf extends HTMLTemplate
{
public $custom_model;
public function __construct($custom_object, $smarty)
{
$this->custom_model = $custom_object;
$this->smarty = $smarty;
}
/**
* Returns the template's HTML content
* @return string HTML content
*/
public function getContent()
{
//here I get content
return $this->smarty->fetch(_PS_MODULE_DIR_ . 'ps_first_module/views/templates/hook/pdf.tpl');
}
/**
* Returns the template filename
* @return string filename
*/
public function getFilename()
{
return 'custom_pdf.pdf';
}
/**
* Returns the template filename when using bulk rendering
* @return string filename
*/
public function getBulkFilename()
{
return 'custom_pdf.pdf';
}
这是我创建pdf对象的地方:
if (Tools::isSubmit('print')) {
if (Shop::getContext() != Shop::CONTEXT_GROUP && Shop::getContext() != Shop::CONTEXT_ALL) {
require_once _PS_MODULE_DIR_ . 'ps_first_module/HTMLTemplateCustomPdf.php';
$orientation = 'L';
$pdf = new PDF($custom_object, 'CustomPdf', Context::getContext()->smarty, $orientation);
$pdf->render();
}
}
编辑: 这是我的PDFGenerator.php覆盖。我应该把它放在root / override / classes / pdf还是my_module / override / classes / pdf吗?
<?php
class PDFGenerator extends PDFGeneratorCore
{
/**
* @param bool $use_cache
* @param string $orientation
*/
public function __construct($use_cache = false, $orientation = 'L')
{
parent::__construct($orientation, 'mm', 'A4', true, 'UTF-8', $use_cache, false);
$this->setRTL(Context::getContext()->language->is_rtl);
}
/**
* Write a PDF page
*/
public function writePage()
{
if(!$this->header){
$this->SetHeaderMargin(0);
}
else{
$this->SetHeaderMargin(5);
}
if(!$this->footer){
$this->SetFooterMargin(0);
}
else{
$this->SetFooterMargin(21);
}
$this->setMargins(10, 10, 10);
$this->AddPage();
$this->writeHTML($this->content, true, false, true, false, '');
}
}
答案 0 :(得分:1)
我在1.7.2版中尝试过,文件属性提到了Producer:TCPDF 6.2.12(http://www.tcpdf.org)。另外,函数render()中的Pdf类为:
onPress={() =>this.props.navigation.navigate('subscribed')}
因此,最好的方法是您的类HTMLTemplateCustomPdf包含函数getHeader()和getFooter()以返回false(或为空),否则它将使用HTMLTemplateCore中的函数。
在PDFGenerator的替代中,您可以执行以下操作:
$this->pdf_renderer->createHeader($template->getHeader());
$this->pdf_renderer->createFooter($template->getFooter());
如果需要,还可以在$ this-> setMargins(10,40,10);
中设置不同的边距。