使用
var shapes = currentDocument.Shapes;
foreach (Shape shape in shapes)
if (shape.Type == MsoShapeType.msoPicture)
{
InlineShapeHelper.ReplaceInlineShape(...);
break;
}
我可以替换“ currentDocument”中的第一个图像。
如何检测图像位于哪一页(或者在这种情况下也足够:如果图像在第一页上)?
我想替换第一页上的特定图像,所以甚至有可能提取图像或检查图像是否是我要寻找的图像?
答案 0 :(得分:1)
要回答您的特定问题:如何检测图像位于哪一页?
get_Information
方法可以使用枚举Range
返回给定Word.WdInformation.wdActiveEndPageNumber
的页码。
Shape
始终锚定到文档中的特定字符-这是Shape(Range
)的Shape.Anchor
属性。
以下代码示例演示了如何在文档中循环显示Shapes,获取其名称和页码。请注意,如果已知Shape.Name
,则可以直接拾取Shape
对象(Shapes["Name As String"]
)。但是,当插入Shape时,您需要小心Word应用程序生成的名称,因为Word可以随时更改其为其分配的名称。如果使用代码分配了名称,则该名称将保持不变-Word不会更改它。
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());
}
答案 1 :(得分:0)
发布问题后,我发现的一种方法是生成图像的哈希码:
var shapes = currentDocument.Shapes;
foreach (Shape shape in shapes)
if (shape.Type == MsoShapeType.msoPicture)
{
int hash = shape.GetHashCode();
InlineShapeHelper.ReplaceInlineShape(...);
break;
}
但是我仍然会对其他更好,更优雅的解决方案以及了解页码的可能性感兴趣。