Presentaties openen in C++
Inleiding
Aspose.Slides for C++ kan PowerPoint- en OpenDocument-presentaties laden vanuit bestanden en streams. Nadat een presentatie is geladen, kunt u de structuur inspecteren, dia’s bewerken, bronnen beheren en deze opslaan in het oorspronkelijke of een ander ondersteund formaat.
Het laadgedrag kan aangepast worden via de LoadOptions klasse. Bijvoorbeeld kunt u een openingswachtwoord opgeven, grote binaire objecten buiten het geheugen houden, externe bronnen beheren of ingebedde binaire gegevens weglaten.
Presentaties openen
Na het laden van een bestand of stream, kunt u bepalen wat het oorspronkelijke presentatieformaat is om te kiezen hoe uw applicatie het verwerkt.
Om een bestaande presentatie te openen, geeft u het bestandspad door aan de Presentation constructor. Maak de presentatie vrij na gebruik zodat bestands‑handles, tijdelijke gegevens en andere bronnen onmiddellijk worden vrijgegeven.
Het volgende C++‑voorbeeld toont hoe u een presentatie opent en het aantal dia’s opvraagt:
#include <DOM/ISlideCollection.h>
#include <DOM/Presentation.h>
#include <system/console.h>
using namespace Aspose::Slides;
using namespace System;
auto presentation = MakeObject<Presentation>(u"sample.pptx");
Console::WriteLine(u"Slide count: {0}", presentation->get_Slides()->get_Count());
presentation->Dispose();
Wachtwoord‑beveiligde presentaties openen
Een openingswachtwoord versleutelt de inhoud van de presentatie. Om de volledige presentatie te laden, geeft u het juiste wachtwoord door aan LoadOptions::set_Password en geeft u de opties door aan de Presentation constructor. Het laden mislukt wanneer het wachtwoord ontbreekt of onjuist is.
#include <DOM/ISlideCollection.h>
#include <DOM/LoadOptions.h>
#include <DOM/Presentation.h>
#include <system/console.h>
using namespace Aspose::Slides;
using namespace System;
auto loadOptions = MakeObject<LoadOptions>();
loadOptions->set_Password(u"open_password");
auto presentation = MakeObject<Presentation>(u"encrypted-presentation.pptx", loadOptions);
Console::WriteLine(u"Slide count: {0}", presentation->get_Slides()->get_Count());
presentation->Dispose();
Voor wachtwoorddetectie, validatie en versleutelingsworkflows, zie Password-Protect Presentations. Als een versleutelde presentatie opzettelijk is opgeslagen met openbare documenteigenschappen, kunnen die eigenschappen zonder wachtwoord gelezen worden; zie Manage Presentation Properties.
Grote presentaties openen
LoadOptions::get_BlobManagementOptions regelt hoe Aspose.Slides binaire grote objecten zoals afbeeldingen, audio en video behandelt. U kunt het bronbestand vergrendeld houden, tijdelijke bestanden toestaan en de hoeveelheid BLOB‑gegevens die in het geheugen worden bewaard beperken.
De volgende C++‑code demonstreert het laden van een grote presentatie (bijvoorbeeld 2 GB):
#include <DOM/ISlide.h>
#include <DOM/LoadOptions.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <IBlobManagementOptions.h>
#include <PresentationLockingBehavior.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
const String filePath = u"large-presentation.pptx";
auto loadOptions = MakeObject<LoadOptions>();
auto blobOptions = loadOptions->get_BlobManagementOptions();
blobOptions->set_PresentationLockingBehavior(PresentationLockingBehavior::KeepLocked);
blobOptions->set_IsTemporaryFilesAllowed(true);
blobOptions->set_MaxBlobsBytesInMemory(10 * 1024 * 1024);
auto presentation = MakeObject<Presentation>(filePath, loadOptions);
presentation->get_Slide(0)->set_Name(u"Large presentation");
presentation->Save(u"large-presentation-copy.pptx", SaveFormat::Pptx);
presentation->Dispose();
Note
MetPresentationLockingBehavior::KeepLocked blijft het bronbestand vergrendeld tot het Presentation‑object wordt vrijgegeven. Verplaats, overschrijf of verwijder het bronbestand niet zolang dat object bestaat.
Aspose.Slides kan de inhoud van een invoerstroom kopiëren tijdens het laden. Voor grote presentaties is een bestandspad doorgaans efficiënter dan een stream. Zie Manage BLOBs voor extra opslag‑ en geheugen‑beheeropties.
Externe bronnen beheren
LoadOptions::set_ResourceLoadingCallback accepteert een implementatie van IResourceLoadingCallback. De callback kan vervangende gegevens leveren, een bron omleiden, de standaardloader gebruiken of de bron overslaan. Dit is handig wanneer presentaties externe afbeeldingen bevatten die moeten worden opgezocht volgens toepassingsspecifieke beveiligings‑ of opslagregels.
#include <DOM/ISlideCollection.h>
#include <DOM/LoadOptions.h>
#include <DOM/Presentation.h>
#include <IResourceLoadingArgs.h>
#include <IResourceLoadingCallback.h>
#include <ResourceLoadingAction.h>
#include <system/console.h>
#include <system/io/file.h>
#include <system/string_comparison.h>
using namespace Aspose::Slides;
using namespace System;
using namespace System::IO;
class ImageLoadingHandler : public IResourceLoadingCallback
{
public:
ResourceLoadingAction ResourceLoading(SharedPtr<IResourceLoadingArgs> args) override
{
auto isJpeg = args->get_OriginalUri().EndsWith(u".jpg", StringComparison::OrdinalIgnoreCase);
if (!isJpeg || !File::Exists(u"approved-image.jpg"))
{
return ResourceLoadingAction::Skip;
}
auto imageData = File::ReadAllBytes(u"approved-image.jpg");
args->SetData(imageData);
return ResourceLoadingAction::UserProvided;
}
};
auto loadOptions = MakeObject<LoadOptions>();
loadOptions->set_ResourceLoadingCallback(MakeObject<ImageLoadingHandler>());
auto presentation = MakeObject<Presentation>(u"presentation-with-external-images.pptx", loadOptions);
Console::WriteLine(u"Slide count: {0}", presentation->get_Slides()->get_Count());
presentation->Dispose();
Presentaties laden zonder ingebedde binaire objecten
Een presentatie kan ingebedde binaire gegevens bevatten die een applicatie niet nodig heeft of niet wil behouden. Voorbeelden zijn:
- VBA‑projecten, beschikbaar via IPresentation::get_VbaProject;
- ingebedde OLE‑gegevens, beschikbaar via IOleEmbeddedDataInfo::get_EmbeddedFileData;
- ActiveX‑controlgegevens, beschikbaar via IControl::get_ActiveXControlBinary.
Geef true door aan LoadOptions::set_DeleteEmbeddedBinaryObjects om deze binaire gegevens tijdens het laden te verwijderen. Sla de geladen presentatie op om het opgeschoonde resultaat te behouden.
Deze optie vermindert de blootstelling aan ongewenste ingebedde payloads, maar is geen volledige malware‑detectie‑ of content‑sanitisatiesysteem.
#include <DOM/LoadOptions.h>
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto loadOptions = MakeObject<LoadOptions>();
loadOptions->set_DeleteEmbeddedBinaryObjects(true);
auto presentation = MakeObject<Presentation>(u"presentation-with-embedded-data.pptx", loadOptions);
presentation->Save(u"presentation-without-embedded-data.pptx", SaveFormat::Pptx);
presentation->Dispose();
FAQ
Hoe kan ik zien dat een bestand corrupt is en niet geopend kan worden?
Aspose.Slides geeft tijdens het laden een parse‑ of formaat‑exception. Verwerk die fout apart van een onjuist‑wachtwoord‑fout zodat de applicatie de oorzaak nauwkeurig kan melden.
Wat gebeurt er als verplichte lettertypen ontbreken?
De presentatie kan nog steeds geladen worden, maar weergave en export kunnen lettertypen substitueren. U kunt lettertype‑substitutie configureren of aangepaste lettertypen leveren om de output voorspelbaarder te maken.
Laadt het laden van een presentatie ook de ingebedde media?
Ingebedde audio en video zijn beschikbaar via het presentatiemodel. Externe bronnen worden opgezocht volgens het geconfigureerde gedrag voor resource‑loading en kunnen onbeschikbaar zijn als hun locaties niet toegankelijk zijn.