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?
'$ 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" –
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
' es bricht meinen Code' - Was bedeutet es? Haben Sie einen Fehler erhalten? –