0

我必须生成一些文档文件,为此我们将使用预览版中的模板。在我的第一个测试中,我使用一个简单的 java 项目基于模板生成一个新文件。

似乎旧版本是基于 freemarker 的,但我找不到如何将它与 RTF 文件一起使用的信息。即使模板文件具有 doc 扩展名,它也是一个 RTF 文件。

第一步导入模板就ok了:

2013-09-09 20:21:43 调试缓存:83 - 从“C:\templates\TEMAPLTE.DOC”编译 FreeMarker 模板“TEMPLATE.DOC”[“pt_BR”,Cp1252,解析]

它检查数据上是否存在与某个条件相关的某些变量,例如:

data.put("IS_MANDATORY", true); 它根据它的值显示或隐藏

但是应该更改/更新的普通字段仍然显示为它们的变量:

$[姓名]$

我试图将其更改为:

${name} 但它没有用。

我不确定我错过了什么,知道吗?

谢谢并恭祝安康,

埃迪杜

4

1 回答 1

0

如果您进入${name}富编辑器(如 Word 或写字板),由于{}是 RTF 中的保留字符,它会$\{name\}在保存的文件中变为 to。(用记事本打开它来查看。)要解决这个问题,您将不得不使用一个自定义TemplateLoader实现(通过Configuration.setTemplateLoader),该实现将另一个TemplateLoader包装Reader到一个过滤器中。这个过滤器应该寻找$\{,并且从那里它应该取消转义 RTF 直到关闭\}

当然,较旧的模板使用$[NAME]$了类似的TemplateLoader技巧,只是它用$[and替换]$${and }。这有点尴尬,但我想作者发现它更容易实现。

于 2013-09-10T10:43:31.593 回答