我正在尝试通过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文件,但是文本框值不正确。
答案 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的几乎所有功能。您可以请求试用版进行全面测试。