.如何在Net word中插入图片
要使用代码将图片插入word,首先必须了解图片在word中以何种结构存在。让我们一起分析一下Word的图片结构。
图片如何存在于主文件中
在Document.xml中,文件以xml节点属性的形式显示下图1-1所示节点的图片。
图1-1
图片物理结构
Word的图片物理文件以什么结构存在?照片位于word/media路径下。换句话说,word本身存储Word的物理文件。如下图1-2所示。
图片如何与文档主题结构相关联?
加载Word时,不查找物理文件,而是查找与主文件相关联的关系文件(Document.xml.rels)(请参见下图1-3,其中Id=")
Target='/media/image.jpg '是需要关联的大象路径。
Id='R791d0621ac094c72 '是图片的唯一主键。也就是说,与主键相关联的主键。文件包含Id为“R791d0621ac094c72”的节点属性。主键节点属性如下:
a : blip xmlns : r='r : embed=' r 791d 0621 AC 094 c 72 ' c state=' print '
这使您可以将我的物理路径与主文件相关联。
图1-3
加载Word时,图片加载顺序为:document . XMLdocument . XML . relsmedia
首先加载document.xml中的段落属性,加载连续文本,加载w:drawing标签,查找drawing的唯一id,从document.xml.rels加载Relationship属性,然后查找word/。代码在word中插入图片
如果知道Word的图片结构,就可以根据word定义的规则插入图片。示例代码如下
string filename=@ ' hello word . docx '
using(wordprocessingdocument wd=word(文件名,word))
{
varmain docx=wd . addmaindocumentpart();
var docx=new Documen();
MainDocx。Document=docx
var body=main docx . document . appendchild(new documen());
var imgPathList=new Liststring();
ImgPa(@ ' Te;);//更改为自己的本地照片路径
ImgPa(@ ' Te;);//更改为自己的本地照片路径
ImgPa(@ ' Te;);//更改为自己的本地照片路径
foreach(var img filename in img path list)
{
image part image part=maindocx . addimagepar);
using(filestream stream=new filestream(img filename、filemode.open))
{
ImagePart。FeedData(流);
}
#region添加图片
Var element=
New Drawing(
New Documen(
Newdocumen () {CX=3672000,cy=2134800},
New Documen()
{
LeftEdge=0L,
TopEdge=0L,
RightEdge=0L,
BottomEdge=0L
},
New Documen()
{
Id=(UInt32Value)1U、
Name='Picture1 '
标题=“投标照片”
},
New Documen(
new documen(){ nochangeaspect=true })、
New Documen(
New DocumenData(
New Documen(
New Documen(
New Documen()
{
Id=(UInt32Value)0U,
Name='New Bitmap Image.jpg '
},
New Documen()、
New Documen(
New Documen(
New DocumenExtensionList(
New DocumenExtension()
{
Uri=
{ 28 a 0092 b-c 50 c-407 e-a 947-70 e 740481 c 1 c 1 c }’
})
)。
{
embed=maindocx . getidofpart(imagepart),
CompressionState=
DocumenCompressionValues。Print
},
New Documen(
New Documen())、
New Documen(
New Documen(
New Documen() {X=0L,Y=0L},
Newdocumen () {CX=3672000,cy=2134800})、
New Documen(
New Documen()
)。
{Preset=Documen})
)。
{ Uri='})
)。
{
distancefromtop=(uint 32 value)0u,
distancefrombottom=(uint 32 value)0 u,
distancefromleft=(uint 32 value)0 u,
distancefromright=(uint 32 value)0 u,
EditId='50D07946 '
});
body . appendchild(new paragraph(new run(element)));
#endregion
}
MainDocx。document . Save();
Proce(文件名);
}
结果如图1-4所示。
图1-4
注:您可以直接运行代码。