合并代码中的两个.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答案和评论?)。