Новая строка в поле с jOpenDocument в документе ODT

Я пытаюсь заполнить шаблон из Java с библиотекой jOpenDocument.

Я хочу начать новую строку в поле. Обычный знак новой строки (\n) не работает.

Когда я делаю это вручную в документе и просматриваю файл xml (content.xml), я понимаю, почему это не работает. Для каждой новой строки в поле есть отдельный абзац.

Поэтому, возможно, есть способ объединить несколько абзацев в одном объекте, а затем вызвать setField() с объектом нескольких абзацев. Но до сих пор я не нашел никакого решения.

Пример кода:

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

1 ответ

Решение

В принципе \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 будет обрабатываться как ОО-XML для прививки (только его дочерние элементы), в противном случае значение будет просто задано как текст поля.

А также ENCODE поле объявлено:

public static final String ENCODE = "%enc:";
Другие вопросы по тегам