将图表导出为image / pdf时,Fusion图变量`$ defaultParameterValues`被发现为空

时间:2012-12-20 06:30:04

标签: php pdf-generation codeigniter-2 wkhtmltopdf fusioncharts

我正在尝试在PDF导出报告中显示融合3D饼图。为此,我的目标是创建图表的图像,并在图表渲染后自动将其保存在服务器中,以便我可以在我的pdf文件中调用该图像。我已经设置了导出的图表参数,如下面的代码     <chart caption='testchart' exportEnabled='1' exportAtClient='0' exportAction='save' exportFileName='testimage'exportHandler='http://mysite.com/pdf/getChartExported'>

在我的导出处理程序文件中,我还设置了“SAVE_PATH”和“HTTP_URI”常量的路径。

我的问题是 1.如何在页面加载后将图表导出并保存为图像 2.在导出处理程序中,我得到并出错(我正在使用Codeigniter)

A PHP Error was encountered

Severity: Warning

Message: Invalid argument supplied for foreach()

Filename: libraries/FCExporter.php

Line Number: 304
 DOMId=
 height=0
 width=0
 fileName=
 statusMessage= Export Resource not found.
 statusCode=0

当我检查时,在FCExport处理程序文件函数$defaultParameterValues

中发现全局变量parseExportParams()为空

过去几天我一直在研究这个问题。请帮帮我

1 个答案:

答案 0 :(得分:1)

不知何故,我不确定,如何以及为什么我不知道你是否修改了代码的任何部分,即全局$defaultParameterValues,我发现php文件定义如下:

$defaultParameterValues = array( 
"exportfilename"       => "FusionCharts",
"exportaction"         => "download",
"exporttargetwindow"   => "_self",
"exportformat"         => "PDF"
);  

未在函数parseExportParams内被引用,从而得到一个无法迭代的未定义数组!!

解决此问题的一种方法是从FusionCharts包中获取原始FCExporter.php,然后将其替换为您自己的,或者对这两个文件进行差异检查,以检查是否在任何破坏此问题的地方进行了修改。

另一种方式是:

检查$defaultParameterValues是否为数组,如果不是,则实例化它。

if (!isset($defaultParameterValues)) {
$defaultParameterValues = array();
} 

同时,还有另一种方法可以使用默认值扩展参数:

修改parseExportParams以替换现有的:

foreach ( $defaultParameterValues as $key => $value )
{
    // if a parameter from the default parameter array is not present
    // in the $params array take the parameter and value from default
    // parameter array and add it to params array
    // This is needed to ensure proper export  
    $params [$key ] =  @$params[$key ] ? $params[$key ] : $value ;
}

if (isset($defaultParameterValues) && is_array($defaultParameterValues)) {
    $params = $params + $defaultParameterValues;
}