Как вы объедините два .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, прерывая (почти) все форматирование. Я делаю что-то неправильно? Есть ли другой способ?