0

Quels frameworks de développement Web supportent nativement JasperReports?Cadre Web avec intégration de JasperReports?

Tenir compte de la forme suivante comme exemple:

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

Le cadre passerait les paramètres report_ à JasperReports, qui exécute à son tour reports/Names/List.jasper, et envoie ensuite une pièce jointe PDF dans le navigateur.

En général, le cadre peut:

  • Configurer le rapport (par exemple, les cachés REPORT_ variables)
  • Utilisez un formulaire Web pour définir les paramètres du rapport (c.-à-variables report_)
  • Poignée configuration de la connexion à la base de données, de l'exécution du rapport, etc.

Je ne me soucie pas de la minutie technique sur le fonctionnement de l'intégration. ong comme c'est simple.

Répondre

1

PHP/Java Bridge:

<?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

L'infrastructure Spring prend en charge JasperReports.

+0

Et, selon la documentation, sévèrement mis à jour. –

1

Essayez Dynamic Jasper. Quand j'ai commencé à faire JasperReports avec JSF, je n'ai trouvé aucun framework pour correspondre exactement à ce que je recherchais. En un point je voulais ouvrir le moteur que j'ai fabriqué (l'entreprise a rejeté).

Quoi qu'il en soit, mon idée est si simple, j'ai construit une servlet générale pour recevoir tous les types d'actions de rapport, puis envoyer à des usines spécifiques. La plupart du travail était en Javascript.

Quoi qu'il en soit, essayez DJ, si cela vous échoue, je serais heureux d'expliquer plus sur mon propre moteur.

+0

Dave Je suis désolé d'être en retard, j'ai essayé de l'écrire ici mais c'était un grand sujet. J'écris un billet de blog à ce sujet, mettra à jour ma réponse d'ici demain – medopal

+0

Je vois que vous avez déjà résolu le problème, mais de toute façon, voici un post expliquant comment j'ai fait mon outil de reporting. http://ctrlspaceit.wordpress.com/2010/05/10/jasper-reports-jsf-engine/ – medopal

Questions connexes