You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Spire.Presentation获取PPT形状所有文本并修改样式

Fix: Retrieve and Style All Text Shapes in Spire.Presentation

Hey there! I see the issue with your code—it's only targeting a single shape per slide (and has some syntax errors throwing things off). Let's rewrite it to properly iterate through all shapes in each slide, identify which ones contain text, and apply your desired style changes consistently.

What Was Wrong With the Original Code?

  • You were only grabbing presentation.Slides[i].Shapes[i]—this only picks the shape at the same index as the slide, not all shapes on the slide
  • Duplicate declaration of the shape variable (you declared it twice in the same scope, which is invalid C#)
  • Incorrect use of GetEnumerator() to try accessing shapes, plus a meaningless loop over shape.ToString() that doesn't interact with actual text content
  • Saving the slide to an image inside the shape loop, which would save the slide multiple times per slide instead of once after all changes are applied

Modified Working Code

using System;
using Spire.Presentation;
using Spire.Presentation.Drawing;

class Program
{
    static void Main(string[] args)
    {
        // Load the target presentation
        Presentation presentation = new Presentation();
        presentation.LoadFromFile(@"C:\input.pptx");

        if (presentation == null)
        {
            Console.WriteLine("Failed to load the presentation file!");
            return;
        }

        // Iterate through every slide in the presentation
        for (int slideIndex = 0; slideIndex < presentation.Slides.Count; slideIndex++)
        {
            ISlide currentSlide = presentation.Slides[slideIndex];
            
            // Loop through ALL shapes on the current slide
            foreach (IShape shape in currentSlide.Shapes)
            {
                // Only process shapes that can contain text (IAutoShape)
                if (shape is IAutoShape autoShape)
                {
                    TextRange textContent = autoShape.TextFrame.TextRange;
                    
                    // Skip shapes with empty text to avoid unnecessary processing
                    if (string.IsNullOrEmpty(textContent.Text))
                    {
                        continue;
                    }

                    // Apply your desired text style modifications
                    textContent.FontHeight = 12;
                    textContent.IsItalic = TriState.True;
                    textContent.TextUnderlineType = TextUnderlineType.Single;
                    textContent.LatinFont = new TextFont("Arial");
                    
                    Console.WriteLine($"Updated text on slide {slideIndex + 1}: {textContent.Text}");
                }
            }

            // Save the fully modified slide as an image
            var slideImage = currentSlide.SaveAsImage();
            string imagePath = $"C:\\img-{slideIndex}.png";
            slideImage.Save(imagePath, System.Drawing.Imaging.ImageFormat.Png);
            Console.WriteLine($"Saved modified slide {slideIndex + 1} to {imagePath}");
        }

        // Optional: Uncomment to save the edited presentation file
        // presentation.SaveToFile(@"C:\modified.pptx", FileFormat.Pptx2013);
        
        Console.ReadKey();
    }
}

Key Improvements Explained

  • Full Shape Coverage: Uses foreach (IShape shape in currentSlide.Shapes) to loop through every shape on each slide, no more missing text elements
  • Type Safety: Checks if the shape is an IAutoShape (since non-text shapes like images or charts don't have text frames)
  • Clean Style Application: Directly accesses the shape's text range to apply font properties without redundant loops
  • Logical Image Saving: Saves the slide as an image only after processing all shapes, ensuring all style changes are captured in the output
  • Basic Error Handling: Added a check for failed presentation loads with a clear message

内容的提问来源于stack exchange,提问作者Evgeniy Bojenov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:10:13