快速入门
大约 2 分钟快速入门
添加依赖
提示
在 pom.xml 文件中加入以下一种依赖,最新版本请点此查看
全功能模块依赖
<dependency>
<groupId>org.dromara.x-easypdf</groupId>
<artifactId>x-easypdf</artifactId>
<version>版本号</version>
</dependency>
单模块依赖
<dependency>
<groupId>org.dromara.x-easypdf</groupId>
<artifactId>x-easypdf-fop</artifactId>
<version>版本号</version>
</dependency>
使用步骤
说明
以 freemarker 数据源为例
1. 添加数据源依赖
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>版本号</version>
</dependency>
提示
依赖版本请查看模块介绍
2. 创建模板对象
Template template = TemplateHandler.Template.build();
3. 设置 fop 配置文件路径
template.setConfigPath(configPath);
4. 设置数据源,并设置 xsl-fo 模板路径与模板数据
template.setDataSource(
TemplateHandler.DataSource.Freemarker.build()
.setTemplateName("template.fo")
.setTemplateData(data)
);
5. 执行转换
template.transform(outputPath);
完整示例
说明
以 freemarker 数据源为例
// 定义fop配置文件路径
String configPath = "E:\\pdf\\template\\fop.xconf";
// 定义xsl-fo模板路径(目录)
String templatePath = "E:\\pdf\\template\\freemarker";
// 定义pdf输出路径
String outputPath = "E:\\pdf\\test\\fo\\Freemarker.pdf";
// 设置模板路径
TemplateHandler.DataSource.Freemarker.setTemplatePath(templatePath);
// 定义数据map
Map<String, Object> data = new HashMap<>();
// 定义数据list
List<String> list = new ArrayList<>(2);
list.add("hello");
list.add("world");
// 设置值
data.put("list", list);
data.put("str", "hello world");
// 转换pdf
TemplateHandler.Template.build().setConfigPath(configPath).setDataSource(
// 构建数据源
TemplateHandler.DataSource.Freemarker.build()
// 设置模板名称(模板路径下的文件名称)
.setTemplateName("template.fo")
// 设置模板数据
.setTemplateData(data)
).transform(outputPath);
fop 配置文件
<?xml version="1.0"?>
<!-- fop版本 -->
<fop version="1.0">
<!-- 当前路径(项目所在路径) -->
<base>.</base>
<!-- 默认源图像 dpi(每英寸点数像素) -->
<source-resolution>72</source-resolution>
<!-- 默认目标图像 dpi(每英寸点数像素),默认: 72dpi -->
<target-resolution>72</target-resolution>
<!-- 默认页面宽度与高度(A4) -->
<default-page-settings width="21cm" height="29.7cm"/>
<!-- 渲染器 -->
<renderers>
<!-- pdf 渲染器 -->
<renderer mime="application/pdf">
<!-- 过滤器 -->
<filterList>
<!-- 默认使用 flate 依赖压缩 -->
<value>flate</value>
</filterList>
<!-- 字体 -->
<fonts>
<!-- 自动扫描系统全部字体 -->
<auto-detect/>
</fonts>
</renderer>
</renderers>
</fop>
xsl-fo 模板
<?xml version="1.0" encoding="utf-8"?>
<!--根标签-->
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<!--页面模板-->
<fo:layout-master-set>
<!--单页面模板-->
<fo:simple-page-master master-name="A4">
<!--页面区域主体-->
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<!--页面序列-->
<fo:page-sequence master-reference="A4">
<!--页面流-->
<fo:flow flow-name="xsl-region-body">
<#list list as data>
<fo:block>${data}</fo:block>
</#list>
<#if str??>
<fo:block>${str}</fo:block>
<#else>
<fo:block font-family="微软雅黑">为空</fo:block>
</#if>
</fo:flow>
</fo:page-sequence>
</fo:root>
提示
使用中文时,需设置支持中文的字体名称