生成多页word时 处理页眉页脚性能缓慢

aspose for word 22版本

您好!我这里遇见一个性能问题,场景是我要生成一本书,共800页,其中一共200个分节符,我们现在的处理逻辑是先写入正文内容,然后再循环分节符对每个分节内容处理页页眉页脚,现在测试出来的效果是,正文内容耗时1分钟,页眉页脚耗时30多分钟,经过我们排查得知,我们处理的页眉页脚是按9宫格进行处理,然后还分奇数页页眉页脚,偶数页页眉页脚,所以处理复杂度是20049 ,请问专家,我的处理逻辑对吗,您有没有更好的处理逻辑,请给个示例,非常感谢!

@wangyan

请问您能否提供更多关于您使用的代码和具体的处理逻辑的信息?

WordUtil.zip (9.6 KB)

这是我处理页眉页脚的代码,麻烦您能给个优化的建议及代码示例

再补充一下上面的复杂度是 循环200个分节符,然后每个奇数页 偶数页页眉页脚是4个,然后在对应9宫格,意思是嵌套循环一共是200 x 4 x 9

@wangyan 不幸的是,很难说是什么导致了你这边的问题。22版本比较旧,请尝试使用最新的25.4版本的java。

不管怎样,你有一个大文档,里面有很多数据,这些数据在处理过程中会不断增加。也许有些步骤可以提高文档创建速度:

1.在添加正文时创建章节。例如:

builder.writeln("Section 1");
builder.insertBreak(BreakType.PAGE_BREAK);
builder.writeln("Section 1");
doc.appendChild(new Section(doc));
builder.moveToSection(doc.getSections().indexOf(doc.getLastSection()));
builder.writeln("Section 2");

2.在添加到该节之前,请预先准备页眉/页脚模板,如果该节使用与上一节相同的页眉/页脚,则可以使用“isLinkedToPrevious”。这可以帮助您减少准备许多类似对象的时间。

doc.getLastSection().getHeadersFooters().getByHeaderFooterType(HeaderFooterType.HEADER_PRIMARY).isLinkedToPrevious(true);

或者,如果可能的话,请创建一个简单的控制台应用程序,让我们能够在我们这边重现问题。我们将调查此问题并向您提供更多信息。