#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 в отчете.