文字相关

对文字文档进行操作,如导出为PDF文档,获取页码和跳转页等。

重要

此文档已不再维护,建议您使用新版智能媒体管理。

导出为PDF

 /*
  * 目前只支持两个参数RangeType和FrameSlides。
  * @param: { Range?: WdExportRange, From?: number, To?: number, Item?: WdExportItem, IncludeDocProps?: bool }
  * WdExportRange: {
  *      wdExportAllDocument: 0,
  *      wdExportCurrentPage: 2,
  *      wdExportFromTo: 3,
  *      wdExportSelection: 1,
  *  },
  * WdExportItem: {
  *      wdExportDocumentContent: 0,
  *      wdExportDocumentWithMarkup: 7
  *  }
  */
  await demo.WordApplication().ActiveDocument.ExportAsFixedFormat()

获取页码和跳转页

定义后续示例需要用到的变量。

const app = demo.WordApplication()
const {Enum} = app
  • 获取总页数

    说明

    由于文字文档是流式排版,无法在开始确定最终页数,只有浏览到最后才能知道总页数。

     /*
      * @param: WdInformation: {
      *      wdNumberOfPagesInDocument: 4
      *  }
      * @return: {PagesCount: number, End: boolean}
      */
      let totalPages = await app.ActiveDocument.Range.Information(Enum.WdInformation.wdNumberOfPagesInDocument)
      if (totalPages.End) {
        console.log("加载完了!一共", totalPages.PagesCount, "页")
      }
  • 获取当前页

     /*
      * @param: WdInformation: {
      *      wdActiveEndPageNumber: 3
      *  }
      * @return: number
      */
      let currentPage = await app.ActiveDocument.Selection.Information(Enum.WdInformation.wdActiveEndPageNumber)
  • 跳转到指定页

    说明

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

     /*
      * @param: { What?: WdGoToItem, Which?: WdGoToDirection.wdGoToAbsolute, Count?: number, Name?: string}
      * WdGoToItem: {
      *      wdGoToPage: 1,
      *  }
      *  WdGoToDirection: {
      *      wdGoToAbsolute: 1
      *  }
      */
      await app.ActiveDocument.Selection.GoTo(Enum.WdGoToItem.wdGoToPage, Enum.WdGoToDirection.wdGoToAbsolute, 10)
      //或者使用如下代码。
      await app.ActiveDocument.Selection.GoTo({
        What: Enum.WdGoToItem.wdGoToPage,
        Which: Enum.WdGoToDirection.wdGoToAbsolute,
        Count: 10
      })
  • 当前页改变事件

      function eventHandle() {
        // do something
      }
      //监听当前页改变事件。
      app.Sub.CurrentPageChange = eventHandle
      //销毁事件监听。
      app.Sub.CurrentPageChange = null