Hämta och uppdatera presentationsinformation i PHP
Översikt
Aspose.Slides kan identifiera ett presentationsformat och läsa dokumentets metadata utan att skapa en komplett presentationsobjektmodell. Detta är användbart när du behöver klassificera filer, bygga ett inventarium eller inspektera egenskaper innan du beslutar om du ska läsa in och bearbeta presentationsinnehållet.
Denna artikel visar lättviktig inspektion via PresentationFactory och PresentationInfo, samt riktade uppdateringar via DocumentProperties.
Kontrollera ett presentationsformat
Om du redan har en inläst presentation, se Determine the Original Presentation Format för detektering efter inläsning och begränsningarna för äldre PPT-, PPS- och POT‑strömmar.
Använd PresentationFactory::getPresentationInfo för att inspektera en fil utan att skapa en Presentation‑instans. Metoden PresentationInfo::getLoadFormat rapporterar det upptäckta formatet, såsom PPTX, PPT eller ODP.
use aspose\slides\LoadFormat;
use aspose\slides\PresentationFactory;
$fileNames = ["pres.pptx", "pres.ppt", "pres.odp"];
foreach ($fileNames as $fileName) {
$presentationInfo = PresentationFactory::getInstance()->getPresentationInfo($fileName);
$loadFormat = java_values($presentationInfo->getLoadFormat());
$formatName = "Other (" . $loadFormat . ")";
if ($loadFormat === LoadFormat::Pptx) {
$formatName = "PPTX";
} elseif ($loadFormat === LoadFormat::Ppt) {
$formatName = "PPT";
} elseif ($loadFormat === LoadFormat::Odp) {
$formatName = "ODP";
}
echo $fileName . ": " . $formatName . PHP_EOL;
}
Bygg ett lättviktigt presentationsinventarium
När du bearbetar många presentationsfiler kan du behöva ett kompakt inventarium för validering, indexering eller ett dokumenthanteringssystem. I detta scenario, använd PresentationFactory::getPresentationInfo för att erhålla ett PresentationInfo‑objekt, och anropa sedan PresentationInfo::readDocumentProperties för att läsa dokumentmetadata. Detta tillvägagångssätt skapar ingen Presentation‑instans och kräver inte att du traverserar hela presentationsobjektmodellen.
De utökade egenskaper som exponeras av DocumentProperties erbjuder följande inventarievärden:
| Metod | Inventarievärde |
|---|---|
| getSlides | Totalt antal bilder. |
| getHiddenSlides | Antal dolda bilder. |
| getNotes | Antal bilder som innehåller anteckningar. |
| getParagraphs | Totalt antal stycken, när tillgängligt. |
| getWords | Totalt antal ord. |
| getMultimediaClips | Totalt antal ljud‑ och videoklipp. |
Följande exempel läser dessa värden utan att skapa ett Presentation‑objekt och skriver ut ett kompakt inventarium. Det kombinerar också DocumentProperties::getHeadingPairs med DocumentProperties::getTitlesOfParts för att visa innehållsgrupper såsom teckensnitt, teman och bildrubriker.
use aspose\slides\LoadFormat;
use aspose\slides\PresentationFactory;
$filePath = "sample.pptx";
$presentationInfo = PresentationFactory::getInstance()->getPresentationInfo($filePath);
$documentProperties = $presentationInfo->readDocumentProperties();
$loadFormat = java_values($presentationInfo->getLoadFormat());
$formatName = "Other (" . $loadFormat . ")";
if ($loadFormat === LoadFormat::Pptx) {
$formatName = "PPTX";
} elseif ($loadFormat === LoadFormat::Ppt) {
$formatName = "PPT";
} elseif ($loadFormat === LoadFormat::Odp) {
$formatName = "ODP";
}
echo "File: " . basename($filePath) . PHP_EOL;
echo "Format: " . $formatName . PHP_EOL;
echo "Title: " . java_values($documentProperties->getTitle()) . PHP_EOL;
echo "Author: " . java_values($documentProperties->getAuthor()) . PHP_EOL;
echo "Statistics:" . PHP_EOL;
echo " Slides: " . java_values($documentProperties->getSlides()) . PHP_EOL;
echo " Hidden slides: " . java_values($documentProperties->getHiddenSlides()) . PHP_EOL;
echo " Slides with notes: " . java_values($documentProperties->getNotes()) . PHP_EOL;
echo " Paragraphs: " . java_values($documentProperties->getParagraphs()) . PHP_EOL;
echo " Words: " . java_values($documentProperties->getWords()) . PHP_EOL;
echo " Multimedia clips: " . java_values($documentProperties->getMultimediaClips()) . PHP_EOL;
$headingPairs = $documentProperties->getHeadingPairs();
$titlesOfParts = $documentProperties->getTitlesOfParts();
if (java_is_null($headingPairs) || java_is_null($titlesOfParts)) {
echo "Content groups: not available" . PHP_EOL;
} else {
$headingPairs = java_values($headingPairs);
$titlesOfParts = java_values($titlesOfParts);
$partIndex = 0;
if (count($headingPairs) === 0 || count($titlesOfParts) === 0) {
echo "Content groups: not available" . PHP_EOL;
} else {
echo "Content groups:" . PHP_EOL;
foreach ($headingPairs as $headingPair) {
$partCount = java_values($headingPair->getCount());
echo " " . java_values($headingPair->getName()) . " (" . $partCount . ")" . PHP_EOL;
for ($partOffset = 0; $partOffset < $partCount && $partIndex < count($titlesOfParts); $partOffset++) {
echo " - " . $titlesOfParts[$partIndex] . PHP_EOL;
$partIndex++;
}
}
if ($partIndex < count($titlesOfParts)) {
echo " Other parts:" . PHP_EOL;
while ($partIndex < count($titlesOfParts)) {
echo " - " . $titlesOfParts[$partIndex] . PHP_EOL;
$partIndex++;
}
}
}
}
Varje HeadingPair levererar ett gruppnamn och antalet objekt i den gruppen. DocumentProperties::getTitlesOfParts returnerar en platt, ordnad array, så konsumera det antal på varandra följande titlar som anges av varje rubrikpar.
Sparad metadata och formatbegränsningar
De inventarieegenskaper som returneras av PresentationInfo::readDocumentProperties speglar metadata som finns i källdokumentet. Aspose.Slides laddar inte och traverserar inte presentationsobjektmodellen för att omräkna dessa värden för detta anrop. Saknade egenskaper representeras av standardvärden, och lagrade värden kan vara föråldrade om den applikation som senast sparade filen inte uppdaterade dess dokumentegenskaper.
- PPTX: Formatet tillhandahåller utökade dokumentegenskaper för antal bilder, noteringar, dolda bilder, stycken, ord och multimedia, samt rubrikpar och deltitlar. Tillgängligheten beror på vilka egenskaper som skrevs av dokumentproducenten.
- PPT: Det binära formatet kan lagra motsvarande dokument‑sammanfattningsegenskaper. Om en egenskap saknas eller inte har uppdaterats av dokumentproducenten returnerar Aspose.Slides dess lagrade eller standardvärde snarare än att beräkna det från bilderna.
- ODP: OpenDocument‑metadata ger allmänna dokumentstatistik som sidantal, stycken och ord, men dessa värden motsvarar inte alla PowerPoint‑specifika utökade egenskaper. Metadata för dolda bilder, noteringsbilder, multimedia, rubrikpar och deltitlar kan vara otillgängliga, och inventarieegenskaperna kan returnera standardvärden. Behandla inte ett nollvärde eller en tom array som auktoritativt bevis på att motsvarande innehåll saknas.
Använd den lättvikts‑metadata‑metoden för inventarier och preliminära kontroller. Läs in presentationen och inspektera dess levande objektmodell när resultatet måste återspegla ändringar i minnet eller när du behöver verifiera det faktiska presentationsinnehållet.
Uppdatera presentationsegenskaper
De egenskaper som returneras av PresentationInfo::readDocumentProperties kan också ändras utan att skapa en Presentation‑instans. Applicera ändringarna med PresentationInfo::updateDocumentProperties, och skriv sedan den bundna presentationen med PresentationInfo::writeBindedPresentation.
Den följande bilden visar de ursprungliga dokumentegenskaperna.

Följande exempel ändrar titeln och tidpunkten för senast sparad och skriver resultatet till en ny fil:
use aspose\slides\PresentationFactory;
$sourceFile = "sample.pptx";
$outputFile = "sample_with_updated_properties.pptx";
$presentationInfo = PresentationFactory::getInstance()->getPresentationInfo($sourceFile);
$documentProperties = $presentationInfo->readDocumentProperties();
$documentProperties->setTitle("Quarterly sales report");
$documentProperties->setLastSavedTime(new Java("java.util.Date"));
$presentationInfo->updateDocumentProperties($documentProperties);
$outputStream = new Java("java.io.FileOutputStream", $outputFile);
try {
$presentationInfo->writeBindedPresentation($outputStream);
} finally {
$outputStream->close();
}
Den följande bilden visar de ändrade dokumentegenskaperna.

Användbara länkar
För relaterade säkerhetskontroller och skyddsinställningar, se följande artiklar:
FAQ
Hur kan jag kontrollera om typsnitt är inbäddade och vilka de är?
Läs in presentationen och använd Presentation::getFontsManager. Anropa FontsManager::getEmbeddedFonts för att erhålla de inbäddade typsnitten och FontsManager::getFonts för att få de typsnitt som används av presentationen. Jämför de två resultaten för att hitta typsnitt som krävs för rendering men som inte är inbäddade.
Hur kan jag snabbt avgöra om filen har dolda bilder och hur många?
När sparad dokumentmetadata är tillräcklig, läs DocumentProperties::getHiddenSlides via PresentationFactory::getPresentationInfo och PresentationInfo::readDocumentProperties. Detta är lämpligt för ett lättviktigt inventarium. Om presentationen har modifierats i minnet kan den sparade metadatan saknas eller vara föråldrad, eller så behöver du verifiera levande värden genom att iterera genom Presentation::getSlides och inspektera varje bilds Slide::getHidden-metod istället.
Kan jag upptäcka om en anpassad bildstorlek och orientering används, och om de skiljer sig från standardinställningarna?
Ja. Läs in presentationen och anropa Presentation::getSlideSize. Använd SlideSize::getType, SlideSize::getSize och SlideSize::getOrientation för att jämföra de aktuella inställningarna med den förväntade förinställningen och dimensionerna.
Finns det ett snabbt sätt att se om diagram refererar till externa datakällor?
Ja. Lokalisera varje Chart och anropa ChartData::getDataSourceType. För en extern arbetsbok, anropa ChartData::getExternalWorkbookPath. Datakälltyp och sökväg identifierar en extern referens, men att verifiera om målet är tillgängligt kräver en separat resurskontroll.
Hur kan jag bedöma ‘tunga’ bilder som kan sakta ner rendering eller PDF‑export?
Det finns ingen enskild komplexitetsegenskap. Traversera Presentation::getSlides och varje bilds BaseSlide::getShapes-samling. Använd antalet former samt förekomsten av stora bilder, effekter, animationer eller multimedia som screeningssignaler, och mät en representativ rendering eller export innan du behandlar en bild som en bekräftad prestandaflaskhals.