【问题标题】:How to check if a PowerPoint slide contains an image如何检查 PowerPoint 幻灯片是否包含图像
【发布时间】:2020-01-20 21:44:54
【问题描述】:

我正在解析一个 PowerPoint 文件,一些幻灯片包含图像。如何检测幻灯片中是否有图片?

我正在检查幻灯片中的所有形状,但没有看到任何可以让我知道是否有图像的属性。目前,如果我要检查 shape.AlternativeText,我注意到它们可能包含带有扩展名 .png、.jpg、.gif 等的图像名称或路径。这让我知道哪些形状包含图像,但这并不适用于所有图像和不一致。

有人知道检测图像的方法吗? shape.hasImage 会很好。

提前致谢。

【问题讨论】:

  • 尝试检查填充类型shape.Fill.FillType == FillFormatType.Picture。还要检查here 可能有用的sn-p。
  • 我在 Fill 下找不到“FillType”,我设法找到了 Fill.textureName 和 TextureType。两者都没有帮助。您在哪里看到 FillType?
  • 抱歉,它来自不同的框架,而不是互操作。您没有提到您要解析的PowerPoint演示文稿文件的格式。如果是 pptx,那么您可以 simply unzip file 并将幻灯片解析为 xml,您将在其中找到 标签。

标签: c# powerpoint office-interop


【解决方案1】:

我知道这是一个迟到的答案。但它可能对其他人有所帮助。

通过使用下面的代码,您可以找到每张幻灯片上的图像数量。

  for(int i=1;i<= Pres.Slides.Count;i++) 
      {

          Microsoft.Office.Interop.PowerPoint.Shapes shapes = Pres.Slides[i].Shapes;

            foreach(Microsoft.Office.Interop.PowerPoint.Shape shape in shapes)
            {
                if (shape.Type == Microsoft.Office.Core.MsoShapeType.msoPicture)
                {
                   // set a counter or 2 dimensional  array to store how many shapes are in each slide.
                }

            }
     }

【讨论】:

    【解决方案2】:

    图像可以作为图像放置,它们可以放置在占位符中,或者作为图片填充到形状或图片填充到背景或作为链接图像。因此,找到所有实例将是更多的工作。这会找到一张放在幻灯片上但不在占位符中的照片:

    Sub FindPicture()
      Dim oSlide As Slide
      Dim oShape As Shape
      For Each oSlide In ActivePresentation.Slides
        For Each oShape In oSlide.Shapes
          If oShape.Type = msoPicture Then
            MsgBox oShape.Name
          End If
        Next oShape
      Next oSlide
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 2021-08-08
      • 2014-02-08
      • 1970-01-01
      • 2014-07-14
      • 1970-01-01
      相关资源
      最近更新 更多