C# 如何使用C Interop检查形状/图像位于word文档的哪一页
使用 我可以替换当前文档中的第一个图像 如何检测图像位于哪一页,或者在这种情况下,如何检测图像是否位于第一页C# 如何使用C Interop检查形状/图像位于word文档的哪一页,c#,.net,ms-word,interop,office-interop,C#,.net,Ms Word,Interop,Office Interop,使用 我可以替换当前文档中的第一个图像 如何检测图像位于哪一页,或者在这种情况下,如何检测图像是否位于第一页 我想替换第一页上的一个特定图像,那么是否有可能提取该图像或检查该图像是否是我正在寻找的图像?我在发布问题后发现的一种方法是生成图像的哈希代码: var shapes = currentDocument.Shapes; foreach (Shape shape in shapes) if (shape.Type == MsoShapeType.msoPicture) {
我想替换第一页上的一个特定图像,那么是否有可能提取该图像或检查该图像是否是我正在寻找的图像?我在发布问题后发现的一种方法是生成图像的哈希代码:
var shapes = currentDocument.Shapes;
foreach (Shape shape in shapes)
if (shape.Type == MsoShapeType.msoPicture)
{
InlineShapeHelper.ReplaceInlineShape(...);
break;
}
但我仍然对其他更好、更优雅的解决方案感兴趣,并有可能了解页码。回答您的具体问题:如何检测图像位于哪一页 get_Information方法可以使用枚举Word.WdInformation.wdActiveEndPageNumber返回给定范围的页码 形状始终定位到文档中的特定字符-这是Shape Shape.Anchor的范围属性 下面的代码示例演示如何循环文档中的形状,获取它们的名称和页码。请注意,如果Shape.Name是已知的,则可以直接拾取Shape对象Shapes[Name As String]。但在插入Shape时,您需要小心使用Word应用程序生成的名称,因为Word可以随时更改它为自己指定的名称。如果使用代码指定名称,则该名称保持不变-Word不会更改它
var shapes = currentDocument.Shapes;
foreach (Shape shape in shapes)
if (shape.Type == MsoShapeType.msoPicture)
{
int hash = shape.GetHashCode();
InlineShapeHelper.ReplaceInlineShape(...);
break;
}
Word.ShapeRange shpRange = doc.Content.ShapeRange;
foreach (Word.Shape shp in shpRange)
{
System.Diagnostics.Debug.Print(shp.Name + ", " + shp.Anchor.get_Information(Word.WdInformation.wdActiveEndPageNumber).ToString());
}