合并代码中的两个.odt文件

时间:2014-08-08 09:57:50

标签: java openoffice.org

如何合并两个.odt文件?手动执行此操作,打开每个文件并复制内容都可行,但不可行。

我尝试过odttoolkit Simple API(simple-odf-0.8.1-incubating)来完成这项任务,创建一个空的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和Windings的组合(对于复选框),输出masterFile都在TimesNewRoman中。起初我怀疑insertContentFromDocumentAfter的最后一个参数,但是将其更改为false会中断(几乎)所有格式化。难道我做错了什么?还有其他办法吗?

2 个答案:

答案 0 :(得分:1)

我认为这是"按设计工作"。

我尝试了一次全局文档,只要段落样式具有不同的名称,就可以导入文档并将其显示为 ...

使用相同的命名模板会被" master"的值覆盖。文件有。

所以我最终克隆了具有唯一(每个文档)名称的标准样式。

HTH

答案 1 :(得分:1)

Ma的情况相当简单,我想要合并的文件以相同的方式生成并使用相同的基本格式。因此,从我的一个文件开始,而不是一个空文档修复了我的问题。

然而,在有人提出格式化保留的更通用解决方案(可能基于ngulams答案和评论?)之前,这个问题将保持开放。