Поиск и выделение текста в ppt - openxml - PullRequest
0 голосов
/ 26 октября 2018

Я использую openXML для поиска определенного текста и выделения его (изменения его цвета) в ppt с использованием openxml.Ниже приведен код, как бы то ни было, он не выделяет текст в ппт.

Подсветка текста:

if (text.Text == "John")
                                {

                                    A.Run run1 = new A.Run();
                                    A.RunProperties runProperties1 = new A.RunProperties() { Language = "en-US", FontSize = 6000, Dirty = false };//Set Font-Size to 60px.
                                    A.SolidFill solidFill1 = new A.SolidFill();
                                    A.RgbColorModelHex rgbColorModelHex1 = new A.RgbColorModelHex() { Val = "00B050" };//Set Font-Color to Green (Hex "00B050").
                                    solidFill1.Append(rgbColorModelHex1);
                                    runProperties1.Append(solidFill1);
                                    A.Text text1 = new A.Text();
                                    text1.Text = text.Text;
                                    run1.Append(runProperties1);
                                    run1.Append(text1);
                                    slidePart.Slide.Save();

                                }

Полный код -

using Text = DocumentFormat.OpenXml.Presentation.Text;
using A = DocumentFormat.OpenXml.Drawing;

public static void GetSlideIdAndText(string docName)
        {
            using (PresentationDocument ppt = PresentationDocument.Open(docName, true))
            {
                // Get the relationship ID of the first slide.
                PresentationPart part = ppt.PresentationPart;
                OpenXmlElementList slideIds = part.Presentation.SlideIdList.ChildElements;
                SlidePart[] slidePartList = part.SlideParts.ToArray();
                //string relId = (slideIds[index] as SlideId).RelationshipId;
                StringBuilder paragraphText = new StringBuilder();
                // Get the slide part from the relationship ID.
                //SlidePart slide = (SlidePart)part.GetPartById(relId);

                LinkedList<string> texts = new LinkedList<string>();
                foreach (SlidePart slidePart in slidePartList)
                {
                    // If the slide exists...
                    if (slidePart.Slide != null)
                    {
                        // Iterate through all the paragraphs in the slide.
                        foreach (var paragraph in slidePart.Slide.Descendants<DocumentFormat.OpenXml.Drawing.Paragraph>())
                        {
                            // Create a new string builder.                    
                            // StringBuilder paragraphText = new StringBuilder();

                            // Iterate through the lines of the paragraph.
                            foreach (var text in paragraph.Descendants<DocumentFormat.OpenXml.Drawing.Text>())
                            {
                                // Append each line to the previous lines.
                                paragraphText.Append(text.Text);
                                if (text.Text == "John")
                                {

                                    A.Run run1 = new A.Run();
                                    A.RunProperties runProperties1 = new A.RunProperties() { Language = "en-US", FontSize = 6000, Dirty = false };//Set Font-Size to 60px.
                                    A.SolidFill solidFill1 = new A.SolidFill();
                                    A.RgbColorModelHex rgbColorModelHex1 = new A.RgbColorModelHex() { Val = "00B050" };//Set Font-Color to Green (Hex "00B050").
                                    solidFill1.Append(rgbColorModelHex1);
                                    runProperties1.Append(solidFill1);
                                    A.Text text1 = new A.Text();
                                    text1.Text = text.Text;
                                    run1.Append(runProperties1);
                                    run1.Append(text1);
                                    slidePart.Slide.Save();

                                }
                            }

                            if (paragraphText.Length > 0)
                            {
                                // Add each paragraph to the linked list.
                                texts.AddLast(paragraphText.ToString());
                            }
                        }
                    }
                }

            }
        }
...