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.FossKrok 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
| Format | Wartość Enum | Obsługiwane |
|---|---|---|
| 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 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 originalCzy 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.