Jak zapisywać prezentacje w .NET

Jak zapisywać prezentacje w .NET

Aspose.Slides FOSS for .NET zapisuje prezentacje wyłącznie w formacie .pptx przy użyciu prs.Save(path, SaveFormat.Pptx). Ten przewodnik opisuje prawidłowy wzorzec zapisu, zapisywanie do innej ścieżki, zapisywanie do strumienia oraz typowe błędy związane z zapisem.

Przewodnik krok po kroku

Krok 1: Zainstaluj pakiet

dotnet add package Aspose.Slides.Foss

Krok 2: Otwórz lub utwórz prezentację

Zawsze używaj instrukcji using. Wywołanie zapisu musi nastąpić przed zwolnieniem obiektu.

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

// Create new
using var prs = new Presentation();
prs.Save("new.pptx", SaveFormat.Pptx);
// Open existing
using var prs = new Presentation("input.pptx");
prs.Save("output.pptx", SaveFormat.Pptx);

Krok 3: Zapisz po wszystkich modyfikacjach

Umieść wywołanie Save() po zakończeniu wszystkich modyfikacji, przed zakończeniem zakresu using.

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

using var prs = new Presentation();
var slide = prs.Slides[0];
var shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 300, 100);
shape.AddTextFrame("Hello, World!");
prs.Save("output.pptx", SaveFormat.Pptx);

Krok 4: Zapisz w innej ścieżce

Podaj inną ścieżkę wyjściową, aby utworzyć nowy plik bez modyfikacji oryginału:

using var prs = new Presentation("template.pptx");
// modify ...
prs.Save("customized.pptx", SaveFormat.Pptx);

Plik template.pptx nie jest modyfikowany; customized.pptx jest tworzony (lub nadpisywany, jeśli już istnieje).


Krok 5: Zapisz do strumienia

Metoda Presentation.Save również przyjmuje Stream:

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

using var prs = new Presentation();
using var stream = new MemoryStream();
prs.Save(stream, SaveFormat.Pptx);
byte[] pptxBytes = stream.ToArray();
Console.WriteLine($"Size: {pptxBytes.Length} bytes");

Krok 6: Zweryfikuj wynik

Po zapisaniu do pliku sprawdź, czy istnieje:

var info = new FileInfo("output.pptx");
Console.WriteLine($"Saved: {info.Exists}, size: {info.Length} bytes");

Obsługiwany format zapisu

FormatWartość wyliczeniaObsługiwany
PPTX (Office Open XML)SaveFormat.PptxTak
PDFN/ANie
HTMLN/ANie
SVGN/ANie
PNG / JPEGN/ANie
ODP (OpenDocument)N/ANie

Obsługiwany jest tylko PPTX. Parametr format jest obecnie ignorowany; wszystkie prezentacje są zapisywane jako PPTX, niezależnie od określonego SaveFormat.


Typowe problemy i rozwiązania

IOException: The process cannot access the file

Plik wyjściowy jest otwarty w innej aplikacji (np. PowerPoint ma otwarty plik). Zamknij plik w innych aplikacjach przed zapisaniem.

Plik jest tworzony, ale wydaje się pusty lub uszkodzony

Upewnij się, że prs.Save() zostanie wywołane przed zwolnieniem obiektu. Po uruchomieniu Dispose() kolejne wywołania zakończą się niepowodzeniem lub wygenerują uszkodzony wynik.

Nieoczekiwany format wyjścia podczas zapisywania

Przekazanie dowolnej wartości SaveFormat innej niż SaveFormat.Pptx nie powoduje wyrzucenia wyjątku — parametr formatu jest cicho ignorowany, a plik zawsze zapisywany jest jako PPTX. Nie ma NotSupportedException dla nierozpoznanej wartości formatu.


Najczęściej zadawane pytania

Czy mogę zapisać do tego samego pliku, który otworzyłem?

Tak. Zapisanie w tej samej ścieżce nadpisuje oryginalny plik:

using var prs = new Presentation("deck.pptx");
// modify ...
prs.Save("deck.pptx", SaveFormat.Pptx);  // overwrites original

Czy zapisywanie zachowuje treść, której nie zmodyfikowałem?

Tak. Nieznane części XML z oryginalnego pliku są zachowywane w dosłownej formie. Biblioteka serializuje tylko te części modelu dokumentu, które rozumie, i przepuszcza wszelkie XML, którego nie rozpoznaje.


Zobacz także

 Polski