Jak ładować prezentacje w .NET

Jak ładować prezentacje w .NET

Aspose.Slides FOSS for .NET pozwala otworzyć dowolny plik .pptx, sprawdzić jego zawartość i albo zapisać go ponownie jako PPTX, albo wyodrębnić z niego dane. Ten przewodnik obejmuje otwieranie pliku, iterację slajdów, odczytywanie tekstu kształtów oraz zapis w trybie round‑tripping.

Przewodnik krok po kroku

Krok 1: Zainstaluj pakiet

dotnet add package Aspose.Slides.Foss

Krok 2: Otwórz istniejącą prezentację

Przekaż ścieżkę pliku do new Presentation(). Użyj instrukcji using, aby zapewnić sprzątanie.

using Aspose.Slides.Foss;
using Aspose.Slides.Foss.Export;

using var prs = new Presentation("input.pptx");
Console.WriteLine($"Slide count: {prs.Slides.Count}");
prs.Save("output.pptx", SaveFormat.Pptx);

Nieznane części XML w pliku źródłowym są zachowywane dosłownie: biblioteka nigdy nie usuwa treści, której jeszcze nie rozumie.


Krok 3: Sprawdź slajdy

Iteruj po wszystkich slajdach i wypisz ich indeks:

using Aspose.Slides.Foss;

using var prs = new Presentation("deck.pptx");
for (int i = 0; i < prs.Slides.Count; i++)
{
    var slide = prs.Slides[i];
    int shapeCount = slide.Shapes.Count;
    Console.WriteLine($"Slide {i}: {shapeCount} shapes");
}

Krok 4: Odczytaj tekst kształtu

Iteruj po kształtach i odczytuj tekst z kształtów, które mają TextFrame:

using Aspose.Slides.Foss;

using var prs = new Presentation("deck.pptx");
foreach (var slide in prs.Slides)
{
    foreach (var shape in slide.Shapes)
    {
        if (shape is IAutoShape autoShape && autoShape.TextFrame != null)
        {
            string text = autoShape.TextFrame.Text;
            if (!string.IsNullOrWhiteSpace(text))
                Console.WriteLine($"  Shape text: {text}");
        }
    }
}

Krok 5: Odczyt właściwości dokumentu

Uzyskaj dostęp do podstawowych właściwości dokumentu z prs.DocumentProperties:

using Aspose.Slides.Foss;

using var prs = new Presentation("deck.pptx");
var props = prs.DocumentProperties;
Console.WriteLine($"Title:   {props.Title}");
Console.WriteLine($"Author:  {props.Author}");
Console.WriteLine($"Subject: {props.Subject}");

Krok 6: Zapis Round‑Trip

Po sprawdzeniu lub modyfikacji prezentacji, zapisz ją ponownie jako PPTX:

prs.Save("output.pptx", SaveFormat.Pptx);

Zapisywanie w inną ścieżkę tworzy nowy plik. Zapisywanie w tej samej ścieżce nadpisuje oryginał.


Typowe problemy i rozwiązania

FileNotFoundException

Sprawdź, czy ścieżka do pliku .pptx jest poprawna względem katalogu roboczego. Użyj Path.Combine do solidnego budowania ścieżek:

string path = Path.Combine(AppContext.BaseDirectory, "assets", "deck.pptx");
using var prs = new Presentation(path);

Exception: File format is not supported

Biblioteka obsługuje wyłącznie .pptx (Office Open XML). Pliki starszego formatu .ppt (binarny PowerPoint 97‑2003) nie są obsługiwane.

Kształty nie mają właściwości TextFrame

Niektóre kształty (Connector, PictureFrame) nie mają TextFrame. Rzutuj do IAutoShape i sprawdź, czy nie jest null przed dostępem do tekstu.


Najczęściej zadawane pytania

Czy ładowanie zachowuje całą oryginalną treść?

Tak. Nieznane części XML są zachowywane dosłownie przy zapisie w trybie round‑trip. Biblioteka nie usunie żadnej zawartości XML, której jeszcze nie rozpoznaje.

Czy mogę załadować plik PPTX zabezpieczony hasłem?

Prezentacje zabezpieczone hasłem (zaszyfrowane) nie są obsługiwane w tej edycji.

Czy mogę wyodrębnić osadzone obrazy?

Uzyskaj dostęp do kolekcji obrazów: prs.Images zwraca ImageCollection. Każdy obraz ma właściwości umożliwiające odczyt surowych danych obrazu.

Czy ładowanie z MemoryStream jest obsługiwane?

Tak. Konstruktor Presentation przyjmuje Stream:

using var stream = new MemoryStream(pptxBytes);
using var prs = new Presentation(stream);
Console.WriteLine($"Slides: {prs.Slides.Count}");

Zobacz także

 Polski