通过调用高级接口可用于直接操作文档。本文中的demo对象是指JS-SDK实例化后的对象。

说明 JS-SDK提供的接口风格与VBA一致,原则上兼容VBA的接口和参数。

调用流程

  1. 等待ready。
    await demo.ready() //等待demo ready后再调用高级接口。
  2. 获取文档类型的应用对象。

    根据WordApplication、ExcelApplication、PPTApplication、PDFApplication判断当前的文档类型。

    //文档类型为文字类型。
    const wordApp = demo.WordApplication()
    //文档类型为表格类型。
    const excelApp = demo.ExcelApplication()
    //文档类型为演示类型。
    const pptApp = demo.PPTApplication()
    //文档类型为PDF类型。
    const pdfApp = demo.PDFApplication()
    //自动识别文档类型。
    const app = demo.Application
  3. 调用高级接口。

    此处以文字导出PDF为例介绍。

    //将文字文档导出为PDF文档类型。
      async function exportPdf() {
        await wordApp.ActiveDocument.ExportAsFixedFormat()
      }

释放对象

由于iframe的跨域安全限制,无法直接调用iframe内部的函数和变量,JS-SDK提供的高级接口对象只是iframe内部对象的映射,通过postMessage进行通信,示意图如下图所示,所以部分对象需要手动释放。
说明 需要手动释放的对象均会在文档中说明,请以文档说明为准。
fig_IMM_object001
系统支持单个或批量释放对象。
  • 单个释放对象
    代码示例
    const app = demo.ExcelApplication()
    //例如表格获取WorkSheet对象。
    const sheet = demo.Sheets.Item("sheet1")
    //此时得到的sheet对象只是一个映射对象,它拥有iframe内部对象的所有属性和方法,该对象的所有属性和方法都会映射到iframe内部。
    sheet.Activate() //切换sheet。
    //...do something
    //不需要该对象时,手动释放,此时会通知iframe内部销毁对应的对象。
    sheet.Destroy()
  • 批量释放对象

    当有多个对象需要销毁时,可以按照区间批量释放对象。

    代码示例
    const stack1 = app.Stack()
    //do something
    stack1.End() //释放在stack1区间的对象。