###前提・実現したいこと
PHPのフレームワーク上で、JasperReportsを使った日本語表記を含む帳票を出力しようとしています。今回使用したツールはcossou/JasperPHPで、Laravel5.4上で動いています。
###発生している問題・エラーメッセージ
日本語部分だけが出力できません。ぶっちゃけJasperの日本語がPDFで出るようになるならcossou/JasperPHPじゃなくてもいいです。内部でJasperStarterを使っているようなので、そちらで設定する方法でもあればとてもうれしいです。
###該当のソースコード
※Laravel独自の記法も含まれます。
PHP
1<?php 2namespace App\Library; 3use JasperPHP; 4class ReportExporter { 5 public static function exportFile($jrxmlFilePath, $parameters = null) { 6 if(!\File::exists(storage_path('app/jasper'))) { 7 \File::makeDirectory(storage_path('app/jasper'), 0775, true); 8 } 9 if(!\File::exists(storage_path('app/public/pdf'))) { 10 \File::makeDirectory(storage_path('app/public/pdf'), 0775, true); 11 } 12 $jasperFilePath = storage_path('app/jasper/' . urlencode($jrxmlFilePath)); 13 $pdfFilePath = storage_path('app/public/pdf/' . str_random(40)); 14 if(!\File::exists($jasperFilePath)) { 15 JasperPHP::compile($jrxmlFilePath, $jasperFilePath)->execute(); 16 } 17 $output = JasperPHP::process( 18 $jasperFilePath, 19 $pdfFilePath, 20 array('pdf'), 21 $parameters, 22 [ 23 'driver' => config("database.connections.mysql.driver"), 24 'username' => config("database.connections.mysql.username"), 25 'password' => config("database.connections.mysql.password"), 26 'database'=> config("database.connections.mysql.database"), 27 'host' => config("database.connections.mysql.host"), 28 'jdbc_dir' => resource_path('assets/jdbc') 29 ] 30 )->execute(); 31 return $pdfFilePath . '.pdf'; 32 } 33}
###試したこと
- JaspersoftStudio上でもPreviewでは正しく見えても、Export As PDFすると日本語部分だけ消える
- JaspersoftStudioのフォント設定で、PDFにフォントを埋め込む設定にしてある
- JaspersoftStudioのフォント設定からexportしたfonts.jarをJasperPHPのjdbc_dirに置いてある
※置かないと「そんなフォントはない」とエラーが出るので、フォントは読み込まれているし、PDFも組み込まれた分容量も大きくなっている
- JavaでJasperを使ったときは以下の設定をすることで日本語を含むレポートが正しく出力された
Java
1JasperReportsContext context = DefaultJasperReportsContext.getInstance(); 2context.setProperty("net.sf.jasperreports.extension.registry.factory.fonts", "net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory"); 3context.setProperty("net.sf.jasperreports.extension.simple.font.families.font", "/path/to/font");
###補足情報(言語/FW/ツール等のバージョンなど)
cossou/jasperphp 2.4
laravel/framework 5.4
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。