/** * @param Item\AbstractItem $item * @return boolean */ public function isRenderable(Item\AbstractItem $item) { if (!$item->isVisible()) { return false; } switch (true) { case $item instanceof Item\TextBlockItem: return $item->hasReference() || $item->isPresent(); break; case $item instanceof Item\ImageBlockItem: return $item->isPresent(); break; case $item instanceof Item\PageNumberItem: $page = $item->getParent(); return $page->isCountable() && $item->isForReport(); break; default: return true; break; } }