2015-06-08 162 views
0

從我的PHP頁面,我想創建/啓動BIRTreport創建PDF文件,但不能打開

... 
new runReport("rptPrixParDaty.rptdesign", array(), "prixpardaty"); 

該報告是基於view。 runReport的

代碼是內部/ BIRT /:

<?php 

include("../config.inc.php"); 
require_once("java/Java.inc"); 

class runReport { 

    function runReport($report, $param, $output) { 

     header("Content-type: application/pdf"); 
     header("Content-Disposition: attachment; filename=".$output.".pdf"); 

     $report_name = RP_REPORT . $report; 
     $ctx = java_context()->getServletContext(); 
     $birtReportEngine = java("org.eclipse.birt.php.birtengine.BirtEngine")->getBirtEngine($ctx); 
     java_context()->onShutdown(java("org.eclipse.birt.php.birtengine.BirtEngine")->getShutdownHook()); 

     try{ 

      $connect = new Java("connectDb"); 

      $report = $birtReportEngine->openReportDesign($report_name); 
      $task = $birtReportEngine->createRunAndRenderTask($report); 

      foreach ($param as $key => $value) { 
       $task->setParameterValue($key, new java("java.lang.String",$value)); 
      } 

      $taskOptions = new java("org.eclipse.birt.report.engine.api.PDFRenderOption"); 
      $outputStream = new java("java.io.ByteArrayOutputStream"); 
      $taskOptions->setOutputStream($outputStream); 
      $taskOptions->setOutputFormat("pdf"); 

      $task->setRenderOption($taskOptions); 
      $task->getAppContext()->put("OdaJDBCDriverPassInConnection", $connect->getConnection(BDD_SERVER, BDD_PORT, BDD_NAME, BDD_USER, BDD_PWD)); 
      $task->run(); 
      $task->close(); 


     } catch (JavaException $e) { 

      echo $e; //"Error Calling BIRT"; 
     } 

     echo java_values($outputStream->toByteArray()); 

    } 
} 
?> 

config.inc.php文件包含常數,它駐留在root目錄中的Web項目中。由Web應用程序生成的日誌文件包含以下警告行:PHP Warning: include(../config.inc.php): failed to open stream: No such file or directory in D:\wamp\www\bazarmada\birt\runReport.php on line 3雖然文件config.inc.php駐留在根目錄中,runReport.php文件位於/ birt目錄中!

在運行時執行下載並且pdf文件的大小爲3Kb,但pdf文件無法打開!那麼,什麼是錯的?

+0

其中,java/Java.inc導入的java目錄駐留在哪裏? – bmurauer

+0

它在裏面/ birt/ – pheromix

+1

在文件中有什麼有用的東西嗎?使用十六進制查看器來檢查 - 有時當我想我下載PDF時,我只能看到HTML。如果該文件看起來像PDF,可以將它發佈到公共服務器上並給我們一個鏈接?如果PDF有一些內部錯誤,我們可能會發現哪裏出了問題,這反過來可能是您的一個暗示。 – usr2564301

回答

0

這不是一個BIRT問題,而是一個PHP問題。

結果中的「PDF」可能包含異常追溯,HTML錯誤頁面或類似內容。

你現在應該做的是:

  • 修正PHP導入錯誤!雖然我不知道PHP,但我猜config.inc.php文件應該放在D:\ wamp \ www \ bazarmada!中?

  • 保存對本地文件的響應,並用十六進制編輯器或文本編輯器查看此文件。這應該可以幫助你找出腳本中還有什麼問題。