5

我正在尝试将 BIRT (3.7) 与我的 RCP 应用程序集成。

生成转换为图像(PNG、SVG 等)的报告图表时。我想在生成 html 报告时制作一个嵌入的图表(图像)

如何在 html 报告中制作嵌入式图像图表?

setBaseImageUrl("url") 的决定不适合我。

4

3 回答 3

7

我找到了解决方案:)

...
IReportRunnable design = engine.openReportDesign(designInputStream);
IRunAndRenderTask task = engine.createRunAndRenderTask(design);
IRenderOption options = null;
switch (format) {
            case ReportFormats.HTML_REPORT:
                options = new HTMLRenderOption();
                options.setOutputFormat(HTMLRenderOption.HTML);
                options.setOutputStream(outputStream);
                options.setSupportedImageFormats("PNG");
                ((HTMLRenderOption) options).setEmbeddable(true);
                options.setImageHandler(new HTMLServerImageHandler() {
                    @Override
                    protected String handleImage(IImage image, Object context,
                            String prefix, boolean needMap) {
                        String embeddedImage = null;

                        //embeddedImage = convert image.getImageStream() to Base64 String

                        return "data:image/png;base64," + embeddedImage;
                    }
                });
                break;
                ...

if (options != null) {
    task.setRenderOption(options);                              
    task.run();
    task.close();
    engine.destroy();
}
...
于 2012-07-25T16:00:30.350 回答
1

在 birt 设计中插入图像的步骤

从调色板中拖动图像项目并按照上述步骤操作。您可以轻松地将图像添加到您的设计中。根据您的方便,您可以将您的设计填充为 html、doc、pdf 等

于 2012-07-20T09:19:46.510 回答
0

您可以对图像中的数据进行 base64 编码并将其直接嵌入 HTML 或作为 javascript 变量

http://www.greywyvern.com/code/php/binary2base64/

这可能很方便,但会使您的页面更大。

于 2012-07-20T09:04:18.203 回答