WPS开发平台接入演示文档获取每一页内容

阅读次数 17

使用WPS开发平台接入演示文档,可以获取每一页PPT的内容按照fd52a0a23b9addbda42cb7ec5fd3767.jpgad27872250105aea28f862ab7bbeef1.jpg这样调用,返回数据为空

3 Answers

您好FindBySlideID2方法返回的是Slide幻灯片对象 需要您结合Slide方法https://solution.wps.cn/docs/client/api/PPT/Slide.html Shapes方法https://solution.wps.cn/docs/client/api/PPT/Shapes.html 进一步获取所需要的内容信息

例:获取文本框内容

 await instance.ready()

  const app = instance.Application

  let slideId = await app.ActivePresentation.SlideShowWindow.View.Slide.SlideID

  // 根据 SlideID 获取对应 PPT 的信息
  const slide = await app.ActivePresentation.Slides.FindBySlideID2(slideId)
  console.log(slide)
  const shapes = await slide.Shapes
  const shape =
    await app.ActivePresentation.SlideShowWindow.View.Slide.Shapes.Item(1)
  const type = await shape.Type

  console.log(type, 'type')
  // 表示 Shape 对象中的文字框架。包含文本框中的文字框架的属性和控件的对齐方式和定位的文本框架的方法
  const TextFrame = await shape.TextFrame
  const text = await TextFrame.TextRange.Text
  console.log(text)

获取图片信息

 await instance.ready()

  const app = instance.Application

  let slideId = await app.ActivePresentation.SlideShowWindow.View.Slide.SlideID

  // 根据 SlideID 获取对应 PPT 的信息
  const slide = await app.ActivePresentation.Slides.FindBySlideID2(slideId)
  console.log(slide)
  const shapes = await slide.Shapes
  const shape =
    await app.ActivePresentation.SlideShowWindow.View.Slide.Shapes.Item(3)
  const type = await shape.Type

  console.log(type, 'type')
  const image = await shape.GetImageInfo()
  console.log(image)

您好,实际场景需要您循环遍历一下shape,然后通过type判断shape类型再结合上述方法进一步获取对应内容

 await instance.ready()

  const app = instance.Application

  let slideId = await app.ActivePresentation.SlideShowWindow.View.Slide.SlideID

  // 根据 SlideID 获取对应 PPT 的信息
  const slide = await app.ActivePresentation.Slides.FindBySlideID2(slideId)
  console.log(slide)
  const shapes = await slide.Shapes
  const num = await shapes.Count
  console.log(num)
  for (let i = 1; i <= num; i++) {
      const shape = shapes.Item(i)
      const type = await shape.Type
      console.log(type,i,'type')  // 1 图片  3文本框
  }

image.png

你好,试了你刚才提供的确实是可以拿到的,但是image.png我看你这个是传递了 await app.ActivePresentation.SlideShowWindow.View.Slide.Shapes.Item(3), await app.ActivePresentation.SlideShowWindow.View.Slide.Shapes.Item(1) Item(?)里面的下标,如果我不知道是对应第几个或者有多少个的话,怎么办呢,又怎么去拿到所有的文字和图片里面的内容

您好,回复里重新补充了您的疑问

好的,我试试

img_v3_02ia_78f1d620-404f-4077-82a0-662cd124533g.jpgimg_v3_02ia_724fcebf-9fe1-4302-ac79-093094bc65eg.jpg你好,像这种的我点击看应该是一张图片,为啥没有识别出来,还是说还是需要其他操作,控制太打印的错误也很多,我的意图就是想拿到这个内容,这个要怎么解决呢

有问题的这一页可以提供一下吗,我反馈看看

你好,这是文件下载地址 https://api.hostize.com/files/1SJIYv7NIU/download/file.pptx 麻烦看下,这个里面大多识别都不行

还有那个我看那些公式在用这个开放平台预览之后就变成了图片,里面的公式内容获取不到,这个你那边是有什么办法解决吗

image.png image.png 有些复杂的公式识别不出来,type是11,12这种,type的值有哪些分别对应什么

您好,11是插入的外部关联对象,12是组合shape,可以试试const image = await shape.GetShapeImage()导出为图片