Editar o arquivo: /home/pmalencar/iReport-4.0.1/etc/ireport.conf
colocando o caminho de uma outra versão do java inferior a 8 adicionando a linha abaixo:
jdkhome=”/usr/lib/jvm/java-6-openjdk-amd64″
Segue um passo a passo de como: Integrar os relatórios jasper com Scriptcase:
• Testado com: PHP Version 5.3.5 (Xampp 1.7.4) / Tomcat 6.0 / Mysql, SqlServer
• Instalar pacotes para utilizacao de web-services (atraves do pear)
<?php // PHP client for requesting reports from JasperServer via SOAP. //USAGE: $jasper_url = "http://localhost:8081/jasperserver/services/repository"; $jasper_username = "jasperadmin"; $jasper_password = 'jasperadmin'; $client = new JasperClient($jasper_url, $jasper_username, $jasper_password); /* Nome do arquivo do relatório importado para o jasper server */ $report_unit = "/reports/relatorio"; /* Formato de exportaçao do relatório */ $report_format = "PDF"; /* Parâmetos que são passados para o relatório, caso seja mais de um separar por vírgulas */ $report_params = array('id_plano_curso' => 4); $result = $client->requestReport($report_unit, $report_format,$report_params); header('Content-type: application/pdf'); echo $result; /* Essa classe (abaixo) você pode colocar numa biblioteca no Scriptcase e só marcar nas aplicações que você for usar */ class JasperClient { private $url; private $username; private $password; public function __construct($url, $username, $password) { $this->url = $url; $this->username = $username; $this->password = $password; } public function requestReport($report, $format, $params) { $params_xml = ""; foreach ($params as $name => $value) { $params_xml .= "<parameter name=\"$name\"><![CDATA[$value]]></parameter>\n"; } $request = " <request operationName=\"runReport\" locale=\"pt_BR\"> <argument name=\"RUN_OUTPUT_FORMAT\">$format</argument> <resourceDescriptor name=\"\" wsType=\"\" uriString=\"$report\" isNew=\"false\"> <label>null</label> $params_xml </resourceDescriptor> </request> "; $client = new SoapClient(null, array( 'location' => $this->url, 'uri' => 'urn:', 'login' => $this->username, 'password' => $this->password, 'trace' => 1, 'exception'=> 1, 'soap_version' => SOAP_1_1, 'style' => SOAP_RPC, 'use' => SOAP_LITERAL )); $pdf = null; try { $result = $client->__soapCall('runReport', array( new SoapParam($request,"requestXmlString") )); $pdf = $this->parseReponseWithReportData( $client->__getLastResponseHeaders(), $client->__getLastResponse()); } catch(SoapFault $exception) { $responseHeaders = $client->__getLastResponseHeaders(); if ($exception->faultstring == "looks like we got no XML document" && strpos($responseHeaders, "Content-Type: multipart/related;") !== false) { $pdf = $this->parseReponseWithReportData($responseHeaders, $client->__getLastResponse()); } else { throw $exception; } } if ($pdf) return $pdf; else throw new Exception("Jasper did not return PDF data. Instead got: \n$pdf"); } protected function parseReponseWithReportData($responseHeaders, $responseBody) { preg_match('/boundary="(.*?)"/', $responseHeaders, $matches); $boundary = $matches[1]; $parts = explode($boundary, $responseBody); $pdf = null; foreach($parts as $part) { if (strpos($part, "Content-Type: application/pdf") !== false) { $pdf = substr($part, strpos($part, '%PDF-')); break; } } return $pdf; } }