2013-10-01 5 views
1

Я создаю отчет PDF в приложении CakePHP, используя TCPDF Пакет поставщика. Мне нужно создать границы страницы на каждой странице сгенерированного PDF.TCPDF - границы страниц на всех страницах

Я использовал this solution, чтобы сделать границу страницы, но смог только нарисовать границу на самой первой странице сгенерированного PDF.

Я использую следующий код:

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); 
$pdf->AddPage(); 

$pdf->SetLineStyle(array('width' => 15, 'color' => array(0,0,0))); 

$pdf->Line(0,0,$pdf->getPageWidth(),0); 
$pdf->Line($pdf->getPageWidth(),0,$pdf->getPageWidth(),$pdf->getPageHeight()); 
$pdf->Line(0,$pdf->getPageHeight(),$pdf->getPageWidth(),$pdf->getPageHeight()); 
$pdf->Line(0,0,0,$pdf->getPageHeight()); 

//rest of my code to make proper Html 
..... 
..... 

$pdf->writeHTML($content_html, true, 0, true, 0); //$content_html contains the whole Html which outputs me several PDF pages 

ob_clean(); 
$pdf_status = $pdf->Output($directory_path.$file_name.EXT_PDF, 'F'); // save pdf on the given path 

Просьба предложить решение. Любая помощь будет оценена по достоинству.

+0

Взглядами ней вас рисование границы на первой странице, а затем запись многостраничного HTML. Вы никому не говорите, чтобы писать границу на остальных страницах. Я не считаю, что это возможно. –

+0

@MichaelDeMutis, Да, я хочу, как писать границу и на остальных страницах. –

ответ

3

Ниже приведен трюк, который я использовал для создания границы поля на всех страницах в формате pdf.

  1. Create a new class extend from TCPDF class
  2. Override the Header method. (Этот метод будет вызываться на каждом новом поколении pdfpage)

Пожалуйста, посмотрите в код ниже:

<?php 
App::import('Vendor','tcpdf/tcpdf'); 
App::import('Vendor','tcpdf/config/lang/eng'); 
class AUTHPDF extends TCPDF 
{ 
    protected $processId = 0; 
    protected $header = ''; 
    protected $footer = ''; 
    static $errorMsg = ''; 

    /** 
     * This method is used to override the parent class method. 
    **/ 
    public function Header() 
    { 
     $this->writeHTMLCell($w='', $h='', $x='', $y='', $this->header, $border=0, $ln=0, $fill=0, $reseth=true, $align='L', $autopadding=true); 
     $this->SetLineStyle(array('width' => 0.40, 'color' => array(153, 204, 0))); 

     $this->Line(5, 5, $this->getPageWidth()-5, 5); 

     $this->Line($this->getPageWidth()-5, 5, $this->getPageWidth()-5, $this->getPageHeight()-5); 
     $this->Line(5, $this->getPageHeight()-5, $this->getPageWidth()-5, $this->getPageHeight()-5); 
     $this->Line(5, 5, 5, $this->getPageHeight()-5); 
    } 
} 
Смежные вопросы