我正在尝试使用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 ...'不存在 你能帮忙吗?
谢谢!
答案 0 :(得分:3)
我终于弄明白了
问题是在编辑MainDocumentPart之后我只调用了wordProcessingDocument.MainDocumentPart.Save()
。我没有调用Close()
方法。因此,ImagePart关系未被提交到包中。我认为Close()
方法会将关系“写”到docx包的word\_rels\document.xml.rels
部分!