# easy-pdf **Repository Path**: yyn_0210/easy-pdf ## Basic Information - **Project Name**: easy-pdf - **Description**: 一个基于itext使用xml作为模板生成pdf的工具 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 3 - **Created**: 2021-06-04 - **Last Updated**: 2024-07-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 根据xml配置将文本转换为PDF 给定一个 XML 模板文件,然后通过 Json 提供模板数据,整合后生成 PDF 文档。 这个项目可以用于需要动态生成 PDF 的场景,例如试卷、合同,等等。 ## XML 模板 模板提供文档的固定内容,然后留出数据混入的标记,下面是一个简单的例子: ```xml 这是固定内容,继续固定内容。 ``` 上面``部分会从 JSON 数据源中通过 `json_key` 获取数据填入其中,其它部分为固定内容。 TextPDF 的 XML 模板侧重于描述排版效果,例如'字体大小','粗体','斜体','段落缩进','段前段后空间',等等。以便能生成满意的 PDF 文档。模板中唯一动态的内容是``标签,其会被 JSON 中的同名 key 值替换掉,下面是一个更加丰富的模板示例: ```xml 这是一段标题,它的默认格式和普通段落不一样,字体要大一些,并且居中显示 可以直接指定标题的字体大小来改变默认值
这是一个比标题略小,左对齐的段落
普通段落 这个段落定义了许多格式 可以通过span元素来嵌套文字风格,这样可以在一个段落中出现多种风格。
``` TextPDF 的模板只支持简单的排版格式([查看模板说明](./doc/Template.md))。 ## JSON 数据 模板的数据源以 JSON 格式提供,格式非常简单,所有模板数据放在`data`对象中,其它不限,例如: ```json { "data" : { "key1": "value1", "key2": "value2" }, "your" : "Some", "meta" : "Other" } ``` ### JSON 数据源 通常的情况是用户根据 XML 模板来录入那些需要填充的字段,并保存到数据库或文件中,后续再通过程序来合成 PDF。 ## HTML 编辑 在实际应用中,用户需要从某个地方输入 XML 模板中的录入域(``),为此,TextPDF 可以将 XML 模板转换为 HTML 文件,所有的``标签会转换为 HTML 的输入框,用户只能录入这些输入框的数据。 ## 用法 ### 程序调用 ```java import com.janeluo.easypdf.TextPDF; try { File xmlfile = new File("path/to/xmlfile"); File jsonfile = new File("path/to/jsonfile"); File pdffile = new File("path/to/pdffile"); TextPDF.gen(xmlfile, jsonfile, file.pdf); } catch (Exception ex) { ex.printStackTrace(); } ``` 除了能够生成 PDF 文档外,easy-pdf 也可以生成 HTML 文件(用于编辑),以及将 .doc 文件转换为 XML 模板,使用方法请参考 [API 说明](./doc/API.md)。 代码fork自 [https://gitee.com/lucky-byte/textpdf](https://gitee.com/lucky-byte/textpdf) ,在此基础上升级到itext7