# docgenerator **Repository Path**: anttribe/docgenerator ## Basic Information - **Project Name**: docgenerator - **Description**: 文档生成工具 模版 + 数据 = 输出 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-10-06 - **Last Updated**: 2026-04-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DocGenerator DocGenerator 是一个基于 FreeMarker 模板引擎的 Java 文档生成器框架,支持生成多种格式的文档。 ## 功能特性 - **多格式支持**: TXT、HTML、Markdown、Word、PDF、Java - **模板引擎**: 基于 FreeMarker - **灵活配置**: 支持模板配置、输出配置、命名策略 - **批量生成**: 支持批量生成文档 ## 项目结构 ``` docgenerator/ ├── src/main/java/com/anttribe/docgenerator/ │ ├── config/ # 配置类 │ ├── constants/ # 常量类 │ ├── engine/ # 模板引擎 │ ├── exception/ # 异常处理 │ ├── in/ # 输入数据模型 │ ├── out/ # 输出处理 │ │ └── handler/ # 输出文件处理器 │ └── utils/ # 工具类 │ └── naming/ # 命名策略 ├── src/main/resources/ │ └── fonts/ # PDF字体 └── src/test/ # 测试用例 ``` ## 快速开始 ### 引入依赖 ```xml com.anttribe docgenerator 1.0-SNAPSHOT ``` ### 使用 DocGeneratorHelper 快速生成 ```java // 准备数据模型 DataModel dataModel = new DataModel(); dataModel.addObject("title", "My Document"); dataModel.addObject("content", "Hello World"); // 生成文档 File outputFile = DocGeneratorHelper.generateDoc("templates/test.ftl", dataModel); // 指定输出类型 File outputFile = DocGeneratorHelper.generateDoc("templates/test.ftl", dataModel, SupportedOutputFileType.HTML); ``` ### 使用 DocGenerator 完整配置 ```java // 创建 DocGenerator DocGenerator docGenerator = new DocGenerator(Configuration.builder() .copyright(Copyright.builder().author("author").version("1.0").build()) .build()); // 准备数据模型 DataModel dataModel = new DataModel(); dataModel.addObject("title", "My Document"); // 配置模板 TemplateConfiguration templateConfig = TemplateConfiguration.builder() .templateFile("templates/test.ftl") .build(); // 配置输出 OutputConfiguration outputConfig = OutputConfiguration.builder() .outputDirectory("/output/path") .outputFileType(SupportedOutputFileType.HTML) .namingHandler(new DatetimeNamingHandler("yyyyMMddHHmmss")) .build(); // 生成文档 Output output = docGenerator.generate(templateConfig, dataModel, outputConfig); File resultFile = output.getOutputFile(); ``` ## 支持的输出文件类型 | 类型 | 后缀 | 说明 | |------|------|------| | TXT | .txt | 文本文件 | | HTML | .html | HTML文件 | | MAVEDOWN | .md | Markdown文件 | | WORD | .docx | Word文件 | | PDF | .pdf | PDF文件 | | JAVA | .java | Java源文件 | ## 命名策略 ### 单一命名策略 - `UuidNamingHandler` - UUID命名 - `DatetimeNamingHandler` - 时间戳命名 - `TimestampNamingHandler` - 毫秒时间戳 - `DesignatedNamingHandler` - 指定名称 ### 复杂命名策略 - `FilePathNamingHandler` - 文件路径命名 - `DateFilePathNamingHandler` - 日期路径+文件名 - `DatetimeComplexNamingHandler` - 日期时间复杂命名 ## 技术栈 - FreeMarker 2.3.34 - iTextPDF 5.5.13.5 - Lombok - Apache Commons - Guava ## 许可证 Apache License 2.0