Откройте xml, получив изображения из файла .pptx - PullRequest
3 голосов
/ 06 ноября 2011

У меня есть приложение Windows Forms в .Net 4.0.Я работаю в C #.Я хочу получить изображение с данного слайда в файле .pptx.

Этот код получает каждое изображение на слайде:

 public static SlidePart GetSlidePart(PresentationDocument presentationDocument, int slideIndex)
    {
        if (presentationDocument == null)
        {
            throw new ArgumentNullException("presentationDocument", "GetSlidePart Method: parameter presentationDocument is null");
        }

        int slidesCount = CountSlides(presentationDocument);

        if (slideIndex < 0 || slideIndex >= slidesCount)
        {
            throw new ArgumentOutOfRangeException("slideIndex", "GetSlidePart Method: parameter slideIndex is out of range");
        }

        PresentationPart presentationPart = presentationDocument.PresentationPart;

        if (presentationPart != null && presentationPart.Presentation != null)
        {
            Presentation presentation = presentationPart.Presentation;

            if (presentation.SlideIdList != null)
            {
                var slideIds = presentation.SlideIdList.ChildElements;

                if (slideIndex < slideIds.Count)
                {
                    string slidePartRelationshipId = (slideIds[slideIndex] as SlideId).RelationshipId;

                    SlidePart slidePart = (SlidePart)presentationPart.GetPartById(slidePartRelationshipId);

                    return slidePart;
                }
            }
        }

        return null;// No slide found
    }

Но как преобразовать slidePart в изображениебудет отображаться в моей форме Windows (в imageList или что-то подобное)?

1 Ответ

2 голосов
/ 06 ноября 2011

Нашел способ:

SlidePart slidePart = (SlidePart)presentationPart.GetPartById(slidePartRelationshipId);

                    Slide slide = slidePart.Slide;
                    ImagePart imagePart = (ImagePart)slide.SlidePart.GetPartById("rId3");
                    System.Drawing.Image img = System.Drawing.Image.FromStream(imagePart.GetStream());
...