首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与JasperReports集成的网络框架?

与JasperReports集成的网络框架?
EN

Stack Overflow用户
提问于 2010-05-02 16:16:05
回答 3查看 1.6K关注 0票数 0

哪些web开发框架本机支持JasperReports?

以下列表格为例:

代码语言:javascript
复制
<form name="report" method="post">
  <input type="hidden" name="REPORT_PATH" value="reports/Names" />
  <input type="hidden" name="REPORT_FILE" value="List" />
  <input type="hidden" name="REPORT_FORMAT" value="pdf" />
  <input type="hidden" name="REPORT_EMBED" value="false" />

  Name: <input type="text" name="report_Name" value="" /><br />
  Date: <input type="text" name="report_Date" value="" /><br />
  <input type="submit" name="View" value="View" />
</form>

该框架将把report_参数传递给JasperReports,后者反过来运行reports/Names/List.jasper,然后向浏览器发送一个PDF附件。

一般而言,该框架可以:

  • 配置报表(即隐藏的REPORT_变量)
  • 使用web表单设置报表参数(即report_变量)
  • 处理配置数据库连接、报表执行等。

我不关心集成是如何工作的技术细节,只要它是简单的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-09 17:40:10

PHP/Java桥

代码语言:javascript
复制
<?php                                                                           
checkjavaExtension();                                                           

function report_parse_post_parameters() {                                       
  // Automatically extract report parameters (data types converted in report).  
  //                                                                            
  $params = new java('java.util.HashMap');                                      

  // Get the names of the form elements that contain lists of comma-separated
  // values.                                                                 
  //                                                                         
  $reportArrays = explode( ',', $_POST['report_Array'] );                    

  // Convert each of the comma-separated values into a list of values.
  //                                                                  
  foreach( $reportArrays as $reportArray ) {                          
    $arrays = array_filter( explode( ',', $_POST[ $reportArray ] ) ); 

    // Map the values to a java.util.ArrayList.
    //                                         
    $arrayList = new java( 'java.util.ArrayList' );

    foreach( $arrays as $value ) {
      $arrayList->add( $value );  
    }                             

    // Pass the list of values into the report (without the "report_" prefix).
    //                                                                        
    $params->put( substr( $reportArray, 7 ), $arrayList );                    

    // Remove the value from the POST array.
    //                                      
    unset( $_POST[ $reportArray ] );        
  }                                         

  // Don't pass the list of array names into the report.
  //                                                    
  unset( $_POST['report_Array'] );

  // Pass the remaining POST "report_" variables as report parameters.
  //
  foreach( $_POST as $name => $value ) {
    if( strpos( $name, "report_" ) === 0 ) {
      $params->put( substr( $name, 7 ), $value );
    }
  }

  return $params;
}

function report_execute( $report ) {
  $user = 'username';
  $password = 'password';

  $report = realpath("/home/reports/$report.jasper");

  // Load the MySQL database driver.
  //
  java( 'java.lang.Class' )->forName( 'com.mysql.jdbc.Driver' );

  // Attempt a database connection.
  //
  $conn = java( 'java.sql.DriverManager' )->getConnection(
    "jdbc:mysql://localhost:3306/database?user=$user&password=$password" );

  $params = report_parse_post_parameters();

  // Use the fill manager to produce the report.
  //
  $fm = java('net.sf.jasperreports.engine.JasperFillManager');
  $pm = $fm->fillReport($report, $params, $conn);

  header('Cache-Control: no-cache private');
  header('Content-Description: File Transfer');
  header('Content-Disposition: attachment, filename=report.pdf');
  header('Content-Type: application/pdf');
  header('Content-Transfer-Encoding: binary');

  java_set_file_encoding("ISO-8859-1");

  $em = java('net.sf.jasperreports.engine.JasperExportManager');
  $result = $em->exportReportToPdf($pm);

  header('Content-Length: ' . strlen( $result ) );

  echo $result;
}
?>
票数 1
EN

Stack Overflow用户

发布于 2010-05-02 16:19:06

Spring框架支持JasperReports。

票数 1
EN

Stack Overflow用户

发布于 2010-05-04 08:02:08

试试动态茉莉

当我开始用JSF制作JasperReports时,我没有找到符合我所要的任何框架。有一点,我想开源我制造的引擎(公司拒绝了)。

无论如何,我的想法是如此简单,我构建了一个通用Servlet来接收所有类型的报告操作,然后分派到特定的工厂。大部分工作都在Javascript中。

无论如何,尝试DJ,如果它失败了,我会很高兴解释更多关于我自己的引擎。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2754067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档