0

BIRT 3.7.2 レポート エンジンを Web アプリに統合しました。問題は、特定の場所に HTML ページ (レンダリング形式の html を使用している場合) を作成することです。

レポートの html ページを保存したくありません。代わりに、その html を Web アプリに直接表示する必要があります (一時的に保存され、使用後に削除されます)。また、画像ディレクトリが作成され、画像やグラフが埋め込まれたレポートが作成されるたびに、画像やグラフが画像ディレクトリに保存され、スペースが不要に増加します。

誰かが私を助けることができます..??

https://dev.c-ware.de/confluence/display/PUBLIC/Embeding+Birt+into+Application+built+with+Mavenで提供されている手順に従いました 。

4

1 に答える 1

0

私はそれを行うために Birt ライブラリを掘り下げず、リンクに示されているように API を使用してクラスを作成しなかったため、これは最も効率的なソリューションではない可能性があります。

これは数か月前のことで、現在はソースにアクセスできませんが、基本的にはここで説明されているように、BirtRuntime をサーブレットとして webapp に追加しました。

これにより、Birt レポートを読み込むことができましたが、それらを既存の Web ページに埋め込む必要もありました。このアプリには、URL の html コンテンツを読み取るだけの非常に単純なプロキシ サーブレットが既にありました。そこで、BIRT レポートの URL を使用してこのサーブレットを呼び出し、Web ページの必要な場所に出力を貼り付けました。

プロキシサーブレットは次のようになりました。

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.IOUtils;

public class ProxyServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException  {

        String urlString = request.getParameter("url");
        try {
            URL url = new URL(urlString);
            url.openConnection();
            InputStream in = url.openStream();
            ServletOutputStream out = response.getOutputStream();
            IOUtils.copy(in, out);
        }
        catch (MalformedURLException e) {     
            throw new ServletException(e);
        }
        catch (IOException e) {     
            throw new ServletException(e);
        }
    }
}
于 2012-05-02T17:04:06.247 に答える