с использованием Apache FOP и Springboot для создания PDF. Pdf содержит изображения, которые загружаются из папки / images в разделе ресурсов. Это нормально работает при локальной настройке затмения, но после упаковки в виде jar путь не разрешается
FopFactory fopFactory = FopFactory.newInstance(new File(".").toURI());
FOUserAgent foUserAgent = fopFactory.newFOUs
erAgent();
ByteArrayOutputStream outputStream = new
ByteArrayOutputStream();
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF,
foUserAgent, outputStream);
TransformerFactory factory =
TransformerFactory.newInstance(XSL_LOADER, null);
factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
Transformer transformer = factory.newTransformer(new
StreamSource(getClass().getResourceAsStream(XSL_PATH_ROOT)));
Способ определения пути:
private String getImagePath(String icon) {
if (icon != null) {
try {
URL resourceURL = ResourceUtils.getURL(
new StringBuilder().append("classpath:images/").append(icon).append(PNG).toString());
if (ResourceUtils.isJarURL(resourceURL)) {
URL extractedJarURL = ResourceUtils.extractJarFileURL(resourceURL);
return extractedJarURL.getPath();
} else {
return resourceURL.getPath();
}
} catch (FileNotFoundException | MalformedURLException e) {
e.getStackTrace();
}
}
return null;
}
XSL код:
<xsl:attribute name="src"><xsl:value-of select="iconName" /></xsl:attribute>
Получение ошибки как ОШИБКА org.apache.fop.apps.FOUserAgent - изображение не найдено. URI: файл: /usr/tomcat/banking-app/banking-app.jar! / BOOT-INF / classes! /Images/ICON1.png. (Контекстная информация недоступна)