public function render(Report $report, $parameters, $outputfilename, $options) { $format = null; $outputextension = pathinfo($outputfilename, PATHINFO_EXTENSION); if (!$format) { switch ($outputextension) { case 'pdf': $format = 'pdf'; break; case 'html': $format = 'html'; break; case 'doc': $format = 'doc'; break; case 'xls': $format = 'xls'; break; case 'ppt': $format = 'ppt'; break; case 'postscript': case 'ps': $format = 'postscript'; break; default: throw new RuntimeException("Can't auto-determine format by outputfilename extension. Please pass specifically in the options, or use a recognised filename extension."); break; } } if (!file_exists($this->birthome)) { throw new RuntimeException("Undefined or invalid BIRT_HOME: " . $this->birthome); } $scriptfilename = $this->birthome . '/ReportEngine/genReport.sh'; if (!file_exists($scriptfilename)) { throw new RuntimeException("Script not found: " . $scriptfilename); } $cmd = $scriptfilename; foreach ($parameters as $parameter) { $cmd .= " --parameter \"" . $parameter->getKey() . "=" . $parameter->getValue() . "\""; } $cmd .= " -f " . $format; $cmd .= " -o " . $outputfilename; $cmd .= " --file " . $report->getFilename(); //echo $cmd . "\n"; putenv('BIRT_HOME=' . $this->birthome); exec($cmd, $output); }
protected function execute(InputInterface $input, OutputInterface $output) { $filename = $input->getArgument('filename'); $outputfilename = $input->getArgument('output'); $output->writeln('<info>Rendering</info> .rptdesign filename: <fg=cyan>' . $filename . '</fg=cyan>'); $report = new Report(); $report->loadFilename($filename); $renderer = new Renderer(); $birthome = getenv('BIRT_HOME'); $output->writeln('<info>BIRT_HOME</info> <fg=cyan>' . $birthome . '</fg=cyan>'); $renderer->setBirtHome($birthome); $parameters = array(); $options = $input->getOption('parameter'); foreach ($options as $option) { $part = explode("=", $option); $parameters[] = new Parameter($part[0], $part[1]); } $renderer->render($report, $parameters, $outputfilename); }