matteo.agostoni Posted May 6, 2016 Share Posted May 6, 2016 I have developed an application in PHP that uses JasperReports library and runs a report from PHP. To make PHP and jasper reports library to comunicate, I installed PHP/Java Bridge on Tomcat, so that php application can speak with java. I made a simple prototype of the php code that comunicate with java and run jasper report. Here the code: <?php/* This file is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with This file. If not, see <http://www.gnu.org/licenses/>. */ require_once("http://localhost:8080/JavaBridge/java/Java.inc"); try { $jasperxml = new Java("net.sf.jasperreports.engine.xml.JRXmlLoader"); $jasperDesign = $jasperxml->load(realpath("customer.jrxml")); $query = new Java("net.sf.jasperreports.engine.design.JRDesignQuery"); $query->setText("SELECT customer.first_name AS customer_first_name, customer.last_name AS customer_last_name, customer.email AS customer_email FROM customer customer"); $jasperDesign->setQuery($query); $compileManager = new JavaClass("net.sf.jasperreports.engine.JasperCompileManager"); $report = $compileManager->compileReport($jasperDesign);} catch (JavaException $ex) { echo $ex;} $fillManager = new JavaClass("net.sf.jasperreports.engine.JasperFillManager"); $params = new Java("java.util.HashMap"); $params->put("title", "Customer"); $class = new JavaClass("java.lang.Class"); $class->forName("com.mysql.jdbc.Driver"); $driverManager = new JavaClass("java.sql.DriverManager"); $conn = $driverManager->getConnection("jdbc:mysql://localhost:3306/sakila?zeroDateTimeBehavior=convertToNull", "myuser", "mypassword"); $jasperPrint = $fillManager->fillReport($report, $params, $conn); $exporter = new java("net.sf.jasperreports.engine.JRExporter"); $outputPath = realpath(".") . "/" . "output.pdf"; $exporter = new java("net.sf.jasperreports.engine.export.JRPdfExporter"); $exporter->setParameter(java("net.sf.jasperreports.engine.JRExporterParameter")->JASPER_PRINT, $jasperPrint); $exporter->setParameter(java("net.sf.jasperreports.engine.JRExporterParameter")->OUTPUT_FILE_NAME, $outputPath); header("Content-type: application/pdf"); header("Content-Disposition: attachment; filename=output.pdf"); $exporter->exportReport(); readfile($outputPath); unlink($outputPath);?>[/code] The code is correctly runnning. As you can see, actually the code export the report to pdf file and then open the browser. I would like to know how I could directly open the report in the browser without writing the pdf file on disk; in this way I can avoid to give write permission on the directory. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now