Bemutatók mentése C++-ban
Áttekintés
Miután létrehoz egy bemutatót, vagy megnyit egy meglévő bemutatót, használja a Presentation::Save metódust az eredmény írásához. Az Aspose.Slides for C++ képes egy bemutatót fájlba vagy adatfolyamba menteni PowerPoint, OpenDocument, PDF és más formátumokban. Az alábbi szakaszok a szabványos mentési műveleteket és a PPTX kimenethez elérhető beállításokat tárgyalják.
Bemutatók mentése fájlokba
A bemutató fájlba mentéséhez adja meg a kimeneti útvonalat és egy SaveFormat értéket a Presentation::Save metódusnak. A formátum érték határozza meg, milyen típusú fájlt hoz létre az Aspose.Slides.
Az alábbi példa egy bemutatót hoz létre, és PPTX fájlként menti el:
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto presentation = MakeObject<Presentation>();
// Adjon hozzá vagy módosítson prezentációs tartalmat itt.
presentation->Save(u"Output.pptx", SaveFormat::Pptx);
presentation->Dispose();
Bemutatók mentése az eredeti formátumban
A fájl- és adatfolyamdetektálási példákért, az újonnan létrehozott bemutatók viselkedéséért, valamint a forrás- és kimeneti formátumok közötti különbségért lásd a Determine the Original Presentation Format oldalt.
Kötegelt feldolgozó alkalmazásban a bemeneti formátum előre nem ismerhető. Egy fájl betöltése után olvassa ki az eredeti formátumot az IPresentation::get_SourceFormat segítségével. A kapott SourceFormat értéket adja át a SlideUtil::ToSaveFormat metódusnak, hogy megkapja a megfelelő SaveFormat értéket, majd ezt használja a Presentation::Save metódusban a módosított bemutató írásához.
Az alábbi teljes példa minden fájlt feldolgoz egy bemeneti könyvtárban, frissíti a címét, és a betöltéskor használt formátumban menti el egy kimeneti könyvtárba:
#include <DOM/IDocumentProperties.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <Util/SlideUtil.h>
#include <system/console.h>
#include <system/exception.h>
#include <system/io/directory.h>
#include <system/io/path.h>
#include <system/smart_ptr.h>
#include <system/string.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace Aspose::Slides::Util;
using namespace System;
using namespace System::IO;
String inputDirectory = u"Input";
String outputDirectory = u"Output";
Directory::CreateDirectory_(outputDirectory);
auto inputPaths = Directory::GetFiles(inputDirectory);
for (const auto& inputPath : inputPaths)
{
try
{
auto presentation = MakeObject<Presentation>(inputPath);
auto sourceFormat = presentation->get_SourceFormat();
auto saveFormat = SlideUtil::ToSaveFormat(sourceFormat);
presentation->get_DocumentProperties()->set_Title(u"Processed by the batch application");
auto outputPath = Path::Combine(outputDirectory, Path::GetFileName(inputPath));
presentation->Save(outputPath, saveFormat);
presentation->Dispose();
}
catch (ArgumentException& exception)
{
Console::get_Error()->WriteLine(String::Format(u"Cannot map the source format of '{0}': {1}", inputPath, exception->get_Message()));
}
catch (Exception& exception)
{
Console::get_Error()->WriteLine(String::Format(u"Cannot process '{0}': {1}", inputPath, exception->get_Message()));
}
}
SlideUtil::ToSaveFormat a PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP és PowerPoint XML formátumokat a megfelelő prezentáció mentési formátumokra képezi le. Csak a bemeneti prezentáció formátumait térképezi; nem arra szolgál, hogy exportálási formátumokat, például PDF, HTML, TIFF vagy képek legyenek kiválasztva. Nem támogatott vagy érvénytelen SourceFormat érték átadása ArgumentException kivételt eredményez.
A régi PPT, PPS és POT fájlok ugyanazt a bináris konténert használják. Ha egy ilyen bemutatót kiterjesztés nélküli adatfolyamból töltenek be, egy PPS vagy POT fájl ezért PPT‑ként azonosítható. Ha meg kell őrizni ezeket a régi alkategóriákat, tartsa meg az eredeti fájlnevet vagy formátum metaadatokat külön, és használja őket a kimeneti fájlnév és formátum kiválasztásakor.
Bemutatók mentése adatfolyamokba
A bemutató írásához, anélkül, hogy végleges fájlútvonalra támaszkodna, adjon át egy írható Stream objektumot és egy SaveFormat értéket a Presentation::Save metódusnak. Ez a megközelítés akkor hasznos, ha a kimenetet egy webszolgáltatásból kell visszaadni, adatbázisban tárolni vagy memóriában feldolgozni.
Az alábbi példa egy új bemutatót fájl adatfolyamba ment:
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <system/io/file_mode.h>
#include <system/io/file_stream.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
using namespace System::IO;
auto presentation = MakeObject<Presentation>();
auto outputStream = MakeObject<FileStream>(u"Output.pptx", FileMode::Create);
presentation->Save(outputStream, SaveFormat::Pptx);
outputStream->Close();
presentation->Dispose();
Bemutatók mentése előre meghatározott nézet típussal
Megadhatja azt a nézetet, amelyben a PowerPoint a mentett bemutatót kezdetben megnyitja. Hívja meg a ViewProperties::set_LastView metódust egy ViewType értékkel a mentés előtt.
Az alábbi példa a Dia-művelet-mester nézetet állítja be kezdeti nézetként:
#include <DOM/IViewProperties.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <ViewType.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto presentation = MakeObject<Presentation>();
presentation->get_ViewProperties()->set_LastView(ViewType::SlideMasterView);
presentation->Save(u"SlideMasterView.pptx", SaveFormat::Pptx);
presentation->Dispose();
Bemutatók mentése a szigorú Office Open XML formátumban
Egy olyan PPTX fájl létrehozásához, amely megfelel az Office Open XML szigorú profiljának, hozza létre a PptxOptions példányt, és hívja a PptxOptions::set_Conformance metódust a Conformance::Iso29500_2008_Strict értékkel. Ezután adja át a beállításokat a Presentation::Save metódusnak.
#include <DOM/Presentation.h>
#include <Export/Conformance.h>
#include <Export/PptxOptions.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto options = MakeObject<PptxOptions>();
options->set_Conformance(Conformance::Iso29500_2008_Strict);
auto presentation = MakeObject<Presentation>();
presentation->Save(u"StrictOfficeOpenXml.pptx", SaveFormat::Pptx, options);
presentation->Dispose();
Bemutatók mentése Office Open XML formátumban Zip64 módban
A szabványos ZIP archívum korlátozza az egyes bejegyzések tömörített és tömörítetlen méretét, a teljes archívum méretét és a bejegyzések számát. Mivel egy PPTX fájl ZIP archívum, egy nagyon nagy bemutató meghaladhatja ezeket a korlátokat. A ZIP64 kiterjesztések megemelik a vonatkozó méret- és bejegyzésszám-korlátokat.
Használja a PptxOptions::set_Zip64Mode metódust annak vezérléséhez, hogy az Aspose.Slides írja‑e a ZIP64 kiterjesztéseket:
IfNecessarycsak akkor használja a ZIP64-et, ha a bemutató meghaladja a szabványos ZIP korlátokat. Ez az alapértelmezett mód.Neverletiltja a ZIP64 kiterjesztéseket.Alwaysmindig beírja a ZIP64 kiterjesztéseket.
Az alábbi példa mindig engedélyezi a ZIP64 kiterjesztéseket a kimeneti bemutatóhoz:
#include <DOM/Presentation.h>
#include <Export/PptxOptions.h>
#include <Export/SaveFormat.h>
#include <Export/Zip64Mode.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto presentation = MakeObject<Presentation>(u"Sample.pptx");
auto options = MakeObject<PptxOptions>();
options->set_Zip64Mode(Zip64Mode::Always);
presentation->Save(u"OutputZip64.pptx", SaveFormat::Pptx, options);
presentation->Dispose();
Warning
Ha aZip64Mode értéke Never, és a bemutató nem fér bele a szabványos ZIP korlátokba, a mentési művelet PptxException kivételt dob.
Bemutatók mentése Office Open XML formátumban tömörítési szintekkel
PPTX kimenet esetén a mentési sebesség és a fájlméret közötti egyensúly érdekében hívja a PptxOptions::set_CompressionLevel metódust. A CompressionLevel felsorolás a következő értékeket biztosítja:
Noneadatot tömörítés nélkül tárol.Level1a leggyorsabb tömörítést és a legnagyobb tömörített kimenetet biztosítja.Level2‑Level5fokozatosan a kisebb kimenetet részesítik előnyben a mentési sebességgel szemben.Level6egyensúlyt teremt a mentési sebesség és a fájlméret között. Ez az alapértelmezett szint.Level7ésLevel8tovább a kisebb kimenet felé hajlik a mentési sebességgel szemben.Level9a legerősebb tömörítést biztosítja, és a legtöbb feldolgozási időt igényli.
Az alábbi példa egy bemutatót tömörítés nélkül ment:
#include <DOM/Presentation.h>
#include <Export/CompressionLevel.h>
#include <Export/PptxOptions.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto presentation = MakeObject<Presentation>(u"Sample.pptx");
auto options = MakeObject<PptxOptions>();
options->set_CompressionLevel(CompressionLevel::None);
presentation->Save(u"OutputNoCompression.pptx", SaveFormat::Pptx, options);
presentation->Dispose();
Az alábbi példa a maximális tömörítési szintet használja:
#include <DOM/Presentation.h>
#include <Export/CompressionLevel.h>
#include <Export/PptxOptions.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto presentation = MakeObject<Presentation>(u"Sample.pptx");
auto options = MakeObject<PptxOptions>();
options->set_CompressionLevel(CompressionLevel::Level9);
presentation->Save(u"OutputMaximumCompression.pptx", SaveFormat::Pptx, options);
presentation->Dispose();
Bemutatók mentése a bélyegkép frissítése nélkül
Amikor egy bemutatót PPTX‑ként ment, a PptxOptions::set_RefreshThumbnail szabályozza a dokumentum bélyegképét:
truea bélyegképet a mentés során újragenerálja. Ez az alapértelmezett érték.falsemegőrzi a meglévő bélyegképet. Ha a bemutatónak nincs bélyegképe, az Aspose.Slides nem generál újat.
Az alábbi példa egy bemutatót a bélyegkép frissítése nélkül ment:
#include <DOM/Presentation.h>
#include <Export/PptxOptions.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto presentation = MakeObject<Presentation>(u"Sample.pptx");
auto options = MakeObject<PptxOptions>();
options->set_RefreshThumbnail(false);
presentation->Save(u"Output.pptx", SaveFormat::Pptx, options);
presentation->Dispose();
Note
A bélyegkép frissítésének letiltása csökkentheti a PPTX fájl mentéséhez szükséges időt.A mentés előrehaladásának frissítései százalékban
A mentési művelet nyomon követéséhez valósítsa meg az IProgressCallback interfészt, és adja át a megvalósítást az ISaveOptions::set_ProgressCallback metódusnak. Az Aspose.Slides ekkor az IProgressCallback::Reporting metóduson keresztül jelenteni fogja a mentés előrehaladását.
Az alábbi példa egy PDF export előrehaladását jeleníti meg a konzolon:
#include <DOM/Presentation.h>
#include <Export/PdfOptions.h>
#include <Export/SaveFormat.h>
#include <IProgressCallback.h>
#include <system/console.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
class ExportProgressHandler : public IProgressCallback
{
public:
void Reporting(double progressValue) override
{
int progress = static_cast<int>(progressValue);
Console::WriteLine(u"{0}% of the file has been converted.", progress);
}
};
auto options = MakeObject<PdfOptions>();
options->set_ProgressCallback(MakeObject<ExportProgressHandler>());
auto presentation = MakeObject<Presentation>(u"Sample.pptx");
presentation->Save(u"Output.pdf", SaveFormat::Pdf, options);
presentation->Dispose();
Note
Az Aspose egy ingyenes PowerPoint Splitter eszközt biztosít, amely az Aspose.Slides API‑val készült. Kiválasztott diák mentése külön PPT vagy PPTX fájlokként.FAQ
Támogatja az Aspose.Slides a részleges vagy „gyors mentést”?
Nem. Minden mentési művelet a teljes kimeneti fájlt írja, nem csak a módosított részeket.
Több szál tudja-e menteni ugyanazt a Presentation példányt?
Nem. A Presentation példány nem szálbiztonságos (/slides/hu/cpp/multithreading/). Egy példányt egyszerre csak egy szál férhet hozzá és mentheti.
Mi történik a hiperlinkekkel és a külsőleg csatolt fájlokkal, amikor mentek egy bemutatót?
A Hyperlinks megmarad a bemutatóban. Az Aspose.Slides nem másolja a külsőleg csatolt fájlokat, ezért a mentett bemutatónak továbbra is hozzá kell férnie azok helyéhez.
Menthetek‑e dokumentum metaadatokat, például szerzőt, címet, céget és létrehozási dátumot?
Igen. Állítsa be a megfelelő document properties értékeket a mentés előtt, és az Aspose.Slides beleírja őket a kimeneti fájlba.