0

我将 BIRT 3.7.2 报告引擎与我的 Web 应用程序集成在一起。现在的问题是,它在特定位置创建了一个 HTML 页面(如果我使用的是呈现格式 html)。

我不想保存报告 html 页面,而是希望它直接在我的网络应用程序中显示该 html(保存在 temp 中并在使用后删除)。此外,它还会创建一个图像目录,并且每次生成包含嵌入图像和/或图形的报告时,都会将图像和/或图形保存在图像目录中,从而不必要地增加空间。

有人可以帮我..??

我已按照以下步骤提供: https ://dev.c-ware.de/confluence/display/PUBLIC/Embeding+Birt+into+Application+built+with+Maven

4

1 回答 1

0

我没有深入研究 Birt 库来做这件事,也没有像链接中显示的那样使用他们的 API 创建任何类,所以这可能不是最有效的解决方案。

这是几个月前的事了,我现在无法访问源代码,但基本上我只是将BirtRuntime作为 servlet 添加到我的 webapp 中,如此处所述。

这允许我加载 Birt 报告,但我还需要将它们嵌入到现有网页中。我已经在这个应用程序中有一个非常简单的代理 servlet,它只会读取 url 的 html 内容。所以我只是使用我的 BIRT 报告的 url 调用这个 servlet,然后我会将输出粘贴在网页上我想要的位置。

代理 servlet 是这样的:

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 回答