更新: xserver: WebRendererを必要としないソリューション。Swing Edition は、2012 年 7 月 9 日の時点で HTML5 をサポートする唯一のエディションです。swing Edition を使用して、GUI なしで画像をキャプチャできます。
Eclipse の SWT Browser を使用する方法を見つけました。ただし、これはヘッドレス モードでは実行できません。これを実装するには xserver を使用する必要があります。この質問を参照してください。
これには xserver が必要であり、ヘッドレス モードでは実行できないため、JxBrowser を使用することをお勧めします。これは非常に簡単で、すべてのフュージョン チャート スクリプトを含む html ファイルを生成するだけです。#1、#2、#3 を参照
<html><head>
ヘッダー ( )、jquery.min.js、FusionCharts.js、FusionCharts.HC.js、FusionCharts.HC.Charts.jsを含む template.html ファイルを作成する必要があります。これらの各スクリプトが独自のスクリプト タグ ( <script type="text/javascript"> [js code] </script>
)内にあることを確認します。
次に、グラフをレンダリングする手順を含む独自のスクリプト タグを使用して、別の JavaScript 関数を追加します。例えば:
function load() { FusionCharts.setCurrentRenderer('javascript'); var chart = new FusionCharts("swf", 'chart0', "width", "height", "0", "1"); chart.setXMLData("XML DATA HERE"); chart.render("divNAMEHere"); }
ここで、load() 関数 onload を呼び出し、チャートをレンダリングする div を作成し、html ファイルを終了する必要があります。例えば:
`
テスト `
Eclipse SWT ブラウザ ライブラリをインポートする新しいクラスを作成します。ディスプレイ、シェル、およびブラウザをインスタンス化します (これをガイドラインとして使用して、何が起こっているかを理解してください: http://www.roseindia.net/tutorials/swt/swt-browser.shtml )。
ブラウザのテキスト ( browser.setText("htmlcode")
) を template.html の html コードに設定します。これを行う最善の方法は、BufferedReader を使用してファイルを読み取ることです。
最後に、画像のレンダリングには時間がかかります。これを行うためのより良い方法がおそらくありますが、それを機能させたい場合は、カウントを設定し、特定の数の後に画像をキャプチャします。最後に追加する必要があるのは次のとおりです。
int i = 0;
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
{
display.sleep();
i++;
// System.out.println(i);
if(i==100)
{
GC source = new GC (shell);
Image image = new Image(display, browser.getClientArea());
source.copyArea(image, 0, 0);
ImageLoader io = new ImageLoader ();
io.data = new ImageData[] { image.getImageData() };
File f = new File (currentDir+"/workpng.png");
io.save (f.getAbsolutePath(), SWT.IMAGE_PNG);
}
}
}