PHP/Java 桥:
<?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;
}
?>