通过Aspose在MS Powerpoint中查找给定单词

时间:2018-08-11 09:10:42

标签: c# .net aspose

我正在尝试通过Aspose检查MS Powerpoint是否包含给定单词,但是它不起作用。

这是我的班,负责检查ppt文件:

public class FindContentOfPpt
{
    private static bool IsParagraphContain(IParagraph paragraph, string content)
    {
        return paragraph.Portions.Any(port => port.Text.Contains(content));
    }

    private static bool IsTextBoxContain(ITextFrame textBox, string content)
    {
        return textBox.Paragraphs.Any(para => IsParagraphContain(para, content));
    }

    private static bool IsSlideContain(ISlide slide, string content)
    {
        var allTextBoxes = SlideUtil.GetAllTextBoxes(slide);
        return allTextBoxes.Any(textBox => IsTextBoxContain(textBox, content));
    }

    public bool IsContain(string filePath, string content)
    {
        var pres = new Presentation(filePath);

        return pres.Slides.Any(slide => IsSlideContain(slide, content));
    }
}

然后我调用它来检查给定的单词:

var isContain = new FindContentOfPpt().IsContain("Find and Replace.pptx", "Presentation");

尽管我的ppt文件包含一个内容为“ This is Presentation”的文本框,但isContain始终为false。我已经调试过了,该类可以打开ppt文件,但是文本框值不正确。

4 个答案:

答案 0 :(得分:1)

@ Nhan Phan,

我已经观察到您共享的要求,并且代码示例似乎还不错。但是,为了进一步调查该问题,我请您与所需的文本共享源演示文稿以查找。还请共享幻灯片索引,以便在PowerPoint中找到所需的文本。您可能也有使用不同大小写的文字的情况。请分享所要求的信息,以便我最后确认一下。

我是Aspose的开发人员。

答案 1 :(得分:0)

我已经解决了。问题来自“由于评估版本限制,文本已被截断”。这意味着我没有使用有效的许可证,并且所有文本框中的所有文本值都被截断了。

解决方案:我已请求试用许可证,并将其添加到我的项目中:

Aspose.Slides.License license = new Aspose.Slides.License();
license.SetLicense("my license file");

答案 2 :(得分:0)

@Nhan Phan

当您使用未经许可的API时,它将对所有文本提取施加限制。使用许可证时,API不会限制您使用任何功能。

答案 3 :(得分:0)

可能是因为“由于评估版本限制而被截断了。”。没有许可证时,它将限于Aspose的几乎所有功能。您可以请求试用版进行全面测试。