1 Star 0 Fork 88

大砍刀 / textpdf

forked from xh / textpdf
暂停
 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

转换文本文件为PDF

给定一个 XML 模板文件,然后通过 Json 提供模板数据,整合后生成 PDF 文档。

这个项目可以用于需要动态生成 PDF 的场景,例如试卷、合同,等等。

XML 模板

模板提供文档的固定内容,然后留出数据混入的标记,下面是一个简单的例子:

<textpdf>
  <para>这是固定内容,<value id="json_key" />继续固定内容。</para>
</textpdf>

上面<value id="json_key" />部分会从 JSON 数据源中通过 json_key 获取数据填入其中,其它部分为固定内容。

TextPDF 的 XML 模板侧重于描述排版效果,例如'字体大小','粗体','斜体','段落缩进','段前段后空间',等等。以便能生成满意的 PDF 文档。模板中唯一动态的内容是<value id="some">标签,其会被 JSON 中的同名 key 值替换掉,下面是一个更加丰富的模板示例:

<!-- 模板根标签必须是 textpdf -->
<textpdf>
    <title>这是一段标题,它的默认格式和普通段落不一样,字体要大一些,并且居中显示</title>
    <title font-size="12">可以直接指定标题的字体大小来改变默认值</title>
    <section>这是一个比标题略小,左对齐的段落</section>
    <para>普通段落</para>
    <para font-family="heiti" font-size="11" font-style="bold,underline,italic"
          align="right" indent="22" space-before="12" space-after="20">这个段落定义了许多格式</para>
    <para>可以通过<span font-style="bold">span元素来嵌套文字风格,</span>这样可以在一个段落中出现多种风格。</para>
</textpdf>

TextPDF 的模板只支持简单的排版格式(查看模板说明)。

转换 .doc 文件

TextPDF 可以将.doc文件转换成 TextPDF 的 XML 模板文件,对于.doc中的___________会自动转换为 XML 模板的 <value>标签,这样后续再通过整合 JSON 数据来合成最终的 PDF 文件。

JSON 数据

模板的数据源以 JSON 格式提供,格式非常简单,所有模板数据放在data对象中,其它不限,例如:

{
    "data" : {
        "key1": "value1",
        "key2": "value2"
    },

    "your" : "Some",
    "meta" : "Other"
}

JSON 数据源

通常的情况是用户根据 XML 模板来录入那些需要填充的字段,并保存到数据库或文件中,后续再通过程序来合成 PDF。

HTML 编辑

在实际应用中,用户需要从某个地方输入 XML 模板中的录入域(<value>),为此,TextPDF 可以将 XML 模板转换为 HTML 文件,所有的<value>标签会转换为 HTML 的输入框,用户只能录入这些输入框的数据。

用法

命令行用法

java -jar textpdf.jar [OPTION] <xmlfile|docfile> [jsonfile]

Options:
  -o filename:  Output pdf file name

xmlfile|docfile 作为文档模板输入源,jsonfile 为数据输入源,默认的 PDF 输出文件名称和 xmlfile 同名,后缀为 .pdf,可以通过 -o选项改变输出文件名称。

版本 0.2 开始,可以直接将 .doc 文件转换为 PDF 文件,这只不过是先将 .doc 转换为 XML 模板,然后再通过模板转换为 PDF。这只是为了方便,TextPDF 的目标不是将 .doc 转换为 PDF,这方面使用 LibreOffice 或者其它工具可以得到更加专业的效果。

程序调用


import com.lucky_byte.pdf.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();
}
The MIT License (MIT) Copyright (c) 2015 Lucky Byte, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

XML 模板加 JSON 数据生成 PDF 文档 展开 收起
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/gstripe/textpdf.git
git@gitee.com:gstripe/textpdf.git
gstripe
textpdf
textpdf
master

搜索帮助

14c37bed 8189591 565d56ea 8189591