从 2021.4.26 之后执行的动态转换任务,会根据 ppt 中内容,生成对应的备注文件。
用户可以自行读取备注文件,根据业务需要进行备注的展示。
注意:2021-04-26 之前已经转换完成的文档没有备注文件供下载。
动态转换完成后会在固定路径下为每一页的备注生成两个文件:txt 文件和 json 文件。这些文件也会存在与动态转换资源包中。
txt 文件是不包含任何样式的备注纯文本;json 文件包含了所有的备注样式属性,用户可以用于还原 ppt 文档中的备注样式。请根据业务需要选择使用的文件。
ppt 总页数的获取方法:
- 后端 api 查询转换进度在完成转换后,会返回完整的数组长度。
获取当前页面 slideIndex:
可以通过 PPT 与页面管理 中获取room.state.sceneState
对象,内部包含了所有场景的信息,如果是动态 ppt 页面那场景对象中会存在ppt
属性,可以通过ppt
属性下的src
属性来判断当前的 ppt 页码。
如:pptx://cover.herewhite.com/dynamicConvert/{{uuid}}/1.slide
的 slideIndex 为 1。
// taskUUID 为转换任务发起后,返回的 taskUUID;slideIndex 是文档页号,从 1 开始
https://convertcdn.netless.link/dynamicConvert/{{taskUUID}}/notes/text{{slideIndex}}.txt
注意:如果 ppt 中当前页没有备注,则对应页的备注文件不会生成,即请求上述路径文件可能返回 404,需要用户自行处理异常情况。
当动态转换支持用户自定义存储后,域名部分会由
https://convertcdn.netless.link/
会变更为用户自定义域名和存储路径,其他结构保持不变。
txt 存放了当前页中的所有文本字符串,但是没有样式。如果需要还原样式请解析 json 文件。
文本中的换行符将会存为\n。
动态转换完成后会在固定路径下生成每一页 ppt 的备注 json 文件。同时,该文件也会存在与动态转换资源包中。
// taskUUID 为转换任务发起后,返回的 taskUUID;slideIndex 是文档页号,从 1 开始
https://convertcdn.netless.link/dynamicConvert/{{taskUUID}}/notes/note{{slideIndex}}.json
注意:如果 ppt 中当前页没有备注,则对应页的备注文件不会生成,即请求上述路径文件可能返回 404,需要用户自行处理异常情况。
当动态转换支持用户自定义存储后,域名部分会由
https://convertcdn.netless.link/
会变更为用户自定义域名和存储路径https://domain/bucketPath/
,其他结构保持不变。
由于备注支持粗斜体、上下标、下划线等文字样式,因此我们将文字样式一同放在 json 文件中,用户可以根据需要自行渲染,也可以只取文字内容。
json 示例格式如下:
// 以下数字单位没有说明均为 px
[ // 数组中每一个对象内容是一个段落
{
"buchar": "□", // 段落符号,不存在则为空
"indent": 60.0, // 段落首行缩进值,负数为悬挂缩进,正数为首行缩进,不存在则为 0
"marginLeft": 120.0, // 段落距离左边距值,不存在则为 0
"marginRight": 0.0, // 段落距离左边距值,不存在则为 0
"align": "l", // 可选值 l/ctr/r/dist/just/justLow/thaiDist,分别对应 左/居中/右/分散/两端/低两端/泰语分散对齐,不存在则为 l
"runs": [ // 数组中每一个对象内容是一个分节,可能会因为样式等不同原因分节
{
"wordSpace": 0.0, // 字间距,不存在则为 0
"baseline": -10.0, // 文字基线,单位为百分比,负数为下标,正数为上标,如果单纯实现上下标功能可以仅通过正负数判断,不存在则为 0
"underLine": "DashLongHeavy", // 下划线类型,可选值为 空/下划线类型值,不存在则为空
"strikeThrough": false, // 删除线,不存在则为 false
"bold": false, // 粗体,不存在则为 false
"italic": false, // 斜体,不存在则为 false
"text": "这里是备注", // 文本内容,不存在则为空
"runType": "text" // 文本类型,可选值 text/br, 对应 文本/换行符,不存在则为 text
}
]
},
...,
{
"buchar": "1.",
"indent": 60.0,
"marginLeft": 0.0,
"runs": [
{
"wordSpace": 164.0,
"baseline": 0.0,
...
}
]
}
]
其中下划线的类型枚举值的详细实现可以参考 https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.wordprocessing.underlinevalues?view=openxml-2.8.1
如果仅实现简单的下划线可以通过判断 underLine 字段是否存在。
其中删除线的类型枚举值的详细实现可以参考 https://docs.microsoft.com/zh-cn/dotnet/api/documentformat.openxml.drawing.textstrikevalues?view=openxml-2.8.1
如果仅实现简单的删除线可以通过判断 strikeThrough 字段是否存在。
其中对齐方式的类型枚举值的详细实现可以参考 https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.drawing.textalignmenttypevalues?view=openxml-2.8.1
绝大部分语言对齐方式都在 l/ctr/r/dist/just 之中。
如果想完全还原备注样式请参考注释进行实现。