如何合并两个.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会中断(几乎)所有格式化。难道我做错了什么?还有其他办法吗?
答案 0 :(得分:1)
我认为这是"按设计工作"。
我尝试了一次全局文档,只要段落样式具有不同的名称,就可以导入文档并将其显示为 ... !
使用相同的命名模板会被" master"的值覆盖。文件有。
所以我最终克隆了具有唯一(每个文档)名称的标准样式。
HTH
答案 1 :(得分:1)
Ma的情况相当简单,我想要合并的文件以相同的方式生成并使用相同的基本格式。因此,从我的一个文件开始,而不是一个空文档修复了我的问题。
然而,在有人提出格式化保留的更通用解决方案(可能基于ngulams答案和评论?)之前,这个问题将保持开放。