本文介绍使用文字文档时如何导出文件为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); }