Öppna presentationer i PHP
Introduktion
Aspose.Slides för PHP via Java kan läsa in PowerPoint- och OpenDocument-presentationer från filer och strömmar. När en presentation har lästs in kan du undersöka dess struktur, redigera bilder, hantera resurser och spara den i originalformatet eller ett annat stödd format.
Inläsningsbeteendet kan anpassas via klassen LoadOptions. Till exempel kan du ange ett öppningslösenord, hålla stora binära objekt utanför Java-heapminnet, kontrollera externa resurser eller utelämna inbäddad binär data.
Öppna presentationer
Efter att ha läst in en fil eller ström kan du fastställa dess ursprungliga presentationsformat för att välja hur din applikation bearbetar den.
För att öppna en befintlig presentation, skicka dess filsökväg till Presentation-konstruktorn. Frigör presentationen efter användning så att filhandtag, temporära data och andra resurser släpps omedelbart.
Följande PHP‑exempel visar hur du öppnar en presentation och hämtar antalet bilder:
use aspose\slides\Presentation;
$presentation = new Presentation("sample.pptx");
try {
echo("Slide count: " . java_values($presentation->getSlides()->size()) . "\n");
} finally {
$presentation->dispose();
}
Öppna lösenordsskyddade presentationer
Ett öppningslösenord krypterar presentationsinnehållet. För att läsa in hela presentationen, skicka rätt lösenord till LoadOptions::setPassword och ange alternativen till Presentation-konstruktorn. Inläsning misslyckas när lösenordet saknas eller är felaktigt.
use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
$loadOptions = new LoadOptions();
$loadOptions->setPassword("open_password");
$presentation = new Presentation("encrypted-presentation.pptx", $loadOptions);
try {
echo("Slide count: " . java_values($presentation->getSlides()->size()) . "\n");
} finally {
$presentation->dispose();
}
För lösenorddetektering, validering och krypteringsarbetsflöden, se Password-Protect Presentations. Om en krypterad presentation avsiktligt sparats med offentliga dokumentegenskaper, kan dessa egenskaper läsas utan lösenord; se Manage Presentation Properties.
Öppna stora presentationer
LoadOptions::getBlobManagementOptions returnerar alternativ som styr hur Aspose.Slides hanterar stora binära objekt såsom bilder, ljud och video. Du kan hålla källfilen låst, tillåta temporära filer och begränsa mängden BLOB‑data som behålls i minnet.
Följande PHP‑kod visar hur man läser in en stor presentation (till exempel 2 GB):
use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
use aspose\slides\PresentationLockingBehavior;
use aspose\slides\SaveFormat;
$filePath = "large-presentation.pptx";
$loadOptions = new LoadOptions();
$loadOptions->getBlobManagementOptions()->setPresentationLockingBehavior(PresentationLockingBehavior::KeepLocked);
$loadOptions->getBlobManagementOptions()->setTemporaryFilesAllowed(true);
$loadOptions->getBlobManagementOptions()->setMaxBlobsBytesInMemory(10 * 1024 * 1024);
$presentation = new Presentation($filePath, $loadOptions);
try {
$presentation->getSlides()->get_Item(0)->setName("Large presentation");
$presentation->save("large-presentation-copy.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Note
Med PresentationLockingBehavior::KeepLocked förblir källfilen låst tills presentation‑instansen frigörs. Flytta, skriv över eller radera inte källfilen medan den instansen är aktiv.
Aspose.Slides kan kopiera innehållet i en indataström under inläsning. För stora presentationer är en filsökväg därför i allmänhet mer effektiv än en ström. Se Manage BLOBs för ytterligare lagrings‑ och minneshanteringsalternativ.
Kontrollera externa resurser
LoadOptions::setResourceLoadingCallback accepterar en implementation av Java‑gränssnittet IResourceLoadingCallback via PHP/Java Bridge. Återanropet kan leverera ersättningsdata, omdirigera en resurs, använda standardläsaren eller hoppa över resursen. Detta är användbart när presentationer innehåller externa bilder som måste lösas enligt applikationsspecifika säkerhets- eller lagringsregler.
use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
use aspose\slides\ResourceLoadingAction;
class ImageLoadingHandler {
function resourceLoading($args) {
$originalUri = strtolower(java_values($args->getOriginalUri()));
$approvedImagePath = "approved-image.jpg";
$isJpeg = substr($originalUri, -4) === ".jpg";
if (!$isJpeg || !file_exists($approvedImagePath)) {
return ResourceLoadingAction::Skip;
}
$imageData = file_get_contents($approvedImagePath);
if ($imageData === false) {
echo("The approved replacement image could not be read.\n");
return ResourceLoadingAction::Skip;
}
$args->setData(java_values($imageData));
return ResourceLoadingAction::UserProvided;
}
}
$loadingHandler = java_closure(new ImageLoadingHandler(), null, java("com.aspose.slides.IResourceLoadingCallback"));
$loadOptions = new LoadOptions();
$loadOptions->setResourceLoadingCallback($loadingHandler);
$presentation = new Presentation("presentation-with-external-images.pptx", $loadOptions);
try {
echo("Slide count: " . java_values($presentation->getSlides()->size()) . "\n");
} finally {
$presentation->dispose();
}
Läs in presentationer utan inbäddade binära objekt
En presentation kan innehålla inbäddad binär data som en applikation inte behöver eller inte vill behålla. Exempel inkluderar:
- VBA‑projekt, tillgängliga via Presentation::getVbaProject;
- inbäddad OLE‑data, tillgänglig via OleEmbeddedDataInfo::getEmbeddedFileData;
- ActiveX‑kontrolldata, tillgänglig via Control::getActiveXControlBinary.
Ställ in LoadOptions::setDeleteEmbeddedBinaryObjects till true för att ta bort denna binära data under inläsning. Spara den inlästa presentationen för att behålla det sanerade resultatet.
Detta alternativ minskar exponeringen för oönskade inbäddade paket, men det är inte ett fullständigt system för skadlig‑koddetektion eller innehållssanering.
use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$loadOptions = new LoadOptions();
$loadOptions->setDeleteEmbeddedBinaryObjects(true);
$presentation = new Presentation("presentation-with-embedded-data.pptx", $loadOptions);
try {
$presentation->save("presentation-without-embedded-data.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
FAQ
Hur kan jag avgöra att en fil är skadad och inte kan öppnas?
Aspose.Slides kastar ett pars‑ eller formatfel under inläsning. Hantera detta fel separat från ett fel på felaktigt lösenord så att applikationen kan rapportera orsaken korrekt.
Vad händer om nödvändiga typsnitt saknas?
Presentationen kan fortfarande läsas in, men rendering och export kan ersätta typsnitt. Du kan configure font substitution eller provide custom fonts för att göra utdata mer förutsägbar.
Läser inläsning av en presentation också in dess inbäddade media?
Inbäddat ljud och video blir tillgängligt via presentationsobjektmodellen. Externa resurser löses upp enligt den konfigurerade resursinläsningsbeteendet och kan vara otillgängliga om deras platser inte kan nås.