2016-05-10 6 views
1

Ich verwende Jasper Bibliothek mit zusammen mit PHP und PHP/Java-Brücke und Tomcat 8 in der Lage sein einen Jasper ‚s Bericht von PHP-Code auszuführen.Wie stellt REPORT_LOCALE in JaseprReports Bericht von PHP

Eigentlich mein Arbeitscode lautet:

if (! defined('BASEPATH')) exit('No direct script access allowed'); 

require_once("http://localhost:8080/JavaBridge/java/Java.inc"); 
if (! function_exists('run_report')) { 
    function run_report($report_name = '') { 
     //--------------------------------------------------------------- 
     // Esegue un report di Jasper Report 
     // $report_name è il nome del file .jwxml senza estensione 
     //--------------------------------------------------------------- 
     try { 
      $jasperxml = new Java("net.sf.jasperreports.engine.xml.JRXmlLoader"); 
      $jasperDesign = $jasperxml->load(realpath("./assets")."/".$report_name.".jrxml"); 
      $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("id_record", 88); 
     $class = new JavaClass("java.lang.Class"); 
     $class->forName("com.mysql.jdbc.Driver"); 
     $driverManager = new JavaClass("java.sql.DriverManager"); 

    $locale = new Java("java.util.Locale"); 
     $conn = $driverManager->getConnection("jdbc:mysql://myhost:3306/mydb?zeroDateTimeBehavior=convertToNull", "myuser", "mypassword"); 
     $jasperPrint = $fillManager->fillReport($report, $params, $conn); 
     $exporter = new java("net.sf.jasperreports.engine.JRExporter"); 
     $outputPath = "............outputfatt88.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); 
     $exporter->setParameter(java("net.sf.jasperreports.engine.JRExporterParameter")->REPORT_LOCALE, $locale); 

     header("Content-type: application/pdf"); 
     header("Content-Disposition: attachment; filename=outputfatt88.pdf"); 
     $exporter->exportReport(); 
     readfile($outputPath); 
     unlink($outputPath); 
    } 

ich offensichtlich Grund nur einige Informationen über Verzeichnisse und Datenbankverbindung entfernt.

Der obige Code funktioniert, aber jetzt müsste ich REPORT_LOCALE setzen, um es auf italienisch zu setzen.

machte ich einige Suche und ich fand diesen Code in Java:

Locale locale = new Locale("en", "US"); 
metadata.put(JRParameter.REPORT_LOCALE, locale); 

Ich würde es brauchen, um zu konvertieren, so php, dass ich in meinem eigentlichen Code einfügen kann, und es ändern müssen, um " italienischer "Wert. Ich habe versucht, ohne Erfolg auf folgende Weise:

if (! defined('BASEPATH')) exit('No direct script access allowed'); 

require_once("http://localhost:8080/JavaBridge/java/Java.inc"); 
if (! function_exists('run_report')) { 
    function run_report($report_name = '') { 
     //--------------------------------------------------------------- 
     // Esegue un report di Jasper Report 
     // $report_name è il nome del file .jwxml senza estensione 
     //--------------------------------------------------------------- 
     try { 
      $jasperxml = new Java("net.sf.jasperreports.engine.xml.JRXmlLoader"); 
      $jasperDesign = $jasperxml->load(realpath("./assets")."/".$report_name.".jrxml"); 
      $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("id_record", 88); 
     $class = new JavaClass("java.lang.Class"); 
     $class->forName("com.mysql.jdbc.Driver"); 
     $driverManager = new JavaClass("java.sql.DriverManager"); 

     $locale = new Java("java.util.Locale", "en", "US"); 
//db username and password 
     $conn = $driverManager->getConnection("jdbc:mysql://myhost:3306/mydb?zeroDateTimeBehavior=convertToNull", "myuser", "mypassword"); 
     $jasperPrint = $fillManager->fillReport($report, $params, $conn); 
     $exporter = new java("net.sf.jasperreports.engine.JRExporter"); 
     $outputPath = "/................./outputfatt88.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); 
     $exporter->setParameter(java("net.sf.jasperreports.engine.JRExporterParameter")->REPORT_LOCALE, $locale); 

     header("Content-type: application/pdf"); 
     header("Content-Disposition: attachment; filename=outputfatt88.pdf"); 
     $exporter->exportReport(); 
     readfile($outputPath); 
     unlink($outputPath); 
    } 
} 

Kann mir jemand helfen?

+0

'$ locale = new Java (“ java.util.Locale "," en "," US ");' - Hast du diesen Code probiert? Sie sollten Italienisch Locale verwenden (wie ich von Ihrem Beitrag verstehe) - "it_IT" –

+0

Ja; Wie Sie in meinem Code sehen können, habe ich '$ locale = new Java (" java.util.Locale "," en "," US ");', aber wenn ich auch diese Zeile $ exporter-> setParameter (java ("net.sf.jasperreports.engine.JRExporterParameter") -> REPORT_LOCALE, $ locale); 'Es bricht mein Code – agodoo

+0

' es bricht meinen Code' - Was bedeutet es? Haben Sie einen Fehler erhalten? –

Antwort

0

Sie haben Ihren Standort erstellen, um das Zielland entsprechen:

$locale = new Java("java.util.Locale", "it", "IT"); 

Dann fügen Sie, wie bereits geschehen, das Gebietsschema des Berichts:

$exporter->setParameter(java("net.sf.jasperreports.engine.JRExporterParameter")->REPORT_LOCALE, $locale);