Aurora中的word导出采用开源的组件docx4j来实现
(1)更新到最新的aurora.jar和aurora-plugin.jar
(2)更新docx4j相关的jar包
(3)修改uncertain.xml 增加一行
<package-path classPath="aurora_plugin_package/aurora.plugin.export.word"/>
(4)WEB-INF下面新增一个目录aurora.plugin.export.word,创建配置文件word-provider.config
<?xml version="1.0" ?>
<WordTemplateProvider xmlns="aurora.plugin.export.word" defaultEncoding="UTF-8" />
目录aurora.plugin.export.word是存放以后导出word的模板,以及内嵌的图片
模板的结构的大致如下
<doc watermark="水印">
<header>
<p align="right">
<t>项目编号:PRJ0012001</t>
</p>
</header/>
<footer/>
<body>
<toc/>
<p indLeft="0" indFirstLine="100" toc="true" align="center" ilvl="0">
<t bold="true" font="宋体" fontSize="36" fontColor="ff0000" underline="single">粗体</t>
<t bold="true" font="宋体" fontSize="36" fontColor="ff0000" underline="single" italic="true">其他格式</t>
<img src="xxx.png"/>
</p>
<p/>
<br/>
<tbl indLeft="1" border="false">
<tr>
<tc width="1.44">
<border type="bottom" color="000000" style="single"/>
<p align="left">
<t>序号</t>
</p>
</tc>
<tc width="3.95">
<p align="left">
<t>项目</t>
</p>
</tc>
<tc width="9.06">
<p align="left">
<t></t>
</p>
</tc>
</tr>
<tr>
<tc width="1.44">
<p align="center">
<t>1</t>
</p>
</tc>
<tc width="3.95">
<p align="left">
<t>出租人</t>
</p>
</tc>
<tc width="9.06">
<p align="left">
<t></t>
</p>
</tc>
</tr>
</tbl>
</body>
</doc>
目录aurora.plugin.export.word是存放以后导出word的模板,以及内嵌的图片
p代表一个文字段落,可以内嵌多个t标签,主要用来文字布局
表 1.
属性名
|
用途
|
---|
indLeft
|
左缩进(单位厘米)
|
indFirstLine:
|
首行缩进(单位厘米)
|
align
|
布局方式
|
numId
|
层级ID 从1开始
|
ilvl
|
层次级别
|
line
|
行高(默认400)
|
orientation
|
是否横向(portrait,landscape)
|
toc
|
是否生成目录
|
T标签是文字的主要载体,可以定义颜色,字体类型,格式等属性
表 2.
属性名
|
用途
|
---|
bold
|
粗体(默认false)
|
fontFamily
|
字体格式(默认宋体)
|
fontSize
|
字体大小(默认24即'小四')
|
fontColor
|
字体颜色(默认 000000)
|
underline
|
下划线
|
italic
|
斜体(默认false)
|
space
|
是否保留格式(preserve)
|
word-export标签定义了采用哪个模板,以及导出文件的名字。
<a:init-procedure>
<a:model-query model="demo.word_company" rootPath="company"/>
....
<w:word-export template="aurora.plugin.export.word/word3.xml" name="word3.docx">
<w:replaces>
<w:replace name="company" path="/model/company/record/@company"/>
<w:replace name="proj_code" path="/model/company/record/@proj_code"/>
<w:replace name="sdt" path="/model/company/record/@sdt"/>
<w:replace name="pro" path="/model/company/record"/>
</w:replaces>
</w:word-export>
</a:init-procedure>
replaces定义了模板中需要用到的变量名,具体取值是通过path属性来获取上面model-query中查询出来的数据
具体到模板中:
<doc>
<body>
<p align="center">
<t bold="true" fontSize="20" >公司:${company}</t>
</p>
<p align="center">
<t bold="true" fontSize="20">项目编号:${proj_code}</t>
</p>
<p/>
<p align="center">
<t bold="true" fontSize="20">日期:${sdt}</t>
</p>
<p align="center">
<t bold="true" fontSize="20">项目经理:${pro.pm}</t>
</p>
</body>
</doc>
很多情况下我们需要定义多个层次的目录结构,这个是通过p标签上的属性来实现的.
<p numId="1" ilvl="0" toc="true">
<t bold="true">定义和解释</t>
</p>
<p numId="1" ilvl="1">
<t>本合同所引用术语的定义和解释如下,如合同中无特别约定或合同双方未另行书面约定,本合同中出现的如下术语均按本条作特定解释:</t>
</p>
<p numId="1" ilvl="2">
<t>附表列明租赁物件明细、租金、租金支付日及其他适用于该附表列明租赁物件之租赁交易的特定条款。每一附表经由双方签署构成双方之间就该附表列明的租赁物件的一项租赁交易。</t>
</p>
<p numId="1" ilvl="3">
<t>这份报告是由解放军智库——军事科学院国防政策研究中心组织不同领域专家学者撰写的,这是解放军智库第二次发布中英文版的战略评估报告。</t>
</p>
<p numId="1" ilvl="0" toc="true">
<t bold="true">时间重要性</t>
</p>
<p numId="1" ilvl="1">
<t>就本合同及其项下任何租赁交易而言,时间和严格按时履行对双方而言均极为重要。</t>
</p>
numId属性定义了一组目录结构的id,通常一组目录节点定义为同一个numId. ilvl属性定义了目录的层次,第一次是0,第二层是1,以此类推。相同层次的目录ilvl值相同
toc属性主要用来生成目录,如果当前节点需要生成目录就定义成true。 一般在模板中的前部定义目录的生成位置,插入<toc></toc>框架会自动替换成对应的目录
Comments
1 Responses to the article