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.FossKrok 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
| Format | Wartość wyliczenia | Obsługiwany |
|---|---|---|
| PPTX (Office Open XML) | SaveFormat.Pptx | Tak |
| N/A | Nie | |
| HTML | N/A | Nie |
| SVG | N/A | Nie |
| PNG / JPEG | N/A | Nie |
| ODP (OpenDocument) | N/A | Nie |
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 originalCzy 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.