为每页Aspose Word自定义页脚

问题描述 投票:0回答:1

使用 Aspose.Word 库(Java 中)设置每页特定页脚/页眉的正确方法是什么?考虑具有不同数量的节和页数的文档。

我对文档做了一些尝试,第 1 部分有 2 页,其余部分有单页。据我了解,文档应该具有相同数量的部分和页面,以便设置每页的自定义页脚。

我想最终解决方案的部分就在这里在aspose.words中使用DOM在每个页面中添加单独的页眉/页脚

但是,此代码无法正常工作,因为所有页脚文本都写在单页的页脚上。而且识别的页面数量比实际的要多。

java footer aspose aspose.words
1个回答
0
投票

是的,你是对的,在 MS Word 文档中,页眉/页脚是按节定义的。 MS Word 文档中的每个部分都可以有 3 种类型的页眉和页脚 -

First
Primary
Even
页面。在您的情况下,需要按页面拆分文档,您可以使用Document.ExtractPages来实现这一点。例如看下面的代码:

Document doc = new Document("C:\\Temp\\in.docx");

// Clone source document.
Document result = (Document)doc.deepClone(false);

// Split and rejoin document by pages.
for (int i = 0; i < doc.getPageCount(); i++)
{
    Document page = doc.extractPages(i, 1);
    // Remove old Header/Footer
    for (Section s : page.getSections())
    {
        s.getHeadersFooters().clear();
        s.getPageSetup().setOddAndEvenPagesHeaderFooter(false);
        s.getPageSetup().setDifferentFirstPageHeaderFooter(false);
    }
    // Add new header to the first section of page.
    DocumentBuilder pageBuilder = new DocumentBuilder(page);
    pageBuilder.moveToHeaderFooter(HeaderFooterType.HEADER_PRIMARY);
    pageBuilder.write("This is specific header for " + i + " page");

    result.appendDocument(page, ImportFormatMode.USE_DESTINATION_STYLES);
}

result.save("C:\\Temp\\out.docx");
© www.soinside.com 2019 - 2024. All rights reserved.