x-easypdf v2.10.0 版本发布,新增 fop 模块

来源: 投稿
2022-08-15 08:04:00

x-easypdf v2.10.0 版本发布,新增fop模块

logo

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模块用法演示:

  • 使用步骤:
  1. 设置fop配置文件路径(如使用默认配置,则可跳过此步)

  2. 设置数据源,并设置xsl-fo模板路径(如使用document数据源,则可跳过此步)

  3. 执行转换

  • 配置文件(默认配置):
<?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)数据源演示:
  1. 使用模板:
<?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>
  1. xml数据:
<?xml version="1.0" encoding="utf-8"?>
<root>
    <data>hello world</data>
</root>
  1. 示例代码:
// 定义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数据源演示:
  1. 使用模板:
<?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>
  1. 示例代码:
// 定义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数据源演示:
  1. 内置模板:
<?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>
  1. 示例代码:
// 定义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);
  • 以上示例生成效果:

dromara

为往圣继绝学,一个人或许能走的更快,但一群人会走的更远。

展开阅读全文
0 收藏
分享
0 评论
0 收藏
分享
返回顶部
顶部