此报告包含 jasper studio 中的外部 jar,当我在 jasper 中按预期运行时,不会产生任何错误,但如果我在 laravel 上编译它,则会生成错误填充报告错误加载脚本类。
我在 jaspersoft 中看到我的 external.jar 只有名称中的路径,如 class=external.jar,我对 .jasper 文件进行逆向工程,不知道如何 jasperstarter 或 php 访问这个外部 jar 库
Jasper studio:参考库
/Users/me/Documents/GitHub/myproject/storage/app/file/jasper/external.jar
我的 jrxml 的详细信息:
<scriptlet name="Scriptlet_1" class="external">
<scriptletDescription><![CDATA[]]></scriptletDescription>
</scriptlet>
我的 PHP 的详细信息
$folderstorage = "/app/file/jasper";
$folderassets = "/User/file/jasper";
$namef = "invoice";
$input = storage_path().$folderstorage."/".$namef.".jasper";
$output = storage_path().$folderstorage;
$options = [
'format' => [$ext2],
'locale' => 'en',
'params' => ['myid'=>$id],
'db_connection' => [
'driver' => 'postgres', //mysql, ....
'username' => env("DB_USERNAME"),
'password' => env("DB_PASSWORD"),
'host' => env("DB_HOST"),
'database' => env("DB_DATABASE"),
'port' => env("DB_PORT")
]
];
if(file_exists(storage_path().$folderstorage."/".$namafile . '.' . $ext)){
unlink(storage_path().$folderstorage."/".$namafile . '.' . $ext );
}
$jasper = new PHPJasper;
$jasper->compile($input)->process(
$input,
$output,
$options
)->execute();
在浏览器中运行时,请查看我的 IDE 控制台: Using $input = storage_path().$folderstorage."/".$namef.".jrxml";
value = ((external)parameter_Scriptlet_1_SCRIPTLET.getValue()).calcucredit(((java.math.BigDecimal)variable_sumTotalItem.getEstimatedValue()).doubleValue()).toString().toUpperCase(); //$JR_EXPR_ID=26$
使用 .jasper
Error filling reportError loading scriptlet class: calcucredit
在这个项目上,我运行:
- 拉拉维尔 6.2
- geekcom/phpjasper:3.3
- 碧玉工作室 6.6.0
- 在 external.jar 项目中,我包含了 jasperreports-6.7.0