Jak zapisywać prezentacje w .NET

Jak zapisywać prezentacje w .NET

Aspose.Slides FOSS for .NET saves presentations exclusively to .pptx format 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 using instrukcję. 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ść Save() wywołanie po zakończeniu wszystkich modyfikacji, przed using zakończeniem zakresu.

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 do innej ścieżki

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);

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


Krok 5: Zapisz do strumienia

Ten Presentation.Save metoda również akceptuje 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ść EnumObsługiwane
PPTX (Office Open XML)SaveFormat.PptxTak
PDFN/ANie
HTMLN/ANie
SVGN/ANie
PNG / JPEGN/ANie
ODP (OpenDocument)N/ANie

Obsługiwany jest wyłącznie format PPTX. Parametr formatu jest obecnie ignorowany; wszystkie prezentacje są zapisywane jako PPTX niezależnie od podanego 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 zapisem.

Plik został utworzony, ale wydaje się pusty lub uszkodzony

Upewnij się prs.Save() jest wywoływane przed zwolnieniem obiektu. Po Dispose() działa, kolejne wywołania zakończą się niepowodzeniem lub wygenerują uszkodzony wynik.

Nieoczekiwany format wyjściowy podczas zapisu

Przekazanie dowolnego SaveFormat wartości innej niż SaveFormat.Pptx nie zgłasza wyjątku — parametr format jest cicho ignorowany i plik zawsze zapisywany jest jako PPTX. Nie ma NotSupportedException dla nieznanej wartości formatu.


Najczęściej zadawane pytania

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

Tak. Zapis do tej samej ścieżki nadpisuje oryginalny plik:

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

Czy zapis zachowuje zawartość, której nie zmodyfikowałem?

Tak. Nieznane części XML z oryginalnego pliku są zachowywane wprost. Biblioteka serializuje tylko te części modelu dokumentu, które rozumie, i przepuszcza wszelki XML, którego nie rozpoznaje.


Zobacz także

 Polski