将BIRT报告与PHP网站集成

分享于 

8分钟阅读

Web开发

  繁體 雙語

介绍

考虑到现在的难点,开源编程语言。技术和工具在选择给定解决方案时很重要。

本文介绍了 Eclipse BIRT并解释了如何将它的报表与PHP网站集成,这样你就可以轻松而且不成本。

背景

Eclipse 是一个报告系统,可以与已知的Eclipse IDE 集成在一起,并且收费// R ools ( BIRT ) 是一个报告系统。 你可以生成几个解决方案,但在本文中,关注点是使用( 通常使用其他技术的一种常见需求) web站点的生成报告。 如果你知道它的他技术,比如,你将发现这个工具非常简单直观。

更多关于 BIRT: http://www.eclipse.org/birt/phoenix/

有时,你希望在网站上调用报告。 如果你曾经在 ASP.NET 网站上使用过iframe文件,或者 水晶报表 报告,我们需要做一些技巧和特定的操作。

首先,我使用 that,将Apache和 MySql ( 以及其他服务器) 以一种简单的方式开始和停止。 如果没有它,你可以做到这一点,但是我强烈推荐这个工具。 下载:http://www.apachefriends.org/en/xampp.html

这似乎是一个非常简单的方法,但是它不是 ! 这里有两个主要挑战:

按需要收费( 安装程序,SDK,配置等)的一个非常特定的步骤列表,。

因为BIRT运行在Java上并且你想用它来使用它,b ),所以必须有一些东西可以让它们彼此兼容。 这里进入 PHP JavaBridge,它将PHP或者 python 等原生脚本语言连接到一个Java服务,如 Tomcat。 这将是我们的翻译。

第一步是组装你的环境。 在这里你将安装一些软件,SDK,制作配置,复制和粘贴文件夹- -。 这可能需要几个小时才能正确。

1.要求
1.1. Java运行时和 SDK


2,软件安装
2.1. 你需要激活 Tomcat。 XAMPP将它包含在安装的框中,但是在开始之前,设置环境变量
JAVA_HOME在 Windows XP上到java目录。 这需要重新启动计算机。 然后,转到 <Xampp文件夹> tomcat并按 Catalina_start.bat 启动 tomcat
/java下载 php/java桥( 在以下位置:http://php-java-bridge.sourceforge.net/pjb/download.php - 版本"文稿"。 在 <Xampp文件夹> tomcatwebapps和检查安装( 在 http://127.0.0.1 :8081/JavaBridge/) 上粘贴 JavaBridge.war 文件。
2.3。 安装共用日志记录( 下载位置: http://commons.apache.org/logging/download_logging.cgi - 二进制文件,版本 zip。 将. jar 文件复制到 <文件文件夹> tomcatwebappsbirt-viewerWEB-INFlib
2.4 安装BIRT运行时( 下载:中,将WebViewerExample文件夹复制到 <文件夹> tomcatwebapps,并将它的重命名为BIRT查看器。
在XAMPP上启动Apache的
2.6. 在 <Xampp folder>上启动 Tomcat,执行 catalina_start.bat
2.7. 测试 tomcat: http://localhost:8080/ ( 如果有的话,就可以了)
2.8. 测试 JavaBridge: http://localhost:8080/JavaBridge ( 如果某些内容显示为 javabridge,则可以)

此时,你应该已经有了环境,同时安装了BirtViewer和JavaBridge并运行了。 现在你已经准备好使用PHP代码了。

使用代码

使用代码有两种方式- 一个通过Birt查看器,另一个通过JavaBridge直接使用。 通过ado查看报告,结果是报告和打印。导出。但是必须能够从web访问报表。 通过 Javabridge,直接访问文件( 不是通过 http ),所以呈现的内容是简单的HTML。 但是,你没有打印和导出选项。

现在在 Apache ( 不在tomcat上) 上创建一个新的。 记住让tomcat服务启动 !

通过Birt查看器,我使用了BirtViewer带来的TopNPercent报告:


<?php



 // 1. Http request



 $fname = "TopNPercent.rptdesign"; // name of the report


 $topCount = 5; // Top Count parameter


 $topPercentage = 25; // Top Percentage parameter



 // Redirect browser


 $dest = "http://localhost:8081/birt-viewer/frameset?__report=";


 $dest. = urlencode( realpath( $fname ) );


 $dest. = "&Top Count=". urlencode( $topCount );


 $dest. = "&Top Percentage=". urlencode( $topPercentage );



 header("location:".$dest);



?>



直接通过JavaBridge调用,使用相同的报告:


<?php 


 // 2. Local file using BIRT runtime engine



 if (!(get_cfg_var('java.web_inf_dir'))) {


 define ("JAVA_HOSTS", "127.0.0.1:8081");


 define ("JAVA_SERVLET", "../../tomcat/webapps/JavaBridge/JavaBridge.phpjavabridge");


 }



 $pth = "http://". $_SERVER["HTTP_HOST"]. $_SERVER["PHP_SELF"];


 $path_parts = pathinfo($pth);


 $imageURLPrefix = $path_parts['dirname']. "/images/";


 require_once("../../tomcat/webapps/JavaBridge/java/Java.inc");



 session_start(); 


 $here = getcwd();



 $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{


 $report = $birtReportEngine->openReportDesign("${here}/TopNPercent.rptdesign");


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


 $task->setParameterValue("Top Count", new java("java.lang.Integer", 6));


 $task->setParameterValue("Top Count", new java("java.lang.Integer", 6));



 $taskOptions = new java("org.eclipse.birt.report.engine.api.HTMLRenderOption");


 $outputStream = new java("java.io.ByteArrayOutputStream");


 $taskOptions->setOutputStream($outputStream);


 $taskOptions->setOutputFormat("html");


 $ih = new java( "org.eclipse.birt.report.engine.api.HTMLServerImageHandler");


 $taskOptions->setImageHandler($ih);


 $taskOptions->setEnableAgentStyleEngine(true);


 $taskOptions->setBaseImageURL($imageURLPrefix. session_id());


 $taskOptions->setImageDirectory($here. "/images/". session_id());


 $task->setRenderOption( $taskOptions );


 $task->run();


 $task->close(); } catch (JavaException $e) {


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


 } echo $outputStream;


?>



Points of Interest

这里的问题是组装所有的东西。 它很容易安装,没有引导线。 上面 步骤花了我一周多的时间,谷歌了很多( 真是太多了),但是看来它们会帮你节省很多麻烦和时间。

作为 5年使用微软技术的年经验顾问,我发现自己处理这些解决方案的。 "第一次"花费的时间长,但在 Having 组装之后,它就像其他技术一样容易。

试试这个,很值得。 如果你想用更少的钱来做同样的事情,那么你。

注意:如果想将BIRT与MySql集成起来,就没有安装驱动程序。 遵循以下说明:http://www.slideshare.net/vazi/birt-installation-and-configuration

历史记录



WEB  INT  rep  PHP  REPO  Report  
相关文章