Объединение двух файлов .odt из кода

Как вы объедините два .odt файла? Выполнение этого вручную, открытие каждого файла и копирование содержимого будет работать, но оно неосуществимо.

Я попытался выполнить простой API (простой-odf-0.8.1-инкубатор) odttoolkit, чтобы достичь этой задачи, создав пустой TextDocument и объединив в него все:

private File masterFile = new File(...);

...

TextDocument t = TextDocument.newTextDocument();
t.save(masterFile);

...

for(File f : filesToMerge){
   joinOdt(f);
}

...

void joinOdt(File joinee){
   TextDocument master = (TextDocument) TextDocument.loadDocument(masterFile);
   TextDocument slave = (TextDocument) TextDocument.loadDocument(joinee);
   master.insertContentFromDocumentAfter(slave, master.getParagraphByReverseIndex(0, false), true);
   master.save(masterFile);
}

И это работает достаточно хорошо, однако он теряет информацию о шрифтах - исходные файлы представляют собой комбинацию Arial Narrow and Windings (для флажков), output masterFile - это все в TimesNewRoman. Сначала я подозревал последний параметр insertContentFromDocumentAfter, но менял его на false, прерывая (почти) все форматирование. Я делаю что-то неправильно? Есть ли другой способ?

Ответ 1

Я думаю, что это "работает как разработанный".

Я попробовал это один раз с помощью глобального документа, который импортирует документы и отображает их как... до тех пор, пока стили абзацев имеют разные имена!

Использование одинаковых именованных шаблонов перезаписывается со значениями, которые имеет "основной" документ.

Итак, я закончил клонирование стандартных стилей с уникальными именами (для каждого документа).

НТН

Ответ 2

Случай Ma был довольно простым, файлы, которые я хотел слить, были сгенерированы одинаково и использовали одно и то же базовое форматирование. Поэтому, начиная с одного из моих файлов, вместо пустого документа исправлена ​​моя проблема.

Однако этот вопрос останется открытым до тех пор, пока кто-нибудь не придумает более общее решение для удержания форматирования (возможно, на основе ответов и комментариев ngulams?).