模板引擎
大约 5 分钟pdfbox模块高级功能模板引擎
提示
基于 Html转换器 实现
说明
- 支持获取 html 内容
- 支持 html 模板转换 pdf
- 支持绝对路径与资源路径模板文件
- 支持 Freemarker 、 Thymeleaf 、 Velocity 、 Jte 、 Beetl 、 Enjoy 等模板引擎
依赖
<dependency>
<groupId>com.microsoft.playwright</groupId>
<artifactId>playwright</artifactId>
<version>1.53.0</version>
</dependency>
示例
Freemarker
说明
关于模板语法可到 官方文档 查询
- 添加依赖
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.34</version>
</dependency>
- 准备模板
<html lang="zh">
<body>
<h1>${title}</h1>
</body>
</html>
- 获取 html 内容
// 定义数据字典
Map<String, Object> data = new HashMap<>();
// 添加数据
data.put("title", "Hello World");
// 获取模板引擎
FreemarkerTemplater templater = PdfHandler.getDocumentTemplater().getFreemarkerTemplater();
// 设置模板目录
templater.setTemplatePath("template/freemarker");
// 设置模板名称
templater.setTemplateName("template.html");
// 设置模板数据
templater.setTemplateData(data);
// 获取 html 内容
String content = templater.getHtmlContent();
// 输出 html 内容
System.out.println(content);
- 转换 pdf
// 定义数据字典
Map<String, Object> data = new HashMap<>();
// 添加数据
data.put("title", "Hello World");
// 获取模板引擎
FreemarkerTemplater templater = PdfHandler.getDocumentTemplater().getFreemarkerTemplater();
// 设置模板目录
templater.setTemplatePath("template/freemarker");
// 设置模板名称
templater.setTemplateName("template.html");
// 设置模板数据
templater.setTemplateData(data);
// 转换文档
Document document = templater.transform();
// 保存并关闭
document.saveAndClose("E:\\PDF\\pdfbox\\template\\freemarker.pdf");
Thymeleaf
说明
关于模板语法可到 官方文档 查询
- 添加依赖
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.1.3.RELEASE</version>
</dependency>
- 准备模板
<html lang="zh">
<body>
<h1 th:text="${title}"></h1>
</body>
</html>
- 获取 html 内容
// 定义数据字典
Map<String, Object> data = new HashMap<>();
// 添加数据
data.put("title", "Hello World");
// 获取模板引擎
ThymeleafTemplater templater = PdfHandler.getDocumentTemplater().getThymeleafTemplater();
// 设置模板目录
templater.setTemplatePath("template/thymeleaf");
// 设置模板名称
templater.setTemplateName("template.html");
// 设置模板数据
templater.setTemplateData(data);
// 获取 html 内容
String content = templater.getHtmlContent();
// 输出 html 内容
System.out.println(content);
- 转换 pdf
// 定义数据字典
Map<String, Object> data = new HashMap<>();
// 添加数据
data.put("title", "Hello World");
// 获取模板引擎
ThymeleafTemplater templater = PdfHandler.getDocumentTemplater().getThymeleafTemplater();
// 设置模板目录
templater.setTemplatePath("template/thymeleaf");
// 设置模板名称
templater.setTemplateName("template.html");
// 设置模板数据
templater.setTemplateData(data);
// 转换文档
Document document = templater.transform();
// 保存并关闭
document.saveAndClose("E:\\PDF\\pdfbox\\template\\thymeleaf.pdf");
Velocity
说明
关于模板语法可到 官方文档 查询
- 添加依赖
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.4.1</version>
</dependency>
- 准备模板
<html lang="zh">
<body>
<h1>${title}</h1>
</body>
</html>
- 获取 html 内容
// 定义数据字典
Map<String, Object> data = new HashMap<>();
// 添加数据
data.put("title", "Hello World");
// 获取模板引擎
VelocityTemplater templater = PdfHandler.getDocumentTemplater().getVelocityTemplater();
// 设置模板目录
templater.setTemplatePath("template/velocity");
// 设置模板名称
templater.setTemplateName("template.html");
// 设置模板数据
templater.setTemplateData(data);
// 获取 html 内容
String content = templater.getHtmlContent();
// 输出 html 内容
System.out.println(content);
- 转换 pdf
// 定义数据字典
Map<String, Object> data = new HashMap<>();
// 添加数据
data.put("title", "Hello World");
// 获取模板引擎
VelocityTemplater templater = PdfHandler.getDocumentTemplater().getVelocityTemplater();
// 设置模板目录
templater.setTemplatePath("template/velocity");
// 设置模板名称
templater.setTemplateName("template.html");
// 设置模板数据
templater.setTemplateData(data);
// 转换文档
Document document = templater.transform();
// 保存并关闭
document.saveAndClose("E:\\PDF\\pdfbox\\template\\velocity.pdf");
Jte
说明
关于模板语法可到 官方文档 查询
- 添加依赖
<dependency>
<groupId>gg.jte</groupId>
<artifactId>jte</artifactId>
<version>2.3.2</version>
</dependency>
- 准备模板
@param String title
<html lang="zh">
<body>
<h1>${title}</h1>
</body>
</html>
- 获取 html 内容
// 定义数据字典
Map<String, Object> data = new HashMap<>();
// 添加数据
data.put("title", "Hello World");
// 获取模板引擎
JteTemplater templater = PdfHandler.getDocumentTemplater().getJteTemplater();
// 设置模板目录
templater.setTemplatePath("template/jte");
// 设置模板名称
templater.setTemplateName("template.html");
// 设置模板数据
templater.setTemplateData(data);
// 获取 html 内容
String content = templater.getHtmlContent();
// 输出 html 内容
System.out.println(content);
- 转换 pdf
// 定义数据字典
Map<String, Object> data = new HashMap<>();
// 添加数据
data.put("title", "Hello World");
// 获取模板引擎
JteTemplater templater = PdfHandler.getDocumentTemplater().getJteTemplater();
// 设置模板目录
templater.setTemplatePath("template/jte");
// 设置模板名称
templater.setTemplateName("template.html");
// 设置模板数据
templater.setTemplateData(data);
// 转换文档
Document document = templater.transform();
// 保存并关闭
document.saveAndClose("E:\\PDF\\pdfbox\\template\\jte.pdf");
Beetl
说明
关于模板语法可到 官方文档 查询
- 添加依赖
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl</artifactId>
<version>3.19.2.RELEASE</version>
</dependency>
- 准备模板
<html lang="zh">
<body>
<h1>${title}</h1>
</body>
</html>
- 获取 html 内容
// 定义数据字典
Map<String, Object> data = new HashMap<>();
// 添加数据
data.put("title", "Hello World");
// 获取模板引擎
BeetlTemplater templater = PdfHandler.getDocumentTemplater().getBeetlTemplater();
// 设置模板目录
templater.setTemplatePath("template/beetl");
// 设置模板名称
templater.setTemplateName("template.html");
// 设置模板数据
templater.setTemplateData(data);
// 获取 html 内容
String content = templater.getHtmlContent();
// 输出 html 内容
System.out.println(content);
- 转换 pdf
// 定义数据字典
Map<String, Object> data = new HashMap<>();
// 添加数据
data.put("title", "Hello World");
// 获取模板引擎
BeetlTemplater templater = PdfHandler.getDocumentTemplater().getBeetlTemplater();
// 设置模板目录
templater.setTemplatePath("template/beetl");
// 设置模板名称
templater.setTemplateName("template.html");
// 设置模板数据
templater.setTemplateData(data);
// 转换文档
Document document = templater.transform();
// 保存并关闭
document.saveAndClose("E:\\PDF\\pdfbox\\template\\beetl.pdf");
Enjoy
说明
关于模板语法可到 官方文档 查询
- 添加依赖
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>enjoy</artifactId>
<version>5.2.5</version>
</dependency>
- 准备模板
<html lang="zh">
<body>
<h1>#(title)</h1>
</body>
</html>
- 获取 html 内容
// 定义数据字典
Map<String, Object> data = new HashMap<>();
// 添加数据
data.put("title", "Hello World");
// 获取模板引擎
EnjoyTemplater templater = PdfHandler.getDocumentTemplater().getEnjoyTemplater();
// 设置模板目录
templater.setTemplatePath("template/enjoy");
// 设置模板名称
templater.setTemplateName("template.html");
// 设置模板数据
templater.setTemplateData(data);
// 获取 html 内容
String content = templater.getHtmlContent();
// 输出 html 内容
System.out.println(content);
- 转换 pdf
// 定义数据字典
Map<String, Object> data = new HashMap<>();
// 添加数据
data.put("title", "Hello World");
// 获取模板引擎
EnjoyTemplater templater = PdfHandler.getDocumentTemplater().getEnjoyTemplater();
// 设置模板目录
templater.setTemplatePath("template/enjoy");
// 设置模板名称
templater.setTemplateName("template.html");
// 设置模板数据
templater.setTemplateData(data);
// 转换文档
Document document = templater.transform();
// 保存并关闭
document.saveAndClose("E:\\PDF\\pdfbox\\template\\enjoy.pdf");