Zapisywanie prezentacji w C++
Przegląd
Open Presentations in C++ opisuje, jak używać klasy Presentation do otwierania prezentacji. Ten artykuł wyjaśnia, jak tworzyć i zapisywać prezentacje. Klasa Presentation zawiera zawartość prezentacji. Niezależnie od tego, czy tworzysz prezentację od zera, czy modyfikujesz istniejącą, będziesz chciał ją zapisać po zakończeniu. Dzięki Aspose.Slides for C++ możesz zapisać do pliku lub strumienia. Ten artykuł opisuje różne sposoby zapisywania prezentacji.
Zapis prezentacji do plików
Zapisz prezentację do pliku, wywołując metodę Save klasy Presentation. Przekaż nazwę pliku i format zapisu do metody. Poniższy przykład pokazuje, jak zapisać prezentację za pomocą Aspose.Slides.
// Utwórz instancję klasy Presentation, która reprezentuje plik prezentacji.
auto presentation = MakeObject<Presentation>();
// Wykonaj tutaj jakieś czynności...
// Zapisz prezentację do pliku.
presentation->Save(u"Output.pptx", SaveFormat::Pptx);
presentation->Dispose();
Zapis prezentacji do strumieni
Możesz zapisać prezentację do strumienia, przekazując strumień wyjściowy do metody Save klasy Presentation. Prezentację można zapisać do wielu typów strumieni. W poniższym przykładzie tworzymy nową prezentację i zapisujemy ją do strumienia pliku.
// Utwórz instancję klasy Presentation, która reprezentuje plik prezentacji.
auto presentation = MakeObject<Presentation>();
auto fileStream = MakeObject<FileStream>(u"Output.pptx", FileMode::Create);
// Zapisz prezentację do strumienia.
presentation->Save(fileStream, SaveFormat::Pptx);
presentation->Dispose();
fileStream->Close();
Zapis prezentacji z określonym typem widoku
Aspose.Slides umożliwia ustawienie początkowego widoku, którego PowerPoint używa po otwarciu wygenerowanej prezentacji, za pomocą klasy ViewProperties. Użyj metody set_LastView z wartością z wyliczenia ViewType.
auto presentation = MakeObject<Presentation>();
presentation->get_ViewProperties()->set_LastView(ViewType::SlideMasterView);
presentation->Save(u"SlideMasterView.pptx", SaveFormat::Pptx);
presentation->Dispose();
Zapis prezentacji w formacie Strict Office Open XML
Aspose.Slides pozwala zapisać prezentację w formacie Strict Office Open XML. Użyj klasy PptxOptions i ustaw jej właściwość Conformance podczas zapisu. Jeśli ustawisz Conformance.Iso29500_2008_Strict, plik wyjściowy zostanie zapisany w formacie Strict Office Open XML.
Poniższy przykład tworzy prezentację i zapisuje ją w formacie Strict Office Open XML.
auto options = MakeObject<PptxOptions>();
options->set_Conformance(Conformance::Iso29500_2008_Strict);
// Utwórz instancję klasy Presentation, która reprezentuje plik prezentacji.
auto presentation = MakeObject<Presentation>();
// Zapisz prezentację w ścisłym formacie Office Open XML.
presentation->Save(u"StrictOfficeOpenXml.pptx", SaveFormat::Pptx, options);
presentation->Dispose();
Zapis prezentacji w formacie Office Open XML w trybie Zip64
Plik Office Open XML jest archiwum ZIP, które narzuca limit 4 GB (2^32 bajtów) na nieskompresowany rozmiar dowolnego pliku, skompresowany rozmiar dowolnego pliku oraz całkowity rozmiar archiwum, a także ogranicza liczbę plików w archiwum do 65 535 (2^16‑1). Rozszerzenia formatu ZIP64 podnoszą te limity do 2^64.
Metoda IPptxOptions::set_Zip64Mode pozwala wybrać, kiedy używać rozszerzeń ZIP64 podczas zapisu pliku Office Open XML.
Ta metoda może być użyta w następujących trybach:
IfNecessaryużywa rozszerzeń ZIP64 tylko wtedy, gdy prezentacja przekracza powyższe ograniczenia. Jest to tryb domyślny.Nevernigdy nie używa rozszerzeń ZIP64.Alwayszawsze używa rozszerzeń ZIP64.
Poniższy kod demonstruje, jak zapisać prezentację jako PPTX z włączonymi rozszerzeniami ZIP64:
auto pptxOptions = MakeObject<PptxOptions>();
pptxOptions->set_Zip64Mode(Zip64Mode::Always);
auto presentation = MakeObject<Presentation>(u"Sample.pptx");
presentation->Save(u"OutputZip64.pptx", SaveFormat::Pptx, pptxOptions);
presentation->Dispose();
NOTE
Gdy zapisujesz zZip64Mode.Never, zostaje rzucony PptxException, jeśli prezentacja nie może zostać zapisana w formacie ZIP32.
Zapis prezentacji bez odświeżania miniatury
Metoda PptxOptions::set_RefreshThumbnail kontroluje generowanie miniatury podczas zapisywania prezentacji do PPTX:
- Jeśli ustawiona na
true, miniatura jest odświeżana podczas zapisu. Jest to zachowanie domyślne. - Jeśli ustawiona na
false, zachowywana jest bieżąca miniatura. Jeśli prezentacja nie ma miniatury, nie zostanie wygenerowana żadna.
W poniższym kodzie prezentacja jest zapisywana do PPTX bez odświeżania jej miniatury.
auto pptxOptions = MakeObject<PptxOptions>();
pptxOptions->set_RefreshThumbnail(false);
auto presentation = MakeObject<Presentation>(u"Sample.pptx");
presentation->Save(u"Output.pptx", SaveFormat::Pptx, pptxOptions);
presentation->Dispose();
Info
Ta opcja pomaga skrócić czas potrzebny na zapis prezentacji w formacie PPTX.Aktualizacje postępu zapisu w procentach
Interfejs IProgressCallback jest używany poprzez metodę set_ProgressCallback udostępnioną przez interfejs ISaveOptions oraz abstrakcyjną klasę SaveOptions. Przypisz implementację IProgressCallback przy pomocy set_ProgressCallback, aby otrzymywać aktualizacje postępu zapisu w procentach.
Poniższe fragmenty kodu pokazują, jak używać IProgressCallback.
class ExportProgressHandler : public IProgressCallback
{
public:
void Reporting(double progressValue)
{
// Użyj tutaj wartości procentowej postępu.
int progress = static_cast<int>(progressValue);
Console::WriteLine(u"{0}% of the file has been converted.", progress);
}
};
auto saveOptions = MakeObject<PdfOptions>();
saveOptions->set_ProgressCallback(MakeObject<ExportProgressHandler>());
auto presentation = MakeObject<Presentation>(u"Sample.pptx");
presentation->Save(u"Output.pdf", SaveFormat::Pdf, saveOptions);
presentation->Dispose();
Info
Aspose opracowało bezpłatną aplikację PowerPoint Splitter wykorzystującą własne API. Aplikacja pozwala podzielić prezentację na wiele plików, zapisując wybrane slajdy jako nowe pliki PPTX lub PPT.FAQ
Czy „szybki zapis” (zapis przyrostowy) jest obsługiwany, tak aby zapisywane były tylko zmiany?
Nie. Zapisywanie tworzy pełny plik docelowy przy każdym zapisie; przyrostowy „szybki zapis” nie jest obsługiwany.
Czy zapisywanie tej samej instancji Presentation z wielu wątków jest bezpieczne?
Nie. Instancja Presentation nie jest bezpieczna wątkowo; zapisuj ją z jednego wątku.
Co dzieje się z hiperłączami i zewnętrznie powiązanymi plikami przy zapisie?
Hyperlinki są zachowywane. Zewnętrznie powiązane pliki (np. wideo wskazane względnymi ścieżkami) nie są kopiowane automatycznie — należy upewnić się, że odwoływane ścieżki pozostają dostępne.
Czy mogę ustawić/zapisać metadane dokumentu (Autor, Tytuł, Firma, Data)?
Tak. Standardowe właściwości dokumentu są obsługiwane i zostaną zapisane w pliku przy zapisie.