如何使用Open XML SDK获取MS Word文档的总页数?

5
我正在使用以下代码获取页面计数,但它没有给出实际的页面计数(PFA)。有没有更好的方法来获取总页面数?
var pageCount = doc.ExtendedFilePropertiesPart.Properties.Pages.Text.Trim();

页数错误

实际页数为10页

注意:我们无法在Azure Web应用程序服务中使用Office Primary Interop Assemblies

提前感谢。


有各种库,如Aspose,可用于在不使用PIA的情况下计算页面编号,但我不知道是否有任何免费替代品。 - Slai
2个回答

4

理论上,以下属性可以使用Open XML SDK从Word Open XML文件中返回该信息:

int pageCount = (int) document.ExtendedFilePropertiesPart.Properties.Pages.Text;

实际上这种方法并不可靠。它也许能够工作,但也有可能不行,这取决于1)Word在关闭文件之前保存了哪些内容,以及2)关闭文件后所做的编辑类型。获取页面数量或页码的唯一确定方法是在Word应用程序界面中打开文档。Word在编辑过程中动态计算页面数量和页数。当文档关闭时,此信息是静态的,并且不一定与打开或打印文档时的信息相同。请参考https://github.com/OfficeDev/Open-XML-SDK/issues/22以确认。

1
另外,如果文档未使用默认的Word打印布局视图查看或保存,则该属性不会“正确”。例如,如果文档在Word Web布局视图中查看或保存,该属性始终为1页。 - Slai

3

以下代码对我有效。它会将“第X页,共Y页”添加到文档中。

para = new Paragraph(new Run(
       new Text() { Text = "Page ", Space = SpaceProcessingModeValues.Preserve },
       new SimpleField() { Instruction = "PAGE" }, 
       new Text() { Text = " of ", Space = SpaceProcessingModeValues.Preserve },  
       new SimpleField() { Instruction = "NUMPAGES \\*MERGEFORMAT" }));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接