/** * Add new part to report * * @param string $type Part type * @param Part\AbstractPart $part Part */ public function addPart($type, Part\AbstractPart $part) { $this->parts[strtolower($type)] = $part; $this->orderedParts[$part->getIdentifier()] = $part; $this->calculateStartPosition(); }
/** * Constructor * * @param array $data Data */ public function __construct($data) { $this->identifier = array_search('data', $this->partIds); parent::__construct($data); }
/** * Write Elements into document * * @param AbstractPart $part Part * @param array $data Data * @param ArrayIterator $iterator * * @return boolean */ public function writePDF(AbstractPart $part, array $data, $iterator = null) { if (count($data) <= 0 || $part->isVisible() === false) { return false; } foreach ($data as $element) { // Create new page if overlapping if (intval($this->writer->getCurrentPosition() + $element->getHeight()) >= intval($this->writer->getEndPosition())) { $this->writer->AddPage($this->report->getPageOrientation()); $this->writer->setCurrentPosition($part->getStartPosition()); } $this->writer->SetLineWidth($element->getBorderWidth()); $this->writer->setFillColor($element->getFillColor()); $this->writer->setTextColor($element->getTextColor()); $this->writer->SetFont($element->getFont(), $element->getStyle(), $element->getFontSize()); $this->writer->setXY($element->getPosX() + $this->getReport()->getLeftMargin(), $element->getPosY() + $this->writer->getCurrentPosition()); $element->writeContent($this->writer, $iterator); } $newPosition = $this->writer->getCurrentPosition() + $part->getHeight(); $this->writer->setCurrentPosition($newPosition); // Add page jump if set if ($part->isPageJump() && !$part instanceof \RevPDFLib\Items\Part\PageHeader) { $this->writer->AddPage($this->getReport()->getPageOrientation()); $this->writer->setCurrentPosition($part->getStartPosition()); } return true; }