JasperReport 中使用的图像的 Samba 共享

Samba Share for Images used in a JasperReport

我在想,可以在 jasper 报告中显示来自 samba 共享的图像。但不是吗? 当我使用以下内容时它不起作用:

<image scaleImage="RetainShape" onErrorType="Blank">
    <reportElement key="image-3" x="15" y="240" width="255" height="180" uuid="d9a3770a-777b-482b-a53a-dada5b71be1e">
        <printWhenExpression><![CDATA[new Boolean($F{yzeichnung}.length() > 0)]]></printWhenExpression>
    </reportElement>
    <imageExpression><![CDATA[$F{yzeichnung}]]></imageExpression>
</image>

而 yzeichnung 带有类似“smb://mysambashare/directory/picture.jpg”的路径。路径本身是有效的,因为我可以使用 Dolphin 浏览目录。那么实现这一目标的关键是什么?非常感谢任何想法。

Dolphin 包含一个在 Java 应用程序中不可用的 Samba 客户端。

如果您想从 Java 应用程序中的 Samba 共享读取文件,您需要挂载 Samba 共享,然后通过标准 Java 文件系统 类.

例如在 /mnt/mysambashare 安装 Samba 共享,然后在报告中使用 /mnt/mysambashare/目录/picture.jpg。

ImageExpression 也接受 java java.io.InputStream。您必须选择可以处理 Samba 的第 3 方库。

例如,将https://www.jcifs.org/src/中的jcifjar放在classpath中,可以使用如下表达式:

new SmbFileInputStream("smb://" + user + ":" + password + "@" + filePath
   + File.separator + fileName);