Aspose-word 将两篇文档合二为一

您好,我当前使用的Aspose-word 版本是23.6,我现在有两篇docx文档,我想把两篇文档合二为一,并且让第二篇文档新起一页,达到分页符的效果,请问该如何实现呢?

@songyassen

要将两篇docx文档合并为一篇,并在第二篇文档前插入分页符,您可以使用Aspose.Words for Java的appendDocument方法。以下是实现此功能的步骤和示例代码:

  1. 加载文档:首先,您需要加载要合并的两个文档。
  2. 插入分页符:在合并第二个文档之前,您可以插入一个分页符,以确保第二篇文档从新的一页开始。
  3. 合并文档:使用appendDocument方法将第二个文档附加到第一个文档。

以下是示例代码:

import com.aspose.words.Document;
import com.aspose.words.ImportFormatMode;

public class MergeDocuments {
    public static void main(String[] args) throws Exception {
        // 加载第一个文档
        Document doc1 = new Document("document1.docx");
        // 加载第二个文档
        Document doc2 = new Document("document2.docx");

        // 在第一个文档的末尾插入分页符
        doc1.getLastSection().getBody().appendParagraph("");
        doc1.getLastSection().getBody().appendParagraph(" "); // 添加一个空段落
        doc1.getLastSection().getBody().appendBreak(); // 插入分页符

        // 合并第二个文档
        doc1.appendDocument(doc2, ImportFormatMode.KEEP_SOURCE_FORMATTING);

        // 保存合并后的文档
        doc1.save("mergedDocument.docx");
    }
}

在这个示例中,我们首先加载两个文档,然后在第一个文档的末尾插入一个分页符,最后将第二个文档合并到第一个文档中。您可以根据需要调整分页符的插入位置和格式。

通过这种方式,您可以轻松地将两篇文档合并为一篇,并确保第二篇文档从新的一页开始。

如果您需要更多关于文档合并的详细信息,可以参考Aspose的官方文档:使用文档合并

Sources:
[1]: 使用文档合并

您好,我们担心因为分页符的位置不确定,万一把分页符单独挤到一页上,那就会多出一页空白页,如果不使用分页符的话,能够实现上面的需求吗?

@songyassen 您可以使用以下代码来实现这一点:

Document doc1 = new Document("C:\\Temp\\in1.docx");
Document doc2 = new Document("C:\\Temp\\in1.docx");

// Set section start of the second document.
doc2.getFirstSection().getPageSetup().setSectionStart(SectionStart.NEW_PAGE);
        
// Merge document.
doc1.appendDocument(doc2, ImportFormatMode.USE_DESTINATION_STYLES);
    
doc1.save("C:\\temp\\out.docx");

您好,我参考您的代码,但是实现的效果是,转换完PDF还是多了一页空白页,请问该如何处理呢?
代码如下:

LoadOptions opt = new LoadOptions();
opt.getLanguagePreferences().setDefaultEditingLanguage(EditingLanguage.CHINESE_PRC);
Document doc1 = new Document("/Users/yassen/Desktop/test/doc1.docx");
Document doc2 = new Document("/Users/yassen/Desktop/test/doc2.docx");
// Set section start of the second document.
doc2.getFirstSection().getPageSetup().setSectionStart(SectionStart.NEW_PAGE);
// Merge document.
doc1.appendDocument(doc2, ImportFormatMode.USE_DESTINATION_STYLES);
doc1.save(outputStream, SaveFormat.PDF);

doc1:
doc1.docx (31.5 KB)

doc2:
doc2.docx (30.7 KB)

pdf:
pdf1.pdf (74.2 KB)

@songyassen 使用最新 24.7 版 Aspose.Words for Java 无法重现该问题。
out.pdf (125.1 KB)

您好,我用的Aspose-word 版本是23.6,这个版本下该如何解决呢?

@songyassen 我已经用23.6版本检查了代码,文档末尾没有空白页。我发现,您正在使用LoadOptions,但您没有在文档实例中设置它,它应该是:

LoadOptions opt = new LoadOptions();
opt.getLanguagePreferences().setDefaultEditingLanguage(EditingLanguage.CHINESE_PRC);
Document doc1 = new Document(getMyDir() + "doc1.docx", opt);
Document doc2 = new Document(getMyDir() + "doc2.docx", opt);

也许这是个问题。