0

我正在尝试使用 jOpenDocument 库从 java 填写模板。

我想在一个领域开始一个新的行。正常的换行符 (\n) 不起作用。

当我在文档中手动执行此操作并查看 xml 文件 (content.xml) 时,我明白为什么这不起作用。对于该字段中的每个新行,都有一个单独的段落。

所以也许有一种方法可以将多个段落组合在一个对象中,然后调用 setField() 与多个段落对象。但直到现在我还没有找到任何解决方案。

代码示例:

EngineTemplate template = new RhinoTemplate(templateFile);
template.setField("nameField", "this is the content\nI wish to be multilined"); 
4

1 回答 1

0

基本上\n默认情况下会被跳过,但您可以通过在模板中以%enc:.

这是org.jopendocument.dom.template.engine.Processor类文档的解释:

从预处理的模板内容生成最终的文档内容。字段替换的行为可以通过前缀来控制:

AS_STR 下面的表达式将被替换为字符串。对于 XML 元素,将输出其树。

ENCODE 以下表达式将使用 toString() 转换为字符串,然后使用 org.jopendocument.dom.OOXML.encodeWS(java.lang.String) 进行编码。

OO_XML 以下表达式将使用 toString() 转换为字符串,然后解析为 OO XML。

如果没有指定这些,XML 元素将被视为 OO XML 被嫁接(仅它的子元素),否则该值将被简单地设置为字段的文本。

ENCODE声明了字段:

public static final String ENCODE = "%enc:";
于 2017-03-18T17:13:29.437 回答