Esempio n. 1
0
 public function runOdtFromSql($inputFileName, $outputFileName, $parameters, $query, $conn)
 {
     if (!isset($conn)) {
         $conn = $this->jdbcConnection;
     }
     try {
         $JasperDesign = new Java('net.sf.jasperreports.engine.design.JasperDesign');
         $JRDesignQuery = new Java('net.sf.jasperreports.engine.design.JRDesignQuery');
         $JRXmlLoader = new Java('net.sf.jasperreports.engine.xml.JRXmlLoader');
         $JasperDesign = $JRXmlLoader->load($inputFileName);
         $JRDesignQuery->setText($query);
         $JasperDesign->setQuery($JRDesignQuery);
         if (!$outputFileName) {
             $outputFileName = dirname($inputFileName) . '/' . pathinfo($inputFileName, PATHINFO_FILENAME) . '.odt';
         }
         $jasper_file_name = dirname($outputFileName) . '/' . pathinfo($outputFileName, PATHINFO_FILENAME) . '.jasper';
         $JasperCompileManager = new Java('net.sf.jasperreports.engine.JasperCompileManager');
         $JasperCompileManager->compileReportToFile($JasperDesign, $jasper_file_name);
         if ($this->runReportToOdtFile($jasper_file_name, $outputFileName, $parameters, $conn)) {
             unlink($jasper_file_name);
             return true;
         } else {
             return false;
         }
     } catch (JavaException $ex) {
         $trace = new Java('java.io.ByteArrayOutputStream');
         $ex->printStackTrace(new Java('java.io.PrintStream', $trace));
         print nl2br("java stack trace: {$trace}\n");
         return false;
     }
 }