学习GroupDocs.Assembly的Word模板实践

GroupDocs
placeholder image
admin 发布于:2025-02-25 10:09:11
阅读:loading

前面在摸索了Aspose For Java的全量产品组件共计23款,闲来无事偶然又发现了在GroupDocs方向又存在一些产品,这些产品基本都是取自于一个又一个的组件,取自所有组件中的一个方向进行汇总,组成一个统一的产品包。本次摸索学习GroupDocs.Assembly产品,经过一些持续的分析和摸索,结合使用反射的形式来调用,也就是说在API的使用前进行一次特殊的代码注册,即可实现授权,全程不需要License之类的xml,或是文档无水印、或是文档页数限制、或是获取内容无限制,等等。

特别说明:只为单纯的学习摸索与自我突破,商业软件请勿直接使用于生产环境(购买商业授权)

1.基本介绍

本次实践的是GroupDocs.Assembly for Java的24.9.1版本(当前最新版本),它是用于自动化文档和报告的 Java API;构建文档自动化应用程序以获取数据;将其放入可定制的模板并通过 Java API 生成动态报告。通俗的可以理解为这个产品提供了一套自定义的表达式(模板)语言,用于动态的生成Word、Excel、PPT、Outlook等相关格式的报表文件。除了微软办公格式文件以为也支持OpenOffice、Email、Web、Markdown、TXT等相关软件产品的文件格式。

我们还可以把 GroupDocs.Assembly for Java 简单理解成FreeMarker这种模板引擎,只不过它支持的模板类型的文件格式比较丰富,直接在源文件中声明表达式。内置的表达式语言支持参数输出、逻辑判断、数据循环、三目运算符、单元格合并等等,本次示例实践知识主要是以Word类型格式为主,从官网“https://github.com/groupdocs-assembly/GroupDocs.Assembly-for-Java/tree/master”提供的例子中摘取了一些典型案例实践,涉及到的知识点细节参考如下:

(1)示例使用了Word的两种最常见格式的模板文件,分别是docx和doc两种

(2)示例使用的模板文件内容页有9页(超过4页),实践的科学方式分为两种,一种是使用反射进行特殊逻辑的执行,另一种则是使用统一的License进行授权,结果是无水印,无其它限制

(3)示例包含了比较多的知识点细节,比如:图表生成、条形码图片生成、变量定义与输出、超链接、foreach循环、循环嵌套、表格嵌套、三目运算符、条件判断if-else、图片输出、表格输出、数据分组、数据筛选、数据汇总、背景色;

2.参考代码

以官网提供的Github示例为准,分别从其中挑出几个简单的示例来演示,涵盖了一定特色的功能范围。

演示Word的docx和doc两种不同类型的文档模板引擎,参考示例代码如下:

public class HelloWord {

    public static void main(String[] args) throws Throwable {
        word("");
        word("x");
    }

    public static void word(String temp) throws Throwable {
        String srcDocument = "/Word Templates/hello.doc" + temp;
        String docReport = "/Word Reports/hello_report.doc" + temp;
        try {
            DocumentAssembler assembler = new DocumentAssembler();
            assembler.assembleDocument(CommonUtilities.getDataPath(srcDocument),
                    CommonUtilities.getOutPath(docReport),new DataSourceInfo( new DataStorage(), null),
                    new DataSourceInfo("https://www.groupdocs.com/","uriExpression"),
                    new DataSourceInfo("GroupDocs","displayTextExpression"),
                    new DataSourceInfo( DataStorage.excelData(), "contracts")
            );
        } catch (Exception exp) {
            System.out.println("Exception: " + exp.getMessage());
        }
    }
}

3.模板参考

挑选出来几个略微有特色的模板,给出截图,具体参考如下:

image

(变量声明与引用)

image

(图表模板)

image

(数据循环-含图片)

image

(循环嵌套-含数据汇总)

image

(循环分组-排序)

image

(循环条件判断-样式)


4.示例输出

演示相关模板对应的文件输出,同样只给出部分的模板示例输出结果,详细参考如下:

image

(变量声明与引用)

image

(图表输出)

image

(数据循环-含图片)

image.png

(循环嵌套-含数据汇总)

image.png

(循环条件判断-样式)

5.其它说明

(1)`GroupDocx.xxx`不是开源免费的使用,Github上有示例项目,包含了大量的示例,示例的结果就是生成了一些《Evaluation Warning》警告、水印、内容页数限制、内容文本限制等;

(2)aspose旗下有许多的产品,都是商业付费版本,常见于各种文档格式文件的操作,都需要商业授权使用,也基本都是支持多种编程语言的,如有Java、C++、.NET等等,官网也有多种在线示例;

(3)示例与相关文件下载:《Word格式docx与doc.zip》,注:下载并不包含具体的科学实现部分,只是源文件与示例输出文件;

(4)科学实现分为两种情况,一种是使用反射,另一种是使用License.xml文件;

(5)aspose相关的各个产品组件为独立存在的各个产品,GroupDocs是提取全集产品中的某个功能的集合,提供了一个大类的功能操作,并且统一对外提供API;



 点赞


 发表评论

当前回复:作者

 评论列表


留言区