Общий ресурс Samba для изображений, используемых в отчете JasperReport

#image #jasper-reports #samba

#изображение #jasper-отчеты #samba

Вопрос:

Я подумал, можно было бы отобразить изображение из общего ресурса samba в отчете jasper. Но это не так? Когда я использую следующее, это не работает:

 <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. Итак, что является ключом к тому, чтобы это заработало? Мы высоко ценим любые соображения.

Ответ №1:

ImageExpression также поддерживает java java.io.InputStream . Вы должны выбрать стороннюю библиотеку, которая может обрабатывать Samba.

Например, помещая jcif jar из https://www.jcifs.org/src / в пути к классу можно использовать следующее выражение:

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

Комментарии:

1. Спасибо за подсказку. Я знаком с библиотекой jcifs, но я не знал, что могу использовать там InputStream (в ImageExpression).

Ответ №2:

Dolphin включает клиент Samba, который недоступен в приложениях Java.

Если вы хотите прочитать файл из общего ресурса Samba в приложении Java, вам нужно смонтировать общий ресурс Samba, а затем получить к нему доступ через стандартные классы файловой системы Java.

Например. смонтируйте общий ресурс Samba в /mnt/mysambashare, а затем используйте /mnt/mysambashare/directory/picture.jpg в отчете.