I am using Thymeleaf version 3.1.2.RELEASE and flying-saucer-pdf version 9.3.1 to generate PDF from a JavaFX application. I have the following template.html:
<html xmlns:th="http://www.thymeleaf.org" lang="ar" dir="rtl">
<body>
<h3 style="text-align: center; color: black">
<span th:text="${title}"></span>
</h3>
</body>
</html>
Method to parse Thymeleaf template:
private String parseThymeleafTemplate() {
ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode(TemplateMode.HTML);
TemplateEngine templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
Context context = new Context();
context.setVariable("title", "عنوان");
return templateEngine.process("template", context);
}
Method to generate PDF from HTML:
public void onPrintPdfButtonClick() throws DocumentException, IOException {
String outputFolder = ".../template.pdf";
OutputStream outputStream = new FileOutputStream(outputFolder);
ITextRenderer renderer = new ITextRenderer();
ITextFontResolver resolver = renderer.getFontResolver();
resolver.addFont("src/main/resources/Al Nile.ttc", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
renderer.setDocumentFromString(parseThymeleafTemplate());
renderer.layout();
renderer.createPDF(outputStream);
outputStream.close();
}
For some reason, the generated PDF file has no content at all! I have set all the file encodings to UTF-8. I am also adding Arabic font to resolver. Nothing works so far. Anyone faced this issued before? I am really interested in understanding the issue, so we can solve it together.