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.