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

你如何合并两个.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会中断(几乎)所有格式化。 难道我做错了什么? 还有别的办法吗?

我认为这是“按设计工作”。

我尝试了一次全局文档,它导入文档并按原样显示它们……只要段落样式具有不同的名称!

使用相同的命名模板将被“主”文档所具有的值覆盖。

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

HTH

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

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