使用 Aspose.Word 库(Java 中)设置每页特定页脚/页眉的正确方法是什么?考虑具有不同数量的节和页数的文档。
我对文档做了一些尝试,第 1 部分有 2 页,其余部分有单页。据我了解,文档应该具有相同数量的部分和页面,以便设置每页的自定义页脚。
我想最终解决方案的部分就在这里在aspose.words中使用DOM在每个页面中添加单独的页眉/页脚
但是,此代码无法正常工作,因为所有页脚文本都写在单页的页脚上。而且识别的页面数量比实际的要多。
是的,你是对的,在 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");