使用PowerShell在Word文档指定位置插入图片的技术咨询
在Word中通过PowerShell定位插入的图片
你当前用InlineShapes.AddPicture插入的图片是嵌入型,会跟随文本流排版,无法自由定位。要实现指定位置放置图片,有两种可行方案:
方案1:将嵌入型图片转为浮动型再设置位置
先插入InlineShape,再将其转换为Shape对象,之后即可设置绝对位置:
$word = New-Object -ComObject Word.Application $word.visible = $true $document = $word.documents.Add() $selection = $word.selection # 插入嵌入型图片 $newInline = $selection.InlineShapes.AddPicture($path) $newInline.Height = 50 $newInline.Width = 150 # 转换为浮动型Shape $newShape = $newInline.ConvertToShape() # 设置相对于页面左上角的位置(单位:磅) $newShape.Top = 100 $newShape.Left = 200 # 可选:设置环绕方式,比如浮于文字上方 $newShape.WrapFormat.Type = 3 # 3对应wdWrapSquare,可按需调整
方案2:直接插入浮动型图片并指定位置
跳过InlineShapes,直接用Shapes.AddPicture插入并设置位置,更直接:
$word = New-Object -ComObject Word.Application $word.visible = $true $document = $word.documents.Add() # 直接插入浮动型图片,同时指定位置和大小 $newShape = $document.Shapes.AddPicture( $path, $false, # LinkToFile:是否链接到原文件 $true, # SaveWithDocument:是否随文档保存 200, # Left:距页面左侧的距离(磅) 100, # Top:距页面顶部的距离(磅) 150, # Width:图片宽度 50 # Height:图片高度 ) # 可选:设置环绕方式 $newShape.WrapFormat.Type = 3
关键说明
- 位置单位是磅,1磅≈0.35毫米,可根据需求换算调整
WrapFormat.Type的常用值:- 1:
wdWrapInline(嵌入型,即原代码的效果) - 3:
wdWrapSquare(四周环绕型) - 5:
wdWrapTopBottom(上下环绕型) - 7:
wdWrapFront(浮于文字上方) - 8:
wdWrapBack(衬于文字下方)
- 1:
内容的提问来源于stack exchange,提问作者ndubs
相关产品推荐
相关产品推荐

