set_paper('A4', 'portrait'); parent::__construct(); } protected function assertNoHeadersSent() { if (headers_sent()) { throw new ProgrammingError( 'Could not send pdf-response, content already written to output.' ); } } public function renderControllerAction($controller) { $this->assertNoHeadersSent(); ini_set('memory_limit', '384M'); ini_set('max_execution_time', 300); $request = $controller->getRequest(); $layout = $controller->getHelper('layout')->setLayout('pdf'); $controller->render(); $layout->content = $controller->getResponse(); $html = $layout->render(); $imgDir = Url::fromPath('img'); $html = preg_replace('~src="' . $imgDir . '/~', 'src="' . Icinga::app()->getBootstrapDirecory() . '/img/', $html); $html = preg_replace('~src="/svg/chart.php(.*)"~', 'class="icon" src="http://master1.com/png/chart.php$1"', $html); $this->load_html($html); $this->render(); $this->stream( sprintf( '%s-%s-%d.pdf', $request->getControllerName(), $request->getActionName(), time() ) ); } }