本文介绍使用文字文档时如何导出文件为PDF或图片、获取总页数、切换分页和连页模式、控制目录显示、获取页面宽度等。

导出文件

导出当前文件为对应的PDF或者图片,并获取导出后的URL。

  • 语法

    表达式.ActiveDocument.ExportAsFixedFormat({ OutputFileName, ExportFormat })

    表达式:文档类型应用对象

  • 参数

    属性

    数据类型

    是否必填

    描述

    OutputFileName

    String

    导出的文件名称。当前版本不支持。

    ExportFormat

    Enum

    导出的文件类型。Enum.WdExportFormat取值范围如下:

    • 17或wdExportFormatPDF(默认):将文件导出为PDF格式。

    • 18或wdExportFormatXPS:将文件导出为XML Paper Specification(XPS)格式,当前版本不支持。

    • 19或wdExportFormatIMG:将文件导出为图片格式。

    OpenAfterExport

    Boolean

    导出内容后打开新文件,当前版本不支持。

    OptimizeFor

    Enum

    指定针对屏幕显示或对打印进行优化。当前版本不支持。Enum.WdExportOptimizeFor取值范围如下:

    • 0或wdExportOptimizeForPrint:针对打印进行导出,质量较高,生成的文件大小较大。

    • 1或wdExportOptimizeForOnScreen:针对屏幕显示进行导出,质量较差,生成的文件大小较小。

    Range

    Enum

    指定导出区域范围。Enum.WdExportRange取值范围如下:

    • 0或wdExportAllDocument(默认):导出整个文件。

    • 1或wdExportSelection:导出当前选择的内容。

    • 2或wdExportCurrentPage:导出当前页。

    • 3或wdExportFromTo:使用起始和结束位置导出某个范围的内容。

    From

    Number

    当Range参数设值为wdExportFromTo时,指定起始页码。

    To

    Number

    当Range参数设值为wdExportFromTo时,指定结束页码。

    Item

    Enum

    指定导出文档是否带标记。Enum.WdExportItem取值范围如下:

    • 0或wdExportDocumentContent(默认):导出文档时不带标记。

    • 7或wdExportDocumentWithMarkup:导出文档时带标记。

    IncludeDocProps

    Boolean

    指定在最新导出的文件中是否包括文档属性。

    KeepIRM

    Boolean

    如果在源文档具有IRM保护,指定是否将IRM权限复制到XPS文档。当前版本不支持。取值范围如下:

    • true(默认):是。

    • false:否。

    CreateBookmarks

    Enum

    指定是否导出书签和要导出的书签的类型。当前版本不支持。Enum.WdExportCreateBookmarks取值范围如下:

    • 0或wdExportCreateHeadingBookmarks:导出的文档中为每个Word标题创建一个书签,其中仅包含主文档和文本框,不包含页眉、页脚、尾注、脚注或注释的标题。

    • 1或wdExportCreateNoBookmarks:不在导出的文档中创建书签。

    • 2或wdExportCreateWordBookmarks:在导出的文档中为每个Word书签创建一个书签,Word书签包括除页眉和页脚中所含书签以外的所有书签。

    DocStructureTags

    Boolean

    指定是否包含额外数据来帮助屏幕阅读器,例如有关的流和逻辑组织的内容的信息。取值范围如下:

    • true(默认):是。

    • false:否。

    BitmapMissingFonts

    Boolean

    指定是否包含文本的位图。当前版本不支持。取值范围如下:

    • true(默认):不允许在PDF文件中嵌入某一字体。

    • false:引用该字体,如果编写的一个不可用,会替换合适的字体。

    UseISO19005_1

    Boolean

    指定是否将PDF的使用限制为ISO 19005-1标准的PDF子集。当前版本不支持。取值范围如下:

    • false(默认):否。

    • true:是。由于受到格式的限制,可能会更大或显示更多的视觉瑕疵。当前版本不支持。

    FixedFormatExtClassPtr

    Enum

    指定一个指针以指向一个允许对代码的备用实现进行调用的加载项。代码的备用实现将对应用程序生成的EMF和EMF+页面描述进行解释,以生成其自身的PDF或XPS。当前版本不支持。

    Dpi

    Number

    导出图片的DPI,默认值为92。

    Combine2LongPic

    Boolean

    是否输出为长图。取值范围如下:

    • false(默认):否。

    • true:是。

    ImgFormat

    Enum

    导出图片的格式。Enum.WdExportImgFormat取值范围如下:

    • 0或wdExportFormatPNG(默认):导出图片格式为PNG。

    • 1或wdExportFormatJPG:导出图片格式为JPG。

    • 2或wdExportFormatBMP:导出图片格式为BMP。

    • 3或wdExportFormatTIF:导出图片格式为TIF。

    WaterMark

    Boolean

    是否带水印。取值范围如下:

    • false(默认):否。

    • true:是。

  • 返回值

    返回打印后String类型的URL。

  • 示例

    • 导出PDF

      async function example() {
        await instance.ready();
      
        const app = instance.Application;
      
        //导出PDF,并获取导出后的URL
        const pdfUrl = await app.ActiveDocument.ExportAsFixedFormat(); //默认导出PDF
        console.log(pdfUrl);
      }
    • 导出图片

      async function example() {
        await instance.ready();
      
        const app = instance.Application;
      
        //导出图片,并获取导出后的URL
        const imgUrl = await app.ActiveDocument.ExportAsFixedFormat({ ExportFormat: app.Enum.WdExportFormat.wdExportFormatIMG }); //或者传递参数19
        console.log(imgUrl);
      }

获取总页数

通过Range.Information,可以获取到页面相关的各种信息(目前仅支持获取总页数信息)。

重要

由于文字文档是流式排版,因此无法在最初就确定最终页数,只有浏览到最底部才知道总页数。

  • 语法

    表达式.ActiveDocument.Range.Information(WdInformation)

    表达式:文档类型应用对象

  • 参数

    通过app.Enum.WdInformation获取所选内容或区域的信息的类型。

    属性

    数据类型

    是否必填

    描述

    WdInformation

    Enum

    获取所选内容或区域的信息。Enum.WdInformation取值范围如下:

    • 3或wdActiveEndPageNumber:返回包含指定的选定内容或范围,从文档的开头开始计数的活动端的页面数。对页码编号的任何手动调整都将被忽略(与计数不同)。

    • 4或wdNumberOfPagesInDocument(默认):返回所选内容或区域相关联的文档的页数。

  • 返回值

    属性

    数据类型

    描述

    PagesCount

    Number

    当前已经排版的页码。

    End

    Boolean

    是否已排版结束。

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
    
      //获取总页数
      const totalPages = await app.ActiveDocument.Range.Information(app.Enum.WdInformation.wdNumberOfPagesInDocument);
      console.log(totalPages);
    }

获取当前页页码

获取当前页页码。

  • 语法

    表达式.ActiveDocument.ActiveWindow.Selection.Information(WdInformation)

    表达式:文档类型应用对象

  • 参数

    属性

    数据类型

    是否必填

    描述

    WdInformation

    Enum

    获取所选内容或区域的信息。Enum.WdInformation取值范围如下:

    • 3或WdInformation.wdActiveEndPageNumber:返回包含指定的选定内容或范围,从文档的开头开始计数的活动端的页面数。对页码编号的任何手动调整都将被忽略(与计数不同)。

    • 4或WdInformation.wdNumberOfPagesInDocument(默认):返回与所选内容或区域相关联的文档的页数。

  • 返回值

    返回Number代表当前页页码。

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
    
      //获取当前页页码
      const currentPage = await app.ActiveDocument.ActiveWindow.Selection.Information(app.Enum.WdInformation.wdActiveEndPageNumber);
      console.log(currentPage );
    }

分页和连页模式切换

切换分页或连页模式。

  • 语法

    表达式.ActiveDocument.SwitchTypoMode(Boolean)

    表达式:文档类型应用对象

    Boolean参数,true表示切换到连页模式,false表示切换到分页模式。

  • 返回值

    Boolean返回值,true表示切换成功,false表示切换失败。

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      //切换为分页模式
      await app.ActiveDocument.SwitchTypoMode(false);
    }

获取分页模式总页数

获取分页模式下的总页数。

  • 语法

    表达式.ActiveDocument.ActiveWindow.ActivePane.Pages.Count

    表达式:文档类型应用对象

  • 返回值

    返回Number属性值代表分页模式下总页数。

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      //获取分页模式下的总页数
      const pages = await app.ActiveDocument.ActiveWindow.ActivePane.Pages.Count;
      console.log(pages);
    }

显示文件名栏

文件名栏是指连页模式下(非连页模式下不生效),在内容开头会显示文件名相关栏。您可以通过对SwitchFileName的控制,显示或隐藏文件名栏。

  • 语法

    表达式. ActiveDocument.SwitchFileName(Boolean)

    表达式:文档类型应用对象

    Boolean参数,true表示显示文件名栏,false表示隐藏文件名栏。

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      //切换为连页模式
      await app.ActiveDocument.SwitchTypoMode(true);
    
      //隐藏文件名栏
      await app.ActiveDocument.SwitchFileName(false);
    }

控制目录显示

显示或隐藏目录。

  • 语法

    表达式.ActiveDocument.ActiveWindow.DocumentMap = Boolean

    表达式:文档类型应用对象

    Boolean参数,true表示显示目录,false表示隐藏目录。

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      //显示目录
      app.ActiveDocument.ActiveWindow.DocumentMap = true;
    }

监听剪切板

获取剪切板回调事件。

  • 语法

    表达式.Sub.ClipboardCopy = Function

    表达式:文档类型应用对象

  • 返回值

    属性

    数据类型

    描述

    copyId

    String

    剪切板ID。

    isRestoreFocus

    Boolean

    是否复原焦点。

    text

    String

    复制的内容。

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      //获取剪切板回调事件
      app.Sub.ClipboardCopy = async (e) => {
        await console.log(e);
      }
    }

跳转到指定位置

通过GoTo()方法,可以跳转到页面的指定位置,例如跳转到指定的页面或者跳转到指定的书签。

重要

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

  • 语法

    表达式.ActiveDocument.ActiveWindow.Selection.GoTo(What, Which, Count, Name)

    表达式:文档类型应用对象

  • 参数

    属性

    数据类型

    是否必填

    描述

    What

    Number

    可选

    指定区域或选定内容要移动到的项的类别。WdGoToItem取值范围如下:

    • -1或WdGoToItem.wdGoToBookmark:跳转类型为书签。

    • 1或WdGoToItem.wdGoToPage:跳转类型为页面。

    Which

    Number

    可选

    指定区域或选定内容要移动到的项。WdGoToDirection取值为1或WdGoToDirection.wdGoToAbsolute时,表示为绝对定位。

    Count

    Number

    可选

    在文档中的项的数目。默认值为1,仅正整数有效。

    Name

    String

    可选

    当What取值为wdGoToBookmark时,则指定一个名称。

  • 返回值

    返回到跳转后的页面。

  • 示例

    • 跳转到指定的页面

      //跳转到指定页
      async function example() {
        await instance.ready();
      
        const app = instance.Application;
      
        const page = await app.ActiveDocument.ActiveWindow.Selection.GoTo(instance.Enum.WdGoToItem.wdGoToPage, instance.Enum.WdGoToDirection.wdGoToAbsolute, 3);
      }
    • 跳转到指定的书签

      //获取所有书签
      async function example() {
        await instance.ready();
      
        const app = instance.Application;
      
        //添加书签
        await app.ActiveDocument.ActiveWindow.Bookmarks.Add({
          Name: 'WebOffice',
          Range: {
            Start: 1,
            End: 10,
          },
        });
      
        //跳转到指定的书签
        await app.ActiveDocument.ActiveWindow.Selection.GoTo(
          instance.Enum.WdGoToItem.wdGoToBookmark, //类型:Bookmark
          instance.Enum.WdGoToDirection.wdGoToAbsolute, //定位
          undefined, //数量
          'WebOffice', //书签名
        );
      
        //或者
        await instance.Application.ActiveDocument.ActiveWindow.Selection.GoTo({
          What: Enum.WdGoToItem.wdGoToBookmark,
          Which: Enum.WdGoToDirection.wdGoToAbsolute,
          Name: 'WebOffice', //书签名
        });
      }

保存文件

保存文件的改动。

重要

JS-SDK V1.1.9及以上版本支持此功能。

  • 语法

    表达式.ActiveDocument.Save()

    表达式:文档类型应用对象

  • 返回值

    属性

    数据类型

    描述

    result

    String

    保存状态。

    size

    Number

    文件大小,单位Byte。

    version

    Number

    版本。

  • 保存状态说明

    保存状态

    描述

    ok

    版本保存成功,可在历史版本中查看。

    nochange

    文档无更新,无需保存版本。

    SavedEmptyFile

    暂不支持保存空文件。触发场景:内核保存完后文件为空。

    SpaceFull

    空间已满。

    QueneFull

    保存中请勿频繁操作。触发场景:服务端处理保存队列已满,正在排队。

    fail

    保存失败。

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
    
      //保存文件的改动
      const save = await app.ActiveDocument.Save();
      console.log(save);
    }

页面属性

获取页面属性对象

  • 语法

    表达式.ActiveDocument.Sections.Item(Index).PageSetup

    表达式:文档类型应用对象

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      //获取页面属性对象
      const pageSetup = await app.ActiveDocument.Sections.Item(1).PageSetup;
    }

获取页面宽度

  • 语法

    表达式.ActiveDocument.Sections.Item(Index).PageSetup.PageWidth

    表达式:文档类型应用对象

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      //获取页面属性对象
      const pageSetup = await app.ActiveDocument.Sections.Item(1).PageSetup;
    
      //获取页面宽度
      const pageWidth = await pageSetup.PageWidth;
      console.log(pageWidth);
    }

排版到指定页

由于Word(文档)是流式排版,因此可以通过TypesetToPage()方法来指定首次加载的页数,滚动页面时进一步加载页面数据。

  • 语法

    表达式.ActiveDocument.Sections.Item(Index).PageSetup.TypesetToPage(PageNum)

    表达式:文档类型应用对象

  • 参数

    属性

    数据类型

    是否必填

    描述

    PageNum

    Number

    指定首次加载的页数。

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      //获取页面属性对象
      const pageSetup = await app.ActiveDocument.Sections.Item(1).PageSetup;
    
      //排版到指定页
      await pageSetup.TypesetToPage(2);
    }

获取页面高度

  • 语法

    表达式.ActiveDocument.Sections.Item(Index).PageSetup.PageHeight

    表达式:文档类型应用对象

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      // 页面属性对象
      const PageSetup = await app.ActiveDocument.Sections.Item(1).PageSetup;
    
      // 获取页面高度
      const PageHeight = await PageSetup.PageHeight;
      console.log(PageHeight);
    }

获取页面上边缘与正文文本的上边界之间的距离

  • 语法

    表达式.ActiveDocument.Sections.Item(Index).PageSetup.TopMargin

    表达式:文档类型应用对象

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      // 页面属性对象
      const PageSetup = await app.ActiveDocument.Sections.Item(1).PageSetup;
    
      // 获取页面上边缘与正文文本的上边界之间的距离
      const TopMargin = await PageSetup.TopMargin;
      console.log(TopMargin);
    }

获取页面底边与正文文本边界之间的距离

  • 语法

    表达式.ActiveDocument.Sections.Item(Index).PageSetup.BottomMargin

    表达式:文档类型应用对象

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      // 页面属性对象
      const PageSetup = await app.ActiveDocument.Sections.Item(1).PageSetup;
    
      // 获取页面底边与正文文本边界之间的距离
      const BottomMargin = await PageSetup.BottomMargin;
      console.log(BottomMargin);
    }

获取页面左边缘与正文左边界之间的距离

  • 语法

    表达式.ActiveDocument.Sections.Item(Index).PageSetup.LeftMargin

    表达式:文档类型应用对象

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      // 页面属性对象
      const PageSetup = await app.ActiveDocument.Sections.Item(1).PageSetup;
    
      // 获取页面左边缘与正文左边界之间的距离
      const LeftMargin = await PageSetup.LeftMargin;
      console.log(LeftMargin);
    }

获取页面右边距与正文右边界之间的距离

  • 语法

    表达式.ActiveDocument.Sections.Item(Index).PageSetup.RightMargin

    表达式:文档类型应用对象

  • 示例

    async function example() {
      await instance.ready();
    
      const app = instance.Application;
      
      // 页面属性对象
      const PageSetup = await app.ActiveDocument.Sections.Item(1).PageSetup;
    
      // 获取页面右边距与正文右边界之间的距离
      const RightMargin = await PageSetup.RightMargin;
      console.log(RightMargin);
    }