Формирование отчётов из шаблонов в формате docx

Пример шаблона:

  1. Заголовок 1

Текст абзаца 1 ${маркер1_1} ${маркер1_2} ещё какой-то текст ${маркер1_3} и ${маркер1_4}

  1. Заголовок 2

Текст абзаца 2 ${маркер2_1} ${маркер2_2} ещё какой-то текст ${маркер2_3} и ${маркер2_4} и ${маркер5}

  1. Заголовок 3

Текст абзаца 3 ${маркер3_1} ${маркер3_2} ещё какой-то текст ${маркер3_3} и ${маркер3_4} и ${маркер3_5} ${маркер3_6}

  1. Заголовок 4

Текст абзаца 4 ${маркер4_1} ${маркер4_2} ещё какой-то текст ${маркер4_3} и ${маркер4_4} и ${маркер4_5} ${маркер4_6} ${маркер4_7}

Вопросы:

  1. Есть ли возможность сформировать отчёт, например только из абзаца 2 и 4 или 1, 3 и 4. т.е. те абзацы, которые не нужны в отчёте на данный момент - удалить их?

  2. Есть ли возможность вставки текста с форматированием, допустим в первый абзац в ${маркер1_1} (например, размер шрифта и стиль курсив)?

  3. Есть текст в несколько строк, в сформированном отчёте в таком тексте пропадают символы перевода строки. Есть ли решение данной ситуации?

Здравствуйте, Максим!
Пробежимся по всем вашим вопросам в порядке следования:

  1. Да, такая возможность есть.
    Можно пометить маркером каждый абзац и передавать их в зависимости от логики. Шаблон отчета всегда будет выглядеть, как в вашем примере:

Текст абзаца 1 ${маркер1_1} ${маркер1_2} ещё какой-то текст ${маркер1_3} и ${маркер1_4}

И если абзац не нужен, мы передаем null или пустую строку.

  1. Да, возможность вставки текста с форматированием присутствует.
    Для этого, можно отформатировать сам маркер. Например, сделать жирный шрифт или курсив, а при вставке текста, абзац уже примет стили маркера. Или мы можем применить форматтер типа html и в нём задать необходимые стили.

  2. Да, возможность сохранения символов перевода строки, появилась в Jmix 2.5.1.
    Для этого, нужно добавить свойство jmix.reports.multilineStringsProcessingEnabled = true в файл конфигурации application.properties

С уважением,
Дмитрий