主题
文字组件页面操作相关 API
导出
ActiveDocument.ExportAsFixedFormat()
导出当前文件为对应的 PDF
或者 Img
图片,并获取导出后的 url
语法
表达式.ActiveDocument.ExportAsFixedFormat({ OutputFileName, ExportFormat })
表达式:文档类型应用对象
参数
属性 | 数据类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
OutputFileName | String | 可选 | 【暂不支持】导出的文件名称 | |
ExportFormat | Enum | wdExportFormatPDF | 可选 | 导出的类型,详细可参考 Enum.WdExportFormat,目前仅支持导出图片和导出 PDF |
OpenAfterExport | Boolean | 可选 | 【暂不支持】导出内容后打开新文件 | |
OptimizeFor | Enum | 可选 | 【暂不支持】指定是针对屏幕显示还是打印进行优化,详细可参考 Enum.WdExportOptimizeFor | |
Range | Enum | 可选 | 指定导出区域是整个文档、当前页面、文本区域还是当前所选内容。默认值是导出整个文档,详细可参考 Enum.WdExportRange | |
From | Number | 可选 | 如果 Range 参数设置为 wdExportFromTo,则指定起始页码 | |
To | Number | 可选 | 如果 Range 参数设置为 wdExportFromTo,则指定结束页码 | |
Item | Enum | 可选 | 指定导出过程是只包括文本还是包括文本和标记,详细可参考 Enum.WdExportItem | |
IncludeDocProps | Boolean | 可选 | 指定在最新导出的文件中是否包括文档属性 | |
KeepIRM | Boolean | 可选 | 【暂不支持】指定是否将 IRM 权限复制到 XPS 文档,如果在源文档具有 IRM 保护。默认值为 true | |
CreateBookmarks | Enum | 可选 | 【暂不支持】指定是否导出书签和要导出的书签的类型,详细可参考 Enum.WdExportCreateBookmarks | |
DocStructureTags | Boolean | true | 可选 | 【暂不支持】指定是否包含额外数据来帮助屏幕阅读器,例如有关的流和逻辑组织的内容的信息 |
BitmapMissingFonts | Boolean | true | 可选 | 【暂不支持】指定是否包含文本的位图。 当字体许可不允许在 PDF 文件中嵌入某一字体时,请将此参数设置为 true 。如果 false ,则引用该字体,和查看者的计算机会替换合适的字体,如果编写的一个不可用 |
UseISO19005_1 | Boolean | false | 可选 | 【暂不支持】指定是否限制对 PDF 子集的 PDF 使用按照 ISO 标准化 19005-1。 如果 true ,所产生的文件会更加可靠地自我包含,但可能会更大或显示更多的视觉瑕疵,由于受到格式的限制 |
FixedFormatExtClassPtr | Enum | 可选 | 【暂不支持】指定一个指针以指向一个允许对代码的备用实现进行调用的加载项。代码的备用实现将对应用程序生成的 EMF 和 EMF+ 页面描述进行解释,以生成其自身的 PDF 或 XPS | |
Dpi | Number | 96 | 可选 | 导出图片的 dpi |
Combine2LongPic | Boolean | false | 可选 | 是否输出为长图 |
ImgFormat | Enum | wdExportFormatPNG | 可选 | 导出图片的格式,详细可参考 Enum.WdExportImgFormat |
WaterMark | Boolean | false | 可选 | 带水印还是无水印 |
返回值
返回打印后 String
型的 url
。
示例 1:导出 PDF
该 url 可在控制台查看
//@file=base.docx
async function example() {
await instance.ready()
const app = instance.Application
// 导出 PDF,并获取导出后的 url
const pdfUrl = await app.ActiveDocument.ExportAsFixedFormat() // 默认导出 PDF,所以可以不传参
console.log(pdfUrl)
}
示例 2:导出图片
//@file=base.docx
async function example() {
await instance.ready()
const app = instance.Application
// 导出 PDF,并获取导出后的 url
const pdfUrl = await app.ActiveDocument.ExportAsFixedFormat({
ExportFormat: app.Enum.WdExportFormat.wdExportFormatIMG // 或者传参 19
})
console.log(pdfUrl)
}
总页数
ActiveDocument.Range.Information() 通过 Range.Information
,我们可以获取到页面相关的各种信息(目前仅支持获取总页数信息)
由于文字文档是流式排版,没办法一开始就确定最终页数,只有浏览到最底部才知道总页数。
语法
表达式.ActiveDocument.Range.Information(WdInformation)
表达式:文档类型应用对象
参数
我们需要通过 app.Enum.WdInformation
拿到所选内容或区域的信息的类型。
属性 | 数据类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
WdInformation | Enum | 4 | 是 | 获取页面信息,目前只开放 Enum.WdInformation.wdNumberOfPagesInDocument (即 4)来获取总页数信息。详细可参考: Enum.WdInformation |
返回值
属性 | 数据类型 | 说明 |
---|---|---|
PagesCount | Number | 当前已经排版的页码 |
End | Boolean | 是否已排版结束 |
示例
//@file=base.docx
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()
由于文字文档是流式排版,没办法一开始就确定最终页数,只有浏览到最底部才知道总页数。
语法
表达式.ActiveDocument.ActiveWindow.Selection.Information(WdInformation)
表达式:文档类型应用对象
参数
属性 | 数据类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
WdInformation | Enum | 是 | 指定返回的涉及指定所选内容或区域的信息的类型。为 3 (WdInformation.wdActiveEndPageNumber)表示页码,在该页中包含指定的所选内容或区域的活动结尾。从文档开头计数。忽略任何对页码的手动调整 |
返回值
返回 Number 代表当前页页码
示例
//@file=base.docx
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)
分页/连页模式切换
语法
表达式.ActiveDocument.SwitchTypoMode(Boolean)
表达式:文档类型应用对象
Boolean
参数,为 true
表示切换到连页模式,为 false
表示切换到分页模式。
返回值
Boolean
返回值,为 true
表示切换成功,为 false
表示切换失败
示例
//@file=base.docx
async function example() {
await instance.ready()
const app = instance.Application
// 分页/连页模式切换
await app.ActiveDocument.SwitchTypoMode(false)
}
分页模式下的总页数
ActiveDocument.ActiveWindow.ActivePane.Pages.Count
获取分页模式下的总页数
语法
表达式.ActiveDocument.ActiveWindow.ActivePane.Pages.Count
表达式:文档类型应用对象
返回值
返回 Number
属性值代表分页模式下总页数
示例
//@file=base.docx
async function example() {
await instance.ready()
const app = instance.Application
// 获取分页模式下的总页数
const pages = await app.ActiveDocument.ActiveWindow.ActivePane.Pages.Count
console.log(pages)
}
是否显示文件名栏
ActiveDocument.SwitchFileName(Boolean) 显示/不显示文件名栏
需要连页模式下才生效,非连页模式下设置了也不会生效
文件名栏是指连页模式下,在内容开头会显示文件名相关栏
语法
表达式. ActiveDocument.SwitchFileName(Boolean)
表达式:文档类型应用对象
参数 Boolean
为 true
表示显示文件名栏,为 false
表示隐藏文件名栏。
示例
//@file=base.docx
async function example() {
await instance.ready()
const app = instance.Application
// 分页/连页模式切换
await app.ActiveDocument.SwitchTypoMode(true)
// 显示/不显示文件名栏
await app.ActiveDocument.SwitchFileName(false)
}
控制目录显示
ActiveDocument.ActiveWindow.DocumentMap
控制目录显示与否
语法
表达式.ActiveDocument.ActiveWindow.DocumentMap = Boolean
表达式:文档类型应用对象
Boolean
为 true
时显示目录,否则隐藏目录
示例
//@file=base.docx
async function example() {
await instance.ready()
const app = instance.Application
// 控制目录显示与否
app.ActiveDocument.ActiveWindow.DocumentMap = true
}
监听剪切板
Sub.ClipboardCopy
获取剪切板回调事件
语法
表达式.Sub.ClipboardCopy = Function
表达式:文档类型应用对象
返回值
属性 | 数据类型 | 说明 |
---|---|---|
copyId | String | 剪切板 id |
isRestoreFocus | Boolean | undefined |
text | String | 复制的内容 |
示例
//@file=base.docx
async function example() {
await instance.ready()
const app = instance.Application
// 获取剪切板回调事件
app.Sub.ClipboardCopy = e => {
console.log(e)
}
}
跳转到指定位置
ActiveDocument.ActiveWindow.Selection.GoTo()
GoTo() 方法可以协助我们跳转到页面的指定位置,例如指定页面或者指定的书签。
由于文字文档是流式排版,大文档时,跳转时间会比较长,建议加一个中间
loading
过渡效果。
语法
表达式.ActiveDocument.ActiveWindow.Selection.GoTo(What, Which, Count, Name)
表达式:文档类型应用对象。
参数
属性 | 数据类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
What | Number | 可选 | 指定区域或选定内容要移动到的项的类别。可以是 WdGoToItem](/client/api/Enum/Word/WdGoToItem) 常量之一。指定为 WdGoToItem.wdGoToBookmark ,表明需要跳转的类型是书签;指定为 WdGoToItem.wdGoToPage ,表明需要跳转的类型是页面 | |
Which | Number | 可选 | 指定区域或选定内容要移动到的项。可以是 WdGoToDirection 常量之一。指定为 WdGoToDirection.wdGoToAbsolute ,表明是绝对定位 | |
Count | Number | 可选 | 在文档中的项的数目。默认值为 1。仅正值有效。 | |
Name | String | 可选 | 如果那些参数是 wdGoToBookmark,则此参数指定一个名称。 |
返回值
返回到跳转后的页面。
示例 1
跳转到指定的页面
//@file=base.docx
// 跳转到指定页
async function example() {
await instance.ready()
const app = instance.Application
const page = await app.ActiveDocument.ActiveWindow.Selection.GoTo(
app.Enum.WdGoToItem.wdGoToPage,
app.Enum.WdGoToDirection.wdGoToAbsolute,
3
)
}
示例 2
跳转到指定的书签
//@file=base.docx
// 获取所有书签
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(
app.Enum.WdGoToItem.wdGoToBookmark, // 类型:Bookmark
app.Enum.WdGoToDirection.wdGoToAbsolute, // 定位
undefined, // 数量
'WebOffice' // 书签名
)
// 或者
await app.ActiveDocument.ActiveWindow.Selection.GoTo({
What: app.Enum.WdGoToItem.wdGoToBookmark,
Which: app.Enum.WdGoToDirection.wdGoToAbsolute,
Name: 'WebOffice' // 书签名
})
}
保存
ActiveDocument.Save()
保存文件的改动
JSSDK: v1.1.9+、WebOffice v2.3.1+ 支持
语法
表达式.ActiveDocument.Save()
表达式:文档类型应用对象
返回值
属性 | 数据类型 | 说明 |
---|---|---|
result | String | 保存状态 |
size | Number | 文件大小,单位 byte |
version | Number | 版本 |
保存状态说明:
保存状态 | 说明 |
---|---|
ok | 版本保存成功,可在历史版本中查看 |
nochange | 文档无更新,无需保存版本 |
SavedEmptyFile | 暂不支持保存空文件 触发场景:内核保存完后文件为空 |
SpaceFull | 空间已满 |
QueneFull | 保存中请勿频繁操作 触发场景:服务端处理保存队列已满,正在排队 |
fail | 保存失败 |
示例
//@file=base.docx
async function example() {
await instance.ready()
const app = instance.Application
// 保存文件的改动
const save = await app.ActiveDocument.Save()
console.log(save)
}
页面属性对象
ActiveDocument.Sections.Item(Index).PageSetup
页面属性对象
语法
表达式.ActiveDocument.Sections.Item(Index).PageSetup
表达式:文档类型应用对象
示例
//@file=base.docx
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
获取页面宽度
语法
表达式.ActiveDocument.Sections.Item(Index).PageSetup.PageWidth
表达式:文档类型应用对象
示例
//@file=base.docx
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)
}
排版到指定页
ActiveDocument.Sections.Item(Index).PageSetup.TypesetToPage(PageNum)
排版到指定页。 由于的 Word(文档)是流式排版,所以可以通过
TypesetToPage()
方法来指定首次加载的页数,让用户滚动的时候进一步加载页面数据。
语法
表达式.ActiveDocument.Sections.Item(Index).PageSetup.TypesetToPage(PageNum)
表达式:文档类型应用对象
参数
属性 | 数据类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
PageNum | Number | 是 | 指定首次加载的页数 |
示例
//@file=base.docx
async function example() {
await instance.ready()
const app = instance.Application
// 排版到指定页
const pageSetup = await app.ActiveDocument.Sections.Item(1).PageSetup
// 排版到指定页
await pageSetup.TypesetToPage(2)
}