使用OpenXML在PPT中段落未更改为所需格式

问题描述

我试图通过更改文本,字体大小,字体样式和对齐方式在pptx中编辑一个段落。

这是我到目前为止所做的:

  **this is the method im using to call the update paragraph**

    public static void Main(string[] args)
    {
       
        using (PresentationDocument presentationDocument = PresentationDocument.Open("ppturl",true))
        {
            // Get the presentation part of the presentation document.
            PresentationPart presentationPart = presentationDocument.PresentationPart;

            // Verify that the presentation part and presentation exist.
            if (presentationPart != null && presentationPart.Presentation != null)
            {
                // Get the Presentation object from the presentation part.
                Presentation presentation = presentationPart.Presentation;

                // Verify that the slide ID list exists.
                if (presentation.SlideIdList != null)
                {
     
                        SlideId sourceSlide = presentation.SlideIdList.ChildElements[0] as SlideId;
                        SlidePart slidePart = presentationPart.GetPartById(sourceSlide.RelationshipId) as SlidePart;

                    updateParagraph(slidePart);
                }
            }
        }

        Console.ReadLine();

        CreateHostBuilder(args).Build().Run();
    }
   
**Here im extracting the title in the slide because this is what i need.**

    public static void updateParagraph(SlidePart slidePart)
    {
        if (slidePart == null)
        {
            throw new ArgumentNullException("presentationDocument");
        }

        if (slidePart.Slide != null)
        {
            // Find all the title shapes.
            var shapes = from shape in slidePart.Slide.Descendants<Shape>()
                         where IsTitleShape(shape)
                         select shape;
            foreach (P.Shape shape in shapes)
            {
                D.Paragraph paragraph = shape.TextBody.Elements<D.Paragraph>().FirstOrDefault();
                shape.TextBody.RemoveAllChildren<D.Paragraph>();
                AddNewParagraph(shape,"This is a new Slide");

            }
           
        }
    }


  **This is where i am trying to add a new paragraph with specific style**

    public static void AddNewParagraph(this P.Shape shape,string NewText)
    {

        D.Paragraph p = new D.Paragraph();

        P.TextBody docBody = shape.TextBody;
        Justification justification1 = new Justification() { Val = JustificationValues.Center };
        p.ParagraphProperties=new D.ParagraphProperties(justification1);
        D.Run run = new D.Run(new D.Text(NewText));
        D.RunProperties runProp = new D.RunProperties() { Language = "en-US",FontSize = 9,Dirty = false };
        run.AppendChild(runProp);
        D.Text newText = new D.Text(NewText);
        run.AppendChild(newText);
        Console.WriteLine("--------------------------------------------------------------");
        Console.WriteLine(runProp.FontSize.ToString());
        Console.WriteLine("--------------------------------------------------------------");
        p.Append(run);
        docBody.Append(p);

    }

每当我尝试打开pptx“修复pptx错误”时,这都会给我一个错误。 有人可以提供针对pptx而非文档的明确解决方案吗?

谢谢..

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)