Новая строка в поле с 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:";