代码之家  ›  专栏  ›  技术社区  ›  pelkas13

在自定义pdf预览中隐藏页眉和页脚

  •  0
  • pelkas13  · 技术社区  · 6 年前

    $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';
        }
    

    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重写。我应该把它放在根目录/override/classes/pdf中还是放在我的模块/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, '');
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   sadlyblue    6 年前

    我在1.7.2版中试过,文件属性提到Producer:TCPDF 6.2.12( http://www.tcpdf.org

    $this->pdf_renderer->createHeader($template->getHeader());
    $this->pdf_renderer->createFooter($template->getFooter());
    

    因此,最好的方法是使用类HTMLTemplateCustomPdf来包含函数getHeader()和getFooter()来返回false(或空),否则它将使用HTMLTemplateCore中的函数。

    在PDFGenerator的重写中,可以执行以下操作:

    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, 40, 10);
        $this->AddPage();
        $this->writeHTML($this->content, true, false, true, false, '');
    }
    

    如果需要,您还可以在$this->set margins(10、40、10)中设置不同的边距;