Image 无法使用open xml将图像添加到powerpoint演示文稿中

Image 无法使用open xml将图像添加到powerpoint演示文稿中,image,powerpoint,openxml,Image,Powerpoint,Openxml,我正在使用以下代码将新幻灯片添加到ppt文件并添加图像。我正在使用OpenXML2.5SDK 正在添加新幻灯片,但未添加图像。这个代码有什么错误吗 int position = 1; using (PresentationDocument presentationDocument = PresentationDocument.Open("c.pptx", true)) { PresentationPart presentationPart = presentationDocument.Pr

我正在使用以下代码将新幻灯片添加到ppt文件并添加图像。我正在使用OpenXML2.5SDK

正在添加新幻灯片,但未添加图像。这个代码有什么错误吗

int position = 1;
using (PresentationDocument presentationDocument = PresentationDocument.Open("c.pptx", true))
{

  PresentationPart presentationPart = presentationDocument.PresentationPart;

  Slide slide = new Slide(new CommonSlideData(new ShapeTree()));

  NonVisualGroupShapeProperties nonVisualProperties = slide.CommonSlideData.ShapeTree.AppendChild(new NonVisualGroupShapeProperties());
  nonVisualProperties.NonVisualDrawingProperties = new NonVisualDrawingProperties() { Id = 1, Name = "" };
  nonVisualProperties.NonVisualGroupShapeDrawingProperties = new NonVisualGroupShapeDrawingProperties();
  nonVisualProperties.ApplicationNonVisualDrawingProperties = new ApplicationNonVisualDrawingProperties();

  // Specify the group shape properties of the new slide.
  slide.CommonSlideData.ShapeTree.AppendChild(new GroupShapeProperties());

  // Create the slide part for the new slide.
  SlidePart slidePart = presentationPart.AddNewPart<SlidePart>();


  // Save the new slide part.
  slide.Save(slidePart);
  string imgId = "rId" + new Random().Next(2000).ToString();
  ImagePart imagePart = slidePart.AddImagePart(ImagePartType.Png, imgId); 

  using (FileStream stream = new FileStream("a.png", FileMode.Open))
  {
    stream.Position = 0;
    imagePart.FeedData(stream);
  }

  slide.Save(slidePart);

  // Modify the slide ID list in the presentation part.
  // The slide ID list should not be null.
  SlideIdList slideIdList = presentationPart.Presentation.SlideIdList;

  // Find the highest slide ID in the current list.
  uint maxSlideId = 1;
  SlideId prevSlideId = null;

  foreach (SlideId slideId in slideIdList.ChildElements)
  {
    if (slideId.Id > maxSlideId)
    {
      maxSlideId = slideId.Id;
    }

    position--;
    if (position == 0)
    {
      prevSlideId = slideId;
    }

  }

  maxSlideId++;

  // Get the ID of the previous slide.
  SlidePart lastSlidePart;

  if (prevSlideId != null)
  {
    lastSlidePart = (SlidePart)presentationPart.GetPartById(prevSlideId.RelationshipId);
  }
  else
  {
    lastSlidePart = (SlidePart)presentationPart.GetPartById(((SlideId)(slideIdList.ChildElements[0])).RelationshipId);
  }


  // Use the same slide layout as that of the previous slide.
  if (null != lastSlidePart.SlideLayoutPart)
  {
    slidePart.AddPart(lastSlidePart.SlideLayoutPart);
  }

  // Insert the new slide into the slide list after the previous slide.
  SlideId newSlideId = slideIdList.InsertAfter(new SlideId(), prevSlideId);
  newSlideId.Id = maxSlideId;
  newSlideId.RelationshipId = presentationPart.GetIdOfPart(slidePart);

  // Save the modified prsentation.
  presentationPart.Presentation.Save();
int位置=1;
使用(PresentationDocument PresentationDocument=PresentationDocument.Open(“c.pptx”,true))
{
PresentationPart PresentationPart=presentationDocument.PresentationPart;
幻灯片=新幻灯片(新的CommonSlideData(新的ShapeTree());
NonVisualGroupShapeProperties nonVisualProperties=slide.CommonSlideData.ShapeTree.AppendChild(新的NonVisualGroupShapeProperties());
nonVisualProperties.NonVisualDrawingProperties=新的NonVisualDrawingProperties(){Id=1,Name=”“};
nonVisualProperties.NonVisualGroupShapeDrawingProperties=新的NonVisualGroupShapeDrawingProperties();
nonVisualProperties.ApplicationNonVisualDrawingProperties=新的ApplicationNonVisualDrawingProperties();
//指定新幻灯片的组形状属性。
slide.CommonSlideData.ShapeTree.AppendChild(新的GroupShapeProperties());
//为新幻灯片创建幻灯片部件。
SlidePart SlidePart=presentationPart.AddNewPart();
//保存新的幻灯片部件。
slide.Save(slidePart);
字符串imgId=“rId”+new Random().Next(2000).ToString();
ImagePart ImagePart=slidePart.AddImagePart(ImagePartType.Png,imgId);
使用(FileStream-stream=newfilestream(“a.png”,FileMode.Open))
{
流位置=0;
imagePart.FeedData(流);
}
slide.Save(slidePart);
//修改演示文稿部分中的幻灯片ID列表。
//幻灯片ID列表不应为空。
slidedlist slidedlist=presentationPart.Presentation.slidedlist;
//在当前列表中查找最高的幻灯片ID。
uint maxSlideId=1;
SlideId prevlideid=null;
foreach(slidedlist.ChildElements中的SlideId SlideId)
{
如果(slideId.Id>maxSlideId)
{
maxSlideId=slideId.Id;
}
位置--;
如果(位置==0)
{
prevSlideId=slideId;
}
}
maxSlideId++;
//获取上一张幻灯片的ID。
SlidePart lastSlidePart;
如果(prevSlideId!=null)
{
lastSlidePart=(SlidePart)presentationPart.GetPartById(prevSlideId.RelationshipId);
}
其他的
{
lastSlidePart=(SlidePart)presentationPart.GetPartById(((SlideId)(SlideList.ChildElements[0])).RelationshipId);
}
//使用与上一张幻灯片相同的幻灯片布局。
if(null!=lastSlidePart.SlideLayoutPart)
{
slidePart.AddPart(lastSlidePart.SlideLayoutPart);
}
//在上一张幻灯片之后将新幻灯片插入幻灯片列表。
SlideId newSlideId=slidedlist.InsertAfter(新的SlideId(),prevSlideId);
newSlideId.Id=maxSlideId;
newSlideId.RelationshipId=presentationPart.GetIdOfPart(slidePart);
//保存修改后的位置。
presentationPart.Presentation.Save();
提前谢谢