從我的PHP頁面,我想創建/啓動BIRT
report
:創建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
文件無法打開!那麼,什麼是錯的?
其中,java/Java.inc導入的java目錄駐留在哪裏? – bmurauer
它在裏面/ birt/ – pheromix
在文件中有什麼有用的東西嗎?使用十六進制查看器來檢查 - 有時當我想我下載PDF時,我只能看到HTML。如果該文件看起來像PDF,可以將它發佈到公共服務器上並給我們一個鏈接?如果PDF有一些內部錯誤,我們可能會發現哪裏出了問題,這反過來可能是您的一個暗示。 – usr2564301