Ejemplo n.º 1
0
 /**
  * Render Table
  * @param Core_Pdf_Page $page
  * @param $posX
  * @param $posY
  * @param bool $inContentArea
  * @return mixed
  */
 public function render(Core_Pdf_Page $page, $posX, $posY, $inContentArea = true)
 {
     if ($this->_headerRow && $this->_rows) {
         //set header as first row
         $this->_rows = array_merge($this->_headerRow, $this->_rows);
     } elseif ($this->_headerRow) {
         //no rows in this table, just the header
         $this->_rows = $this->_headerRow;
     }
     if ($inContentArea) {
         $startY = $posY + $page->getMargin(Core_Pdf::TOP);
         $maxY = $page->getHeight() - $page->getMargin(Core_Pdf::BOTTOM) - $page->getMargin(Core_Pdf::TOP);
     } else {
         $startY = $posY;
         $maxY = $page->getHeight();
         $posX -= $page->getMargin(Core_Pdf::LEFT);
     }
     $y = $startY;
     //prerender
     $this->_preRender($page, $posX, $posY, $inContentArea);
     foreach ($this->_rows as $row) {
         //check current position (height)
         $test = $y - $row->getHeight();
         if ($test < $page->getPadding(Core_Pdf::BOTTOM) || $row->hasPageBreak()) {
             $page = $page->copyPage();
             $this->_pages[] = $page;
             $y = $page->getHeight() - $page->getPadding(Core_Pdf::TOP);
             if ($this->_headerRow && $this->_repeatHeader) {
                 $header = $this->_rows[0];
                 //pre-rendered header row (is first row)
                 $header->render($page, $posX, $y);
                 $y -= $header->getHeight() + $header->getBorderLineWidth(Core_Pdf::BOTTOM);
             }
         }
         $row->render($page, $posX, $y);
         $y -= $row->getHeight() + $row->getBorderLineWidth(Core_Pdf::BOTTOM);
         $page->currPos = $y;
     }
     return $this->_pages;
 }
Ejemplo n.º 2
0
 private function _drawFooter(Core_Pdf_Page $page, $currentPage)
 {
     if (!$this->_footer) {
         return;
     }
     if ($page instanceof Core_Pdf_Page) {
         //set table width
         $currFooter = clone $this->_footer;
         //check for special place holders
         $rows = $currFooter->getRows();
         foreach ($rows as $key => $row) {
             $row->setWidth($page->getWidth() - $this->_margin[Core_Pdf::LEFT] - $this->_margin[Core_Pdf::RIGHT]);
             $cols = $row->getColumns();
             $num = 0;
             foreach ($cols as $col) {
                 if ($col->hasText()) {
                     $num += $col->replaceText('@@CURRENT_PAGE', $currentPage);
                     $num += $col->replaceText('@@TOTAL_PAGES', count($this->pages));
                 }
             }
             if ($num > 0) {
                 $row->setColumns($cols);
                 $currFooter->replaceRow($row, $key);
             }
         }
         //add table
         $page->addTable($currFooter, $this->_margin[Core_Pdf::LEFT], $page->getHeight() - $this->_margin[Core_Pdf::BOTTOM] - $this->_margin[Core_Pdf::TOP] + $this->_footerYOffset, false);
     }
 }