Я пытаюсь сгенерировать PDF из шаблона с тимьяном. Но я получаю сообщение об ошибке при выполнении метода templateEngine.process (). Ошибка выглядит следующим образом:
org.thymeleaf.exceptions.TemplateProcessingException:Разрешение ресурса ServletContext с помощью org.thymeleaf.resourceresolver.ServletContextResourceResolver может быть выполнено только тогда, когда контекст реализует org.thymeleaf.context.IWebContext
Пожалуйста, помогите. Спасибо заранее.
Метод контроллера
@Autowired
TemplateEngine templateEngine;
@RequestMapping(value = "/print-pdf",method = RequestMethod.GET, produces = "application/pdf")
public ResponseEntity<InputStreamResource> view() throws IOException {
UserDto userDto = userService.findUserById(100689);
ByteArrayInputStream bis=null;
try {
bis = pdfGenerator.createAndViewPdf("html_to_print",userDto);
} catch (Exception e) {
e.printStackTrace();
}
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Disposition", "inline; filename=user.pdf");
return ResponseEntity
.ok()
.headers(headers)
.contentType(MediaType.parseMediaType("application/pdf"))
.body(new InputStreamResource(bis));
}
Метод обслуживания PDF
public ByteArrayInputStream createAndViewPdf(String templateName, UserDto userDto) throws Exception {
ByteOutputStream os = new ByteOutputStream();
ITextRenderer renderer = new ITextRenderer();
Context ctx = new Context();
ctx.setVariable("userDto",userDto);
String processedHtml = templateEngine.process(templateName, ctx);
renderer.setDocumentFromString(processedHtml);
renderer.layout();
renderer.createPDF(os);
byte[] pdfAsBytes = os.getBytes();
os.close();
return new ByteArrayInputStream(pdfAsBytes);
}
Конфигурация TempletEngine на основе XML
<bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
<property name="dialects">
<set>
<bean class="org.thymeleaf.spring4.dialect.SpringStandardDialect" />
</set>
</property>
<property name="templateResolvers">
<set>
<bean
class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
<property name="prefix" value="/WEB-INF/views/user/" />
<property name="suffix" value=".html" />
<property name="templateMode" value="HTML5" />
<property name="characterEncoding" value="UTF-8" />
<property name="cacheable" value="false" />
</bean>
</set>
</property>
</bean>
<bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
<property name="templateEngine" ref="templateEngine"/>
<property name="characterEncoding" value="UTF-8" />
</bean>
Зависимость добавлена в pom.xml
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf</artifactId>
<version>9.0.9</version>
</dependency>
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf-itext5</artifactId>
<version>9.1.16</version>
</dependency>
Folder structure