1
からJaseprReportsの報告書にREPORT_LOCALEを設定する方法。私はPHPコードから<em>JasperReportsの</em>のレポートを実行できるようにするために一緒にPHPとPHP/JavaのブリッジとTomcat 8とで<em>JasperReportsの</em>ライブラリを使用しているPHP
実は私の作業コードは次のとおりです。私は、ディレクトリと、明らかな理由のためのデータベース接続についての唯一のいくつかの情報を削除
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);
}
。
上記のコードは動作していますが、今はイタリア語に設定するためにREPORT_LOCALEを設定する必要があります。
私はいくつかの検索をしたと私はのJavaでこのコードを見つけました:
Locale locale = new Locale("en", "US");
metadata.put(JRParameter.REPORT_LOCALE, locale);
私は "私は私の実際のコードに挿入することができるようにPHPに変換する必要があり、それを変更する必要がありますイタリア語 "の価値。 私は以下のようにしていない成功を収めてみました:
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);
}
}
誰も私を助けてもらえますか?
'$ロケール=新しいJava(」 java.util.Locale "、" en "、" US ");' - このコードを試しましたか?あなたはイタリアのロケールを使うべきです(あなたの投稿からわかるように) - "it_IT" –
はい、あなたが私のコードで見ることができるように '$ locale = new Java(" java.util.Locale "、" en "、" US ");'がありますが、この行も '$ exporter-> setParameter(java ( "net.sf.jasperreports.engine.JRExporterParameter") - > REPORT_LOCALE、$ locale);それは自分のコードを破ります – agodoo
'それは自分のコードを破壊します' - それはどういう意味ですか?間違いましたか? –