# WithOrNotTemplate_exportPDF **Repository Path**: codingtodie/with-or-not-template_export-pdf ## Basic Information - **Project Name**: WithOrNotTemplate_exportPDF - **Description**: 有模板及无模板等多种情况将单据导出为pdf - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-10 - **Last Updated**: 2025-07-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java PDF 导出工具 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Java](https://img.shields.io/badge/Java-8%2B-blue)](https://www.oracle.com/java/) [![iText](https://img.shields.io/badge/iText-5.5.x-green)](https://github.com/itext/itextpdf) 一个基于 iText5 开发的 Java PDF 导出工具,支持多种场景(合同、报告、发票、凭证等),提供模板与无模板导出、动态表格和复杂布局功能。 ## 项目概述 本项目为企业级系统提供灵活的 PDF 导出组件,支持: - **基于模板**的字段替换导出 - **无模板**的动态内容生成 - **混合导出**(模板 + 动态表格) - 中文字体、分页、页眉页脚 - 图片嵌入和复杂表格渲染 - 可扩展的样式和布局 适用于生成合同、财务报表、可打印凭证等业务文档。 ## 技术栈 | 技术 | 用途 | |------------|--------------------------| | Java 8+ | 核心编程语言 | | iText5 | PDF 生成与处理核心库 | | Maven | 依赖管理与构建工具 | ## 项目结构 ``` pdf-export-utility/ ├── src/ │ ├── main/ │ │ └── java/ │ │ ├── export/ │ │ │ ├── TemplateExporter.java # 基于模板的 PDF 导出 │ │ │ ├── DynamicExporter.java # 无模板动态 PDF 导出 │ │ │ ├── HybridExporter.java # 模板与动态内容混合导出 │ │ │ └── PdfHelper.java # 工具方法(字体、样式等) │ ├── test/ │ │ └── java/ │ │ ├── TemplateExporterTest.java # 模板导出测试 │ │ ├── DynamicExporterTest.java # 无模板导出测试 │ │ └── HybridExporterTest.java # 混合导出测试 ├── templates/ │ └── contract_template.pdf # 示例 PDF 模板 ├── fonts/ │ └── simsun.ttf # 中文字体(宋体) ├── output/ │ └── *.pdf # 生成的 PDF 文件 ├── pom.xml └── README.md ``` ## 快速开始 ### 环境要求 - Java 8 或更高版本 - Maven 3.6+ - 中文字体支持(如 `simsun.ttf`) - 推荐 IDE:IntelliJ IDEA / Eclipse ### 克隆项目 ```bash git clone https://github.com/yourname/pdf-export-utility.git cd pdf-export-utility ``` ### 导入项目 使用 IDE 打开项目根目录,确保自动加载 `pom.xml` 中的依赖。 ### 运行示例 ```bash mvn test ``` 或在 IDE 中运行以下测试用例: - `TemplateExporterTest` - `DynamicExporterTest` - `HybridExporterTest` 生成的 PDF 文件将保存在 `output/` 目录中。 ## 示例代码 ### 1. 无模板导出(DynamicExporter) ```java DynamicExporter exporter = new DynamicExporter(); exporter.export("output/dynamic.pdf", Arrays.asList("第一行内容", "第二行内容")); ``` ### 2. 基于模板导出(TemplateExporter) ```java Map data = new HashMap<>(); data.put("companyName", "测试公司"); data.put("contractDate", "2025-07-10"); TemplateExporter exporter = new TemplateExporter("templates/contract_template.pdf"); exporter.export("output/template.pdf", data); ``` ### 3. 模板 + 表格混合导出(HybridExporter) ```java List> tableData = Arrays.asList( Arrays.asList("姓名", "部门", "工资"), Arrays.asList("张三", "技术部", "10000"), Arrays.asList("李四", "运营部", "9000") ); HybridExporter exporter = new HybridExporter("templates/contract_template.pdf"); exporter.export("output/hybrid.pdf", data, tableData); ``` ## 支持的常见场景 | 场景 | 是否支持 | 说明 | |----------------|----------|----------------------------| | 中文显示 | ✅ | 支持自定义字体(宋体、黑体等) | | 模板字段替换 | ✅ | 使用 AcroForm 模板 | | 无模板构建 | ✅ | 原生 iText 构建段落、表格等 | | 表格分页 | ✅ | 自动分页支持 | | 图片插入 | ✅ | 可嵌入 logo、印章等 | | 页眉页脚 | ✅ | 可扩展 PdfPageEventHelper | ## 后续扩展计划 - 集成 Word 转 PDF 功能 - 支持 PDF 合并与拆分 - 模板字段自动识别 - Web 接口导出与在线预览 ## 开源协议 本项目采用 [MIT License](https://opensource.org/licenses/MIT),可自由使用、修改和商用。 ---