添加了AddImagePart的OpenXML图像未显示在document.xml.rels中

时间:2014-01-27 06:00:26

标签: xml image openxml docx

我正在尝试使用OpenXML SDK 2.5将图像添加到现有的Word 2010文档中。但是当我添加图像时,图像不会被嵌入。当我打开文档时,图像显示带有红色十字的占位符(就好像无法找到图像一样)。 我正在使用以下代码:

string mimetype = String.Empty;
// :
//Find mime type of the image here
// :
imagePart = wpd.MainDocumentPart.AddImagePart(mimetype);

using (FileStream stream = new FileStream(filename, FileMode.Open))
{
    image = new Bitmap(stream);
    cy = Convert.ToUInt32(image.PhysicalDimension.Height);
    cx = Convert.ToUInt32(image.PhysicalDimension.Width);
    imagePart.FeedData(stream);
    stream.Close();
 }
 Paragraph para = FindParagraphInAppendix(....); //Find the paragraph to add
 if (para != null)
    AddImageToParagraph(para, wpd.MainDocumentPart.GetIdOfPart(imagePart),txt, filename,cx,cy);
 else
      wpd.MainDocumentPart.Document.Body.Append(GetImageWithPara(wpd.MainDocumentPart.GetIdOfPart(imagePart), filename, cx, cy));
wpd.Package.CreateRelationship(imagePart.Uri, System.IO.Packaging.TargetMode.External,wpd.MainDocumentPart.GetIdOfPart(imagePart));
wpd.MainDocumentPart.Document.Save();

在AddImageToParagraph的代码中,我按如下方式添加图像:

Pic.BlipFill blipFill1 = new Pic.BlipFill();
A.Blip blip1 = new A.Blip() { Embed = relationshipid,
                             CompressionState = A.BlipCompressionValues.Print };
A.BlipExtensionList blipExtensionList1 = new A.BlipExtensionList();

当我打开使用Winzip生成的文件时,document.xml.rels文件不包含与嵌入图像关联的关系ID。

当我打开使用OpenXML Productivity工具并验证XML时,我收到错误:“属性'hxxp://schemas.openxmlformats..../relationships:embed'引用的关系'R75a8cc179 ...'不存在 你能帮忙吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

我终于弄明白了 问题是在编辑MainDocumentPart之后我只调用了wordProcessingDocument.MainDocumentPart.Save()。我没有调用Close()方法。因此,ImagePart关系未被提交到包中。我认为Close()方法会将关系“写”到docx包的word\_rels\document.xml.rels部分!