开放平台
平台概述
开发者文档
  • API文档
  • SDK文档
  • 接入指南
  • 集成方案
产品功能
  • 新手入门
  • 产品功能
常见问题首页
平台概述
开发者文档
  • API文档
  • SDK文档
  • 接入指南
  • 集成方案
产品功能
  • 新手入门
  • 产品功能
常见问题首页
  1. Harmony SDK
  • DEMO示例
  • JS SDK
    • web 点播 sdk
      • 更新记录
      • 点播上传SDK
    • web 观播 sdk
      • 产品介绍
      • 快速接入
      • 对接示例
      • 观看直播
      • 文档白板
      • 互动连麦
      • 暖场视频
      • 全局事件
      • 全局错误码
      • 房间消息说明
      • 版本更新记录
      • 互动工具
        • 互动-抽奖
        • 互动-礼物
        • 互动-签到
        • 互动-问卷
        • 互动-公告
        • 互动-商品
        • 互动-问答
        • 互动-推屏卡片
        • 互动-快问快答
        • 互动-聊天
        • 互动-优惠券
        • 互动-点赞
      • 直播间拓展功能
        • 资料下载
        • 观看限制验证
        • 观看协议
        • 回放章节
  • iOS SDK
    • 整体介绍
    • 快速接入
    • SDK 登录
    • 暖场视频
    • 视频轮询
    • 直播彩排
    • 高级美颜
    • 云导播
    • 观看协议
    • 文档白板演示
    • 聊天功能
    • 视频直播
      • 发起视频直播
      • 观看视频直播
    • 互动直播
      • 观众互动
      • 推流摄像头
      • 互动直播API
      • 主播发起互动直播
      • 嘉宾加入互动直播
    • 无延迟直播
      • 主播发起无延迟直播
      • 观众观看无延迟直播
    • 互动工具
      • 互动-抽奖
      • 互动-礼物
      • 互动-签到
      • 互动-问卷
      • 互动-章节打点
      • 互动-公告
      • 互动-商品
      • 互动-计时器
      • 互动-问答
      • 互动-推屏卡片
      • 互动-快问快答
      • 互动-优惠券
      • 互动-点赞
    • 直播间拓展能力
      • 直播间特色功能配置项
      • 文件下载
      • 修改角色昵称
      • 观看权限校验
      • 投屏
      • 虚拟人数
    • 观看回放
      • 观看回放
    • 防录屏
      • 跑马灯
    • 字段说明
      • 互动活动详情字段
      • 错误码说明
      • 常量定义
      • 活动详情字段说明
    • 版本更新说明
      • 版本更新信息
      • v2.3.0 到 v2.4.0 升级说明
      • v3.0.1 到 v3.2.0 升级说明
      • V2.9.0到v3.0.1升级说明
      • v6.3.0
      • v6.2.1
      • v3.2.0 到 v4.0.1
      • v2.7.0 到 v2.8.0、v2.9.0 升级说明
      • 6.5.0
      • v5.0.x 到 v6.0.0
      • v6.4.0
  • Adroid SDK
    • 整体介绍
    • 快速接入
    • SDK登录
    • 暖场视频
    • 视频轮巡功能
    • 直播彩排
    • 高级美颜
    • 云导播功能
    • 观看协议
    • 文档白板
    • 聊天功能
    • 房间消息
    • 信息采集说明
    • 视频直播
      • 发起视频直播
      • 观看视频直播
    • 互动直播
      • 互动直播API
      • 主播发起互动直播
      • 嘉宾加入互动直播
      • 观众观看互动直播
    • 无延迟直播
      • 主播发起无延迟直播
      • 观众观看无延迟直播
    • 互动工具
      • 互动-抽奖
      • 互动-礼物
      • 互动-签到
      • 互动-问卷
      • 互动-公告
      • 互动-商品
      • 互动-计时器
      • 互动-问答
      • 互动-推屏卡片
      • 互动-快问快答
      • 互动-优惠券
      • 互动-点赞
    • 直播拓展功能
      • 修改角色名称
      • 文件下载
      • 投屏演示
      • 虚拟人数
      • 观看权限校验
      • 直播间特色功能配置项
    • 观看回放
      • 观看回放/点播
    • 防录屏
      • 直播水印
      • 跑马灯
    • 字段说明
      • 房间消息字段说明
      • 聊天消息字段说明
      • 活动详情字段说明
    • 更新记录
      • 更新记录
    • 版本更新说明
      • v6.4.0
      • v6.3.0
      • v6.2.3
      • v6.2.1
      • v6.2.0
      • v6.1.0
      • v6.0.0
      • v5.0.0
      • v4.1.0
      • v4.0.0
      • v3.3.0
  • Harmony SDK
    • 整体介绍
    • 快速接入
    • SDK初始化
    • 登录&登出
    • 活动基础信息
    • 观看协议
    • 观看权限校验&预约
    • 开屏海报
    • 暖场视频
    • 观看直播
    • 观看回放/点播
    • 聊天
    • 房间消息
    • 在线人数&热度
    • 文档/白板
    • 版本更新
    • 私聊
    • 播放器错误码
    • 互动工具
      • 互动-问答
      • 互动-问卷
      • 互动-公告
      • 互动-抽奖
      • 互动-签到
      • 互动-计时器
      • 互动-礼物
      • 互动-互动有礼
      • 互动-快问快答
      • 互动-口令红包
      • 互动-推屏卡片
      • 互动-商品
      • 互动-优惠卷
      • 互动-观看有礼
      • 互动-点赞
    • 防录屏
      • 播放器水印&跑马灯
    • 菜单
      • 自定义菜单
      • 文件下载
      • 概要总结
      • 回放列表
      • 邀请卡
  • 微信小程序 SDK
  • 相关协议
    • 微吼直播 SDK 隐私政策
    • 微吼直播 SDK 开发者使用规范
  1. Harmony SDK

文档/白板

企业、课堂培训场景下,文档和白板是必不可少的直播工具,SDK支持文档及白板的观看。

核心类#

类名类描述
VHDoc文档控制器
VHDocView文档展示组件

基础属性#

属性属性描述
VHWatermarkConfig文档水印
VHDocCallbackInterface文档回调类

关键方法#

方法方法描述
VHDoc.init文档初始化
VHDocView构建文档组件
VHDoc.zoomReset文档还原
VHDoc.zoomIn文档放大
VHDoc.zoomOut文档缩小

文档初始化#

方法 API
  public init(webinar: VHWebinarData, water: VHWatermarkConfig, listener: VHDocCallbackInterface): number

接口入参#

参数名称是否必须示例备注
webinar是VHWebinarData活动基础配置
water是xxxVHWatermarkConfig 文档水印配置
listener是xxx文档回调事件

代码示例#

在组件生命周期aboutToAppear内进行初始化,设置活动信息、水印信息、回调类
@Component
export struct VHDocPageComponent {
  @Require webinars: VHWebinarData;
  @Require playConfig: VHPlayerConfig;
  //文档id集合
  @State documentViews: Array<string> = new Array();
  //选择文档id
  @State selectCid: string = '';
  private docController: VHDoc = new VHDoc();
  private controller: TabsController = new TabsController()
  @State showDoc: boolean = true;
  private selectDocument: number = 0;
  private contentWidth: number = 0;
  private contentHeight: number = 0;

  aboutToAppear(): void {
    this.docController.init(this.webinars, this.playConfig?.water!, this);
  }
}

构建文档组件#

方法 API
@Component
export struct VHDocView {
  /**
   * @description  文档控制器
   * */
  @Require docController:VHDoc;
  /**
   * @description 文档id
   * */
  @Require docId:string;
 }

代码示例#

在布局文件中添加,通过Tabs加载VHDocView。
build() {
    Stack({alignContent:Alignment.Bottom}) {
      Tabs({ barPosition: BarPosition.Start, controller: this.controller }) {
        ForEach(this.documentViews, (doc: string, index: number) => {
          TabContent() {
            VHDocView({ docController: this.docController, docId: doc, isDocPaint: false })
              .width('100%')
              .height('100%')
              .onSizeChange((oldValue: SizeOptions, newValue: SizeOptions) => {
                //重置文档视图大小。
                this.contentWidth = newValue.width as number;
                this.contentHeight = newValue.height as number;
                //********  重要:需要重置文档画布大小 ********/
                this.docController.setDocumentViewSize(doc, this.contentWidth, this.contentHeight);
              })
          }
          .tabBar(this.tabBuilder(doc, index))
          .width('100%')
          .height('100%')
        }, (doc: string, index: number) => {
          if (this.selectCid == doc) {
            if (this.selectDocument != 0) {
              clearInterval(this.selectDocument);
              this.selectDocument = 0;
            }
            this.selectDocument = setInterval(() => {
              this.controller.changeIndex(index);
              if (this.selectDocument != 0) {
                clearInterval(this.selectDocument);
                this.selectDocument = 0;
              }
            }, 100);
          }
          return doc;
        })
      }
      .barHeight(0) //可通过设置此参数隐藏tab
      .opacity(this.showDoc == true ? 100 : 0) //通过设置透明度来显示和隐藏,避免重新加载docview导致的画笔不全问题
      .animationDuration(0)
      .width('100%')
      .height('100%')
      .scrollable(false)
      .zIndex(0)
    }
    .width('100%')
    .height('100%')
  }

文档还原#

方法 API
public zoomReset()

代码示例#

通过按键触发放大
Image($r("app.media.reset"))
  .width("30vp")
  .height("30vp")
  .onClick(()=>{
    this.docController.zoomReset();
  })

文档放大#

方法 API
public zoomIn()

代码示例#

通过按键触发放大
Image($r("app.media.big"))
  .width("30vp")
  .height("30vp")
  .onClick(()=>{
    this.docController.zoomIn();
  })

文档缩小#

方法 API
public zoomOut()

代码示例#

通过按键触发缩小
Image($r("app.media.small"))
  .width("30vp")
  .height("30vp")
  .onClick(()=>{
    this.docController.zoomOut();
  })

文档水印#

播放器水印主要通过在播放器层级上增加图片并控制位置显示实现。参考防录屏

文档回调类#

回调方法 API

代码示例#

通过回调监听文档添加和移除。通过documentViews存储文档id,通过VHDocView进行加载

文档数据结构#

文档类型
VHDocType类型备注
VHDocType_Doc0文档
VHDocType_Board0白板
修改于 2025-11-14 10:04:37
上一页
在线人数&热度
下一页
版本更新
Built with