x-easypdf v2.10.0 版本发布,新增fop模块
x-easypdf基于pdfbox/fop二次封装,拥有两大模块:pdfbox模块极大降低pdfbox的使用门槛,以组件化的形式进行pdf的构建;fop模块采用数据源的方式对xsl-fo模板进行转换。两个模块均可单独使用,也可以结合使用,帮助开发者快速生成pdf文档。
本次更新内容如下:
新特性:
- 新增单元格组件设置边框点线长度的方法(虚线边框设置)
- 新增单元格组件设置边框点线间隔的方法(虚线边框设置)
- 新增表格行组件设置边框点线长度的方法(虚线边框设置)
- 新增表格行组件设置边框点线间隔的方法(虚线边框设置)
- 新增表格组件设置边框点线长度的方法(虚线边框设置)
- 新增表格组件设置边框点线间隔的方法(虚线边框设置)
- 新增fop模块
- 新增pdf模板
- 新增pdf模板常数类
- 新增pdf模板助手
- 新增pdf模板数据源,支持自定义扩展数据源
- 新增pdf模板xml数据源
- 新增pdf模板thymeleaf数据源
- 新增pdf模板document数据源(开发中,已提供文本组件与图像组件)
- 新增pdf模板-文档
- 新增pdf模板-页面
- 新增pdf模板-文本组件
- 新增pdf模板-图像组件
原有变更:
- 调整文档签名器结构
- 移除pdf转换器
- 移除aspose依赖
- 默认添加全部依赖,无需再自行添加,如有无用依赖,可自行排除
- jdk最低版本由1.7调整为1.8
- 模块拆分:
- x-easypdf为全功能模块,包含pdfbox与fop相关功能
- x-easypdf-pdfbox为pdfbox模块,包含pdfbox相关功能
- x-easypdf-fop为fop模块,包含fop相关功能,主要为模板导出功能
问题修复:
无
fop模块用法演示:
- 使用步骤:
-
设置fop配置文件路径(如使用默认配置,则可跳过此步)
-
设置数据源,并设置xsl-fo模板路径(如使用document数据源,则可跳过此步)
-
执行转换
- 配置文件(默认配置):
<?xml version="1.0"?> <!-- NOTE: This is the version of the configuration --> <fop version="1.0"> <!-- Base URL for resolving relative URLs --> <base>.</base> <!-- Source resolution in dpi (dots/pixels per inch) for determining the size of pixels in SVG and bitmap images, default: 72dpi --> <source-resolution>72</source-resolution> <!-- Target resolution in dpi (dots/pixels per inch) for specifying the target resolution for generated bitmaps, default: 72dpi --> <target-resolution>72</target-resolution> <!-- Default page-height and page-width, in case value is specified as auto --> <default-page-settings width="21cm" height="29.7cm"/> <!-- Information for specific renderers --> <!-- Uses renderer mime type for renderers --> <renderers> <renderer mime="application/pdf"> <filterList> <!-- provides compression using zlib flate (default is on) --> <value>flate</value> </filterList> <fonts> <!-- auto-detect fonts --> <auto-detect/> </fonts> </renderer> </renderers> </fop>
- xml(xslt)数据源演示:
- 使用模板:
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xslt="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <!--模板--> <xsl:template match="root"> <!--根标签--> <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"> <!--块--> <fo:block text-align="center"> <!--文本内容--> <xsl:apply-templates select="data"/> </fo:block> </fo:flow> </fo:page-sequence> </fo:root> </xsl:template> </xsl:stylesheet>
- xml数据:
<?xml version="1.0" encoding="utf-8"?> <root> <data>hello world</data> </root>
- 示例代码:
// 定义fop配置文件路径 String configPath = "H:\\\\pdf\\\\template\\\\fop.xconf"; // 定义xsl-fo模板路径 String templatePath = "H:\\\\pdf\\\\template\\\\xml\\\\template.fo"; // 定义xml数据路径 String xmlPath = "H:\\\\pdf\\\\template\\\\xml\\\\data.xml"; // 定义pdf输出路径 String outputPath = "E:\\\\pdf\\\\test\\\\fo\\\\xml.pdf"; // 转换pdf XEasyPdfTemplateHandler.Template.build().setConfigPath(configPath).setDataSource( XEasyPdfTemplateHandler.DataSource.XML.build().setTemplatePath(templatePath).setXmlPath(xmlPath) ).transform(outputPath);
- thymeleaf数据源演示:
- 使用模板:
<?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"> <!--块--> <fo:block text-align="center" th:text="${data}"/> </fo:flow> </fo:page-sequence> </fo:root>
- 示例代码:
// 定义fop配置文件路径 String configPath = "H:\\\\pdf\\\\template\\\\fop.xconf"; // 定义xsl-fo模板路径 String templatePath = "H:\\\\pdf\\\\template\\\\thymeleaf\\\\template.fo"; // 定义pdf输出路径 String outputPath = "E:\\\\pdf\\\\test\\\\fo\\\\thymeleaf.pdf"; // 定义数据map Map<String, Object> data = new HashMap<>(); // 设置值 data.put("data", "hello world"); // 转换pdf XEasyPdfTemplateHandler.Template.build().setConfigPath(configPath).setDataSource( XEasyPdfTemplateHandler.DataSource.Thymeleaf.build().setTemplatePath(templatePath).setTemplateData(data) ).transform(outputPath);
- document数据源演示:
- 内置模板:
<?xml version="1.0" encoding="utf-8"?> <!--根标签--> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <!--页面模板--> <fo:layout-master-set></fo:layout-master-set> </fo:root>
- 示例代码:
// 定义pdf输出路径 String outputPath = "E:\\\\pdf\\\\test\\\\fo\\\\document.pdf"; // 转换pdf XEasyPdfTemplateHandler.Document.build().addPage( XEasyPdfTemplateHandler.Page.build().addBodyComponent( XEasyPdfTemplateHandler.Text.build().setText("hello world").setHorizontalStyle(XEasyPdfTemplatePositionStyle.HORIZONTAL_CENTER) ) ).transform(outputPath);
- 以上示例生成效果:
为往圣继绝学,一个人或许能走的更快,但一群人会走的更远。
还没有评论,来说两句吧...