Powershell 获取包含评论的页码

Powershell get page number containing the comment

如何获取 WordDocument 中评论的页码?

$doc.Comments| ForEach-Object{
   Write-Host $_.Author"," $_.Date"," $_.Range.Text `r`n 
   # comment page number?
}

Word 不会为其任何对象存储页码,正如您在 docx xml 中看到的那样,但是可以使用 wdActiveEndPageNumber 信息从评论范围中获取它:

$doc.Comments | %{
    $pageNo = $_.Scope.Information(3) # wdActiveEndPageNumber
    $_.Author, $_.Date, $_.Range.Text, $pageNo -join ', '
}

P.S。我认为 Word 可能不会重新计算实际页码,而是使用内部 LastRenderedPageBreak 元素(XML 文件中的 <w:lastRenderedPageBreak/>),理论上在某些情况下可能不准确(例如字体是在您的 PC 上丢失并且使用了具有不同字符的替代品 width/height 导致页面回流)。