Open Presentaties in PHP
Inleiding
Naast het creëren van PowerPoint‑presentaties vanaf nul, stelt Aspose.Slides u ook in staat om bestaande presentaties te openen. Na het laden van een presentatie kunt u informatie erover ophalen, slide‑inhoud bewerken, nieuwe slides toevoegen, bestaande verwijderen, en meer.
Presentaties openen
Om een bestaande presentatie te openen, maakt u een exemplaar van de Presentation‑klasse en geeft u het bestandspad door aan de constructor.
Het volgende PHP‑voorbeeld laat zien hoe u een presentatie opent en het aantal slides ophaalt:
// Maak een exemplaar van de Presentation‑klasse en geef een bestandspad door aan de constructor.
$presentation = new Presentation("Sample.pptx");
try {
// Print het totale aantal slides in de presentatie.
echo($presentation->getSlides()->size());
} finally {
$presentation->dispose();
}
Wachtwoordbeveiligde presentaties openen
Wanneer u een wachtwoordbeveiligde presentatie moet openen, geeft u het wachtwoord door aan de setPassword‑methode van de LoadOptions‑klasse om deze te ontsleutelen en te laden. Het volgende PHP‑codefragment demonstreert deze bewerking:
$loadOptions = new LoadOptions();
$loadOptions->setPassword("YOUR_PASSWORD");
$presentation = new Presentation("Sample.pptx", $loadOptions);
try {
// Voer bewerkingen uit op de ontcijferde presentatie.
} finally {
$presentation->dispose();
}
Grote presentaties openen
Aspose.Slides biedt opties—met name de getBlobManagementOptions‑methode in de LoadOptions‑klasse—om u te helpen grote presentaties te laden.
De volgende PHP‑code demonstreert het laden van een grote presentatie (bijvoorbeeld 2 GB):
$filePath = "LargePresentation.pptx";
$loadOptions = new LoadOptions();
// Kies het KeepLocked‑gedrag — het presentiebestand blijft vergrendeld gedurende de levensduur van
// het Presentation‑object, maar het hoeft niet in het geheugen geladen te worden of gekopieerd naar een tijdelijk bestand.
$loadOptions->getBlobManagementOptions()->setPresentationLockingBehavior(PresentationLockingBehavior::KeepLocked);
$loadOptions->getBlobManagementOptions()->setTemporaryFilesAllowed(true);
$loadOptions->getBlobManagementOptions()->setMaxBlobsBytesInMemory(10 * 1024 * 1024); // 10 MB
$presentation = new Presentation($filePath, $loadOptions);
try {
// De grote presentatie is geladen en kan worden gebruikt, terwijl het geheugenverbruik laag blijft.
// Breng wijzigingen aan in de presentatie.
$presentation->getSlides()->get_Item(0)->setName("Very large presentation");
// Sla de presentatie op naar een ander bestand. Het geheugenverbruik blijft laag tijdens deze bewerking.
$presentation->save("LargePresentation-copy.pptx", SaveFormat::Pptx);
// Doe dit niet! Er wordt een I/O‑exception gegooid omdat het bestand vergrendeld blijft tot het Presentation‑object wordt vrijgegeven.
//unlink($filePath);
} finally {
$presentation->dispose();
}
// Het is hier wel OK om dit te doen. Het bronbestand is niet langer vergrendeld door het Presentation‑object.
unlink($filePath);
Info
Om bepaalde beperkingen bij het werken met streams te omzeilen, kan Aspose.Slides de inhoud van een stream kopiëren. Het laden van een grote presentatie vanuit een stream zorgt ervoor dat de presentatie wordt gekopieerd, wat het laden kan vertragen. Daarom raden wij sterk aan om, wanneer u een grote presentatie moet laden, het bestandspad van de presentatie te gebruiken in plaats van een stream.
Bij het maken van een presentatie met grote objecten (video, audio, afbeeldingen met hoge resolutie, enz.) kunt u BLOB management gebruiken om het geheugenverbruik te verminderen.
Externe bronnen beheren
Aspose.Slides levert de IResourceLoadingCallback‑interface waarmee u externe bronnen kunt beheren. De volgende PHP‑code toont hoe u de IResourceLoadingCallback‑interface gebruikt:
class ImageLoadingHandler {
function resourceLoading($args) {
if (java_values($args->getOriginalUri()->endsWith(".jpg"))) {
// Laad een vervangende afbeelding.
$bytes = file_get_contents("aspose-logo.jpg");
$javaByteArray = java_values($bytes);
$args->setData($javaByteArray);
return ResourceLoadingAction::UserProvided;
} else if (java_values($args->getOriginalUri()->endsWith(".png"))) {
// Stel een vervangende URL in.
$args->setUri("http://www.google.com/images/logos/ps_logo2.png");
return ResourceLoadingAction::Default;
}
// Sla alle andere afbeeldingen over.
return ResourceLoadingAction::Skip;
}
}
$loadingHandler = java_closure(new ImageLoadingHandler(), null, java("com.aspose.slides.IResourceLoadingCallback"));
$loadOptions = new LoadOptions();
$loadOptions->setResourceLoadingCallback($loadingHandler);
$presentation = new Presentation("Sample.pptx", $loadOptions);
Presentaties laden zonder ingebedde binaire objecten
Een PowerPoint‑presentatie kan de volgende typen ingebedde binaire objecten bevatten:
- VBA‑project (toegankelijk via Presentation.getVbaProject);
- OLE‑object ingebedde data (toegankelijk via OleEmbeddedDataInfo.getEmbeddedFileData);
- ActiveX‑besturingselement binaire data (toegankelijk via Control.getActiveXControlBinary).
Met behulp van de LoadOptions.setDeleteEmbeddedBinaryObjects‑methode kunt u een presentatie laden zonder enige ingebedde binaire objecten.
Deze methode is handig om potentieel kwaadaardige binaire inhoud te verwijderen. De volgende PHP‑code demonstreert hoe u een presentatie laadt zonder enige ingebedde binaire inhoud:
$loadOptions = new LoadOptions();
$loadOptions->setDeleteEmbeddedBinaryObjects(true);
$presentation = new Presentation("malware.ppt", $loadOptions);
try {
// Voer bewerkingen uit op de presentatie.
} finally {
$presentation->dispose();
}
Veelgestelde vragen
Hoe kan ik herkennen dat een bestand corrupt is en niet geopend kan worden?
U krijgt tijdens het laden een parse‑/formaatvalidatie‑exception. Dergelijke fouten wijzen vaak op een ongeldige ZIP‑structuur of beschadigde PowerPoint‑records.
Wat gebeurt er als vereiste lettertypen ontbreken bij het openen?
Het bestand wordt geopend, maar later kan rendering/export lettertypen vervangen. Configure font substitutions of add the required fonts aan de runtime‑omgeving.
Hoe zit het met ingebedde media (video/audio) bij het openen?
Ze worden beschikbaar als presentatieresources. Als media via externe paden worden weergegeven, zorg er dan voor dat die paden toegankelijk zijn in uw omgeving; anders kan rendering/export de media weglaten.