Ukládání prezentací v C++

Přehled

Otevření prezentací v C++ popisuje, jak použít třídu Presentation k otevření prezentace. Tento článek vysvětluje, jak vytvářet a ukládat prezentace. Třída Presentation obsahuje obsah prezentace. Ať už vytváříte prezentaci od nuly nebo upravujete existující, budete ji chtít po dokončení uložit. S Aspose.Slides pro C++ můžete uložit do souboru nebo streamu. Tento článek popisuje různé způsoby ukládání prezentace.

Ukládání prezentací do souborů

Uložte prezentaci do souboru voláním metody Save třídy Presentation. Předáte metodě název souboru a formát ukládání. Následující příklad ukazuje, jak uložit prezentaci pomocí Aspose.Slides.

// Vytvořte instanci třídy Presentation, která představuje soubor prezentace.
auto presentation = MakeObject<Presentation>();

// Proveďte zde nějakou práci...

// Uložte prezentaci do souboru.
presentation->Save(u"Output.pptx", SaveFormat::Pptx);

presentation->Dispose();

Ukládání prezentací do streamů

Můžete uložit prezentaci do streamu předáním výstupního streamu metodě Save třídy Presentation. Prezentaci lze zapisovat do mnoha typů streamů. V níže uvedeném příkladu vytvoříme novou prezentaci a uložíme ji do souborového streamu.

// Vytvořte instanci třídy Presentation, která představuje soubor prezentace.
auto presentation = MakeObject<Presentation>();

auto fileStream = MakeObject<FileStream>(u"Output.pptx", FileMode::Create);

// Uložte prezentaci do streamu.
presentation->Save(fileStream, SaveFormat::Pptx);

presentation->Dispose();
fileStream->Close();

Ukládání prezentací s předdefinovaným typem zobrazení

Aspose.Slides vám umožňuje nastavit počáteční zobrazení, které PowerPoint použije při otevření vygenerované prezentace, prostřednictvím třídy ViewProperties. Použijte metodu set_LastView s hodnotou z výčtu ViewType.

auto presentation = MakeObject<Presentation>();

presentation->get_ViewProperties()->set_LastView(ViewType::SlideMasterView);

presentation->Save(u"SlideMasterView.pptx", SaveFormat::Pptx);
presentation->Dispose();

Ukládání prezentací ve formátu Strict Office Open XML

Aspose.Slides vám umožňuje uložit prezentaci ve formátu Strict Office Open XML. Použijte třídu PptxOptions a při ukládání nastavte její vlastnost conformance. Pokud nastavíte Conformance.Iso29500_2008_Strict, výstupní soubor bude uložen ve formátu Strict Office Open XML.

Níže uvedený příklad vytvoří prezentaci a uloží ji ve formátu Strict Office Open XML.

auto options = MakeObject<PptxOptions>();
options->set_Conformance(Conformance::Iso29500_2008_Strict);

// Vytvořte instanci třídy Presentation, která představuje soubor prezentace.
auto presentation = MakeObject<Presentation>();

// Uložte prezentaci ve formátu Strict Office Open XML.
presentation->Save(u"StrictOfficeOpenXml.pptx", SaveFormat::Pptx, options);
presentation->Dispose();

Ukládání prezentací ve formátu Office Open XML v režimu Zip64

Soubor Office Open XML je archiv ZIP, který uvaluje limity 4 GB (2^32 bajtů) na nekomprimovanou velikost libovolného souboru, komprimovanou velikost libovolného souboru i celkovou velikost archivu a také omezuje archiv na 65 535 (2^16‑1) souborů. Rozšíření formátu ZIP64 tato omezení zvyšují na 2^64.

Metoda IPptxOptions::set_Zip64Mode vám umožňuje zvolit, kdy použít rozšíření ZIP64 při ukládání souboru Office Open XML.

Tato metoda může být použita s následujícími režimy:

  • IfNecessary používá rozšíření ZIP64 pouze pokud prezentace překročí výše uvedená omezení. Toto je výchozí režim.
  • Never nikdy nevyužívá rozšíření ZIP64.
  • Always vždy využívá rozšíření ZIP64.

Následující kód demonstruje, jak uložit prezentaci jako PPTX s povolenými rozšířeními 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();

Ukládání prezentací bez obnovení miniatury

Metoda PptxOptions::set_RefreshThumbnail řídí generování miniatury při ukládání prezentace do PPTX:

  • Pokud je nastavena na true, miniatura se během ukládání obnoví. Toto je výchozí nastavení.
  • Pokud je nastavena na false, aktuální miniatura je zachována. Pokud prezentace nemá miniaturu, nebude žádná generována.

V níže uvedeném kódu je prezentace uložena do PPTX bez obnovení 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();

Získávání aktualizací průběhu ukládání v procentech

Rozhraní IProgressCallback se používá prostřednictvím metody set_ProgressCallback, která je součástí rozhraní ISaveOptions a abstraktní třídy SaveOptions. Přiřaďte implementaci [IProgressCallback] pomocí set_ProgressCallback, abyste získali aktualizace průběhu ukládání v procentech.

Následující úryvky kódu ukazují, jak použít IProgressCallback.

class ExportProgressHandler : public IProgressCallback
{
public:
    void Reporting(double progressValue)
    {
        // Použijte zde hodnotu procenta postupu.
        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();

Často kladené otázky

Je podporováno “rychlé ukládání” (inkrementální ukládání), aby se zapisovaly jen změny?

Ne. Ukládání při každém uložení vytvoří celý cílový soubor; inkrementální “rychlé ukládání” není podporováno.

Je bezpečné (thread‑safe) uložit stejnou instanci Presentation z více vláken?

Ne. Instance Presentation není thread‑safe; ukládejte ji z jediného vlákna.

Co se stane s hypertextovými odkazy a externě odkazovanými soubory při ukládání?

Hyperlinky jsou zachovány. Externě odkazované soubory (např. videa pomocí relativních cest) nejsou automaticky zkopírovány – ujistěte se, že odkazované cesty zůstávají dostupné.

Mohu nastavit/uložit metadata dokumentu (Autor, Název, Společnost, Datum)?

Ano. Standardní vlastnosti dokumentu jsou podporovány a budou při ukládání zapsány do souboru.