【问题标题】:How Can I Change The Location of Image Files Created by BIRT in a Spring Boot Application如何在 Spring Boot 应用程序中更改 BIRT 创建的图像文件的位置
【发布时间】:2016-09-30 20:19:58
【问题描述】:

我有一个 Spring Boot 应用程序,它包装了 Eclipse BIRT 报告工具并通过 winsw 作为 Windows 服务运行。当渲染引擎生成的带有图表的报告时,Spring Boot 将图像文件保存在它在Windows/Temp 目录中创建的文件夹中。此文件夹及其内容在初创公司中持续存在,这是不可取的。

应用程序依赖于存在于预定义位置的数据文件夹,该位置存在于软件包的所有安装中。鉴于此,理想的情况是在包的数据文件夹中创建可以轻松管理的文件夹。有什么方法可以做到这一点(最好是允许嵌入式 Tomcat 服务器查找和提供文件的方法)?

编辑:用@Magnus 的回复结果更新

有问题的图像是由 ReportEngine 渲染过程生成的,所以我认为这是 BIRT 的事情而不是 Tomcat 的事情,但只是为了确保我将 server.tomcat.basedir=path/to/directory 添加到我的 application.properties 文件中。仍然写信给Windows/Temp

然而,这个回复让我开始思考,我发现 BIRT 的 EngineConfig 有一个setTempFolder 方法。将其设置为指向所需的文件夹(属性文件中的 server.tomcat.basedir 值)会导致 BIRT 在临时文件夹中工作,但生成的图像仍保存到 Windows\Temp 目录中。

编辑:更新 2

我能够在 EngineConfig 中设置 birt.viewer.working.path 属性,并通过从 ReportDesignHandle(或者可能是 ReportRunnable)中检索值来确认它是否已设置。更改值后,ReportEngine 现在在正确的目录中工作,但仍将图像放入Windows\Temp 文件夹中。覆盖 java.io.tmpdirproperty 什么也没做。

编辑:更新 3

这种工作.. 在 HtmlRenderOption 中设置图像文件夹位置会导致应用程序不会为 Windows\Temp 中生成的图像创建文件夹(耶!)。但是,它也没有将图像放在 HtmlRenderOption 中指定的位置(嘘!),所以我不确定在哪里可以定期清理这些图像文件。

【问题讨论】:

    标签: java eclipse spring spring-boot birt


    【解决方案1】:

    尝试在 HTMLRenderOption 中设置 imageDirectory。

    HTMLRenderOption options = new HTMLRenderOption();
    options.setImageDirectory("path/to/image/directory");
    ...
    renderTask.setRenderOption(options);
    

    http://www.eclipse.org/birt/documentation/integrating/reapi.php

    【讨论】:

    • 快到了。详情请查看原帖更新 3 中的 cmets。
    • 现在在哪里生成图像?
    • 你设置了图片目录的绝对路径吗?否则会在项目文件夹中生成图片。
    • 我确实使用了绝对路径。
    【解决方案2】:

    嵌入式tomcat默认在java.io.tmpdir系统属性指定的temp目录下创建目录。
    您可以使用应用程序属性server.tomcat.basedir手动设置tomcat临时目录

    查看代码库,有几个地方涉及创建临时文件。
    从我可以收集到临时图像目录设置为ParameterAccessor 类的主要位置。
    逻辑相当复杂,但它似乎默认为${birt.viewer.working.path}/report/images
    如果未设置工作路径系统属性,或者目录不可写,则默认为java.io.tmpdir 目录。
    我会尝试设置系统属性birt.viewer.working.path,确保它是可写的。
    如果这不起作用,您可能不得不求助于覆盖 java.io.tmpdir 系统属性。

    【讨论】:

    • 短篇小说,没用。长篇故事已编辑到原帖中。
    猜你喜欢
    • 2022-12-06
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 2020-09-02
    • 1970-01-01
    • 2017-12-18
    相关资源
    最近更新 更多