【问题标题】:Open xml getting images from .pptx file打开 xml 从 .pptx 文件中获取图像
【发布时间】:2014-04-27 08:39:08
【问题描述】:

我在 .Net 4.0 中有一个 Windows 窗体应用程序。我在 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 或类似的东西中)?

【问题讨论】:

    标签: c# openxml


    【解决方案1】:

    找到了一条路:

    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());
    

    【讨论】:

    • 什么是“rId3”ID?那是一些常数还是指特定图像的东西?我正在尝试编写一些代码来自动从 PPTX 文件中提取缩略图。
    • @CoreyBurnett 好吧,我忘记了代码。但显然这是一些 id。
    • @petko_stankoski ID 是什么?我的 rID3 id 有错误...在模板的哪个部分?如何在 power point 中学习它的名称?
    • rId 是幻灯片的关系 ID,或者在本例中为 imagePart。这从来都不是一成不变的,因此您需要通过检查 xml 来仔细检查您的“对象”ID。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    相关资源
    最近更新 更多