我创建了一个简单的 C# 方法,目的是查明 Word 文档是否包含图像:
public bool ContainsImage(string fileName)
{
using (var wordDocument = WordprocessingDocument.Open(fileName, false))
{
return wordDocument.MainDocumentPart.Document.Descendants<Graphic>().Any();
}
}
这适用于我的示例文件,但我很困惑它是否适用于每个 docx 文档。 我研究了处理 Word 文档中图像的解决方案,发现了很多不同的方法来检测图像:
Decendants<Graphic>()
- 按描述工作Decendants<Inline>()
- 也有效Decendants<Drawing>()
- 不起作用Decendants<Picture>()
- 不起作用正确的做法是什么?我不在乎图像位于文档中的位置,只要它可见即可。无论它是在背景中、在前面还是在文本之间等等,都没有关系。 这些对象(图形、内联、绘图、图片)之间有什么区别?
我认为最好的选择是
Decendants<Inline>()
,因为它会根据您的要求获取所有图像。
您也可以使用
Decendants<Graphic>()
获取所有图像,但它还会获取图形、图表等元素,这些不是您要查找的图像。
我不知道
Decendants<Picture>()
,但是Decendants<Drawing>()
不是你需要的,因为图像不是图画。