0

フュージョン3D円グラフをPDFエクスポートレポートに表示しようとしています。このために、チャートの画像を作成し、チャートがレンダリングされた後にサーバーに自動的に保存することを目的としました。これにより、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()

私はここ数日これに取り組んでいます。お願い助けて

4

1 に答える 1

1

どういうわけか、コードの一部である global を変更したかどうかがわからない$defaultParameterValuesため、phpファイルが次のように定義されていることがわかった方法と理由はわかりません。

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

関数内で参照されていparseExportParamsないため、反復できない未定義の配列を取得しています!!

これを解決する 1 つの方法はFCExporter.php、FusionCharts パックからオリジナルを取得し、これを自分のファイルに置き換えるか、2 つのファイルの差分を作成して、これを壊すような変更を加えていないかどうかを確認することです。

他の方法は次のとおりです。

$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;
} 
于 2012-12-20T12:13:13.697 に答える