获取页码、跳转页

为了方便演示,先定义下面需要用到的变量

  1. const app = demo.WordApplication()
  2. const {Enum} = app

获取总页数

  1. /*
  2. * @param: WdInformation: {
  3. * wdNumberOfPagesInDocument: 4
  4. * }
  5. * @return: {PagesCount: number, End: boolean}
  6. */
  7. let totalPages = await app.ActiveDocument.Range.Information(Enum.WdInformation.wdNumberOfPagesInDocument)
  8. if (totalPages.End) {
  9. console.log("加载完了!一共", totalPages.PagesCount, "页")
  10. }

由于文字文档是流式排版,没办法一开始就确定最终页数,只有浏览到最底部才知道总页数。

获取当前页

  1. /*
  2. * @param: WdInformation: {
  3. * wdActiveEndPageNumber: 3
  4. * }
  5. * @return: number
  6. */
  7. let currentPage = await app.ActiveDocument.Selection.Information(Enum.WdInformation.wdActiveEndPageNumber)

跳转到指定页

  1. /*
  2. * @param: { What?: WdGoToItem, Which?: WdGoToDirection.wdGoToAbsolute, Count?: number, Name?: string}
  3. * WdGoToItem: {
  4. * wdGoToPage: 1,
  5. * }
  6. * WdGoToDirection: {
  7. * wdGoToAbsolute: 1
  8. * }
  9. */
  10. await app.ActiveDocument.Selection.GoTo(Enum.WdGoToItem.wdGoToPage, Enum.WdGoToDirection.wdGoToAbsolute, 10)
  11. // 或者
  12. await app.ActiveDocument.Selection.GoTo({
  13. What: Enum.WdGoToItem.wdGoToPage,
  14. Which: Enum.WdGoToDirection.wdGoToAbsolute,
  15. Count: 10
  16. })

由于文字文档是流式排版, 大文档时,跳转时间会比较长,建议加一个中间loading过渡效果。

当前页改变事件

  1. function eventHandle() {
  2. // do something
  3. }
  4. // 监听
  5. app.Sub.CurrentPageChange = eventHandle
  6. // 销毁
  7. app.Sub.CurrentPageChange = null