如何对 WordProcessingDocument 中的页面重新编号?

How to renumber pages in a WordProcessingDocument?

我使用 openxml-sdk 创建了一个大型(约 1000 页)word 文档。当我第一次使用应用程序一词打开它时,它会在状态栏中显示 "Word is renumbering the pages of test.docx" 并持续大约 15 秒。我做了一个 german screenshot 这种行为。完成此步骤后,文档已更改并需要保存。新版本的文件大约是原来文件大小的两倍。

文档第一次保存只需调用

document.SaveAs("someFilePath");

这种行为到底是什么?如何在文档创建过程中(或之后)以编程方式对页面重新编号?

您不能对 WordprocessingDocument 中的页面重新编号,因为这些页码未存储在 WordprocessingDocument 中,而是在布局或呈现文档时创建的。

典型的文档将页码定义为复杂字段,您可以在 FooterPart(或可能 HeaderPart)中包含的 Open XML 标记中找到该字段。假设页码字段存储在 FooterPart 中,在最简单的情况下(例如,文档只有一个部分),您的 WordprocessingDocument 中可能只有一个 FooterPart。即使您有多个 FooterParts,例如,因为您有多个部分,或者第一页、奇数页和偶数页的布局不同,文档中的 FooterParts 也相对较少(位于至少与您的 1.000 页相比)。

当 Word 呈现文档以供打印或查看时,它还会根据您的 FooterPart 呈现页码(仍然使用我的示例)。对于 1.000 页,这需要时间,因为 Word 根本不是为那么大的文档构建的。

如果您想做 Word 的工作并自己进行排版,您需要了解构建排版引擎非常复杂,需要付出很多努力。