Prezentációs információk lekérése és frissítése PHP-ben

Áttekintés

Az Aspose.Slides képes azonosítani a bemutató formátumát, és a dokumentum metaadatait elolvasni anélkül, hogy teljes bemutató objektummodellt hozna létre. Ez akkor hasznos, ha fájlokat kell osztályozni, leltárt kell építeni, vagy tulajdonságokat kell ellenőrizni, mielőtt eldöntené, hogy betölti‑e és feldolgozza‑e a bemutató tartalmát.

Ez a cikk a könnyű ellenőrzést mutatja be a PresentationFactory és a PresentationInfo segítségével, valamint a célzott frissítéseket a DocumentProperties használatával.

Ellenőrizze a bemutató formátumát

Ha már betöltött bemutatóval rendelkezik, tekintse meg a Determine the Original Presentation Format cikket a betöltés utáni felismeréshez és a régi PPT, PPS, valamint POT adatfolyamok korlátozásairól.

Használja a PresentationFactory::getPresentationInfo metódust egy fájl ellenőrzéséhez anélkül, hogy Presentation példányt hozna létre. A PresentationInfo::getLoadFormat metódus visszaadja a felismert formátumot, például PPTX, PPT vagy 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;
}

Könnyű bemutató leltár létrehozása

Amikor sok bemutató fájlt dolgoz fel, előfordulhat, hogy egy kompakt leltárra van szüksége érvényesítéshez, indexeléshez vagy egy dokumentumkezelő rendszerhez. Ebben az esetben használja a PresentationFactory::getPresentationInfo metódust egy PresentationInfo objektum megszerzéséhez, majd hívja a PresentationInfo::readDocumentProperties metódust a dokumentum metaadatainak olvasásához. Ez a megközelítés nem hoz létre Presentation példányt, és nem igényli a teljes bemutató objektummodell átlapozását.

A DocumentProperties által biztosított kiterjesztett tulajdonságok a következő leltárértékeket tartalmazzák:

Módszer Leltár értéke
getSlides A diák összes száma.
getHiddenSlides A rejtett diák száma.
getNotes Azon diák száma, amelyekhez jegyzet tartozik.
getParagraphs A bekezdések összes száma, ha rendelkezésre áll.
getWords A szavak összes száma.
getMultimediaClips Az audio‑ és videoklipek összes száma.

Az alábbi példa beolvassa ezeket az értékeket anélkül, hogy Presentation objektumot hozna létre, és egy kompakt leltárt ír ki. Emellett kombinálja a DocumentProperties::getHeadingPairs és a DocumentProperties::getTitlesOfParts eredményét a tartalomcsoportok, például betűtípusok, témák és diacímek megjelenítéséhez.

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++;
            }
        }
    }
}

Minden HeadingPair egy csoportnevet és az abban szereplő elemek számát adja meg. A DocumentProperties::getTitlesOfParts egy lapos, rendezett tömböt térít vissza, ezért a címsorok számát a megfelelő heading pair által meghatározott egymást követő címek alapján kell felhasználni.

Tárolt metaadatok és formátumkorlátozások

A PresentationInfo::readDocumentProperties által visszaadott leltártulajdonságok a forrásdokumentumban elérhető metaadatokat tükrözik. Az Aspose.Slides nem tölti be és nem járja be a bemutató objektummodellt, hogy újraszámolja ezeket az értékeket a hívás során. Hiányzó tulajdonságok alapértelmezett értékekkel jelennek meg, és a tárolt értékek elavulhatnak, ha az utolsó mentő alkalmazás nem frissítette a dokumentumtulajdonságokat.

  • PPTX: A formátum kiterjesztett dokumentumtulajdonságokat biztosít a dia, jegyzet, rejtett dia, bekezdés, szó és multimédia számlálásához, valamint a heading pair-ekhez és a részcímekhez. Elérhetőségük attól függ, mely tulajdonságokat írta a dokumentum készítője.
  • PPT: A bináris formátum tárolhatja a megfelelő dokumentum‑összefoglaló tulajdonságokat. Ha egy tulajdonság hiányzik, vagy a dokumentumkészítő nem frissítette, az Aspose.Slides a tárolt vagy alapértelmezett értéket adja vissza, a diák alapján számolt érték helyett.
  • ODP: Az OpenDocument metaadatok általános dokumentumstatisztikákat tartalmaznak, például oldal-, bekezdés- és szószámot, de ezek az értékek nem felelnek meg minden PowerPoint‑specifikus kiterjesztett tulajdonságnak. A rejtett dia, jegyzet dia, multimédia, heading‑pair és részcím metaadatok előfordulhatnak, vagy hiányozhatnak, és a leltártulajdonságok alapértelmezett értékeket adhatnak vissza. A nulla értéket vagy a üres tömböt ne tekintse végleges bizonyítéknak arra, hogy a megfelelő tartalom hiányzik.

Használja a könnyű metaadat‑megközelítést leltárakhoz és előzetes ellenőrzésekhez. Töltse be a bemutatót, és ellenőrizze annak élő objektummodelljét, ha az eredménynek tükröznie kell a memóriában történt változásokat, vagy ha a tényleges bemutató tartalmát kell ellenőrizni.

A bemutató tulajdonságainak frissítése

A PresentationInfo::readDocumentProperties által visszaadott tulajdonságok módosíthatók anélkül, hogy Presentation példányt hoznánk létre. Alkalmazza a változtatásokat a PresentationInfo::updateDocumentProperties segítségével, majd írja a köthez kapcsolt bemutatót a PresentationInfo::writeBindedPresentation metódussal.

Az alábbi kép az eredeti dokumentumtulajdonságokat mutatja.

A PowerPoint bemutató eredeti dokumentumtulajdonságai

Az alábbi példa megváltoztatja a címet és az utolsó mentés időpontját, majd az eredményt egy új fájlba írja:

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();
}

Az alábbi kép a frissített dokumentumtulajdonságokat mutatja.

A PowerPoint bemutató módosított dokumentumtulajdonságai

Hasznos hivatkozások

A kapcsolódó biztonsági ellenőrzésekkel és védelmi beállításokkal kapcsolatban tekintse meg a következő cikkeket:

GYIK

Hogyan ellenőrizhetem, hogy a betűtípusok beágyazottak-e, és melyek azok?

Töltse be a bemutatót, és használja a Presentation::getFontsManager metódust. Hívja a FontsManager::getEmbeddedFonts metódust a beágyazott betűtípusok lekéréséhez, valamint a FontsManager::getFonts metódust a bemutató által használt betűtípusokhoz. A két eredmény összehasonlításával megtalálhatja azokat a betűtípusokat, amelyek a rendereléshez szükségesek, de nincsenek beágyazva.

Hogyan tudom gyorsan megállapítani, hogy a fájl tartalmaz‑e rejtett diát, és ha igen, hány darabot?

Ha a tárolt dokumentum‑metaadat elegendő, olvassa a DocumentProperties::getHiddenSlides értékét a PresentationFactory::getPresentationInfo és a PresentationInfo::readDocumentProperties segítségével. Ez egy könnyű leltárhoz alkalmas. Ha a bemutatót a memóriában módosították, a tárolt metaadat hiányozhat vagy elavulhat, vagy ha élő értékeket kell ellenőrizni, iteráljon a Presentation::getSlides gyűjteményen, és a Slide::getHidden metódussal ellenőrizze az egyes diák állapotát.

Kideríthetem, hogy egyéni dia‑méret és tájolás van‑e beállítva, és eltér‑e az alapértelmezettől?

Igen. Töltse be a bemutatót, és hívja a Presentation::getSlideSize metódust. Az SlideSize::getType, SlideSize::getSize és SlideSize::getOrientation metódusokkal hasonlítsa össze a jelenlegi beállításokat a várt előre definiált értékekkel és méretekkel.

Van gyors mód arra, hogy lássam, a diagramok külső adatforrásra hivatkoznak‑e?

Igen. Keresse meg minden Chart elemet, és hívja a ChartData::getDataSourceType metódust. Külső munkafüzet esetén hívja a ChartData::getExternalWorkbookPath metódust. Az adatforrás típusa és az elérési út jelzi a külső hivatkozást, de annak elérhetősége külön erőforrás‑ellenőrzést igényel.

Hogyan értékelhetem a „nehéz” diákokat, amelyek lassíthatják a renderelést vagy a PDF‑exportot?

Nincs egyetlen „komplexitás” tulajdonság. Járja be a Presentation::getSlides gyűjteményt, és minden dia BaseSlide::getShapes gyűjteményét. A shape‑számok, nagy képek, effektusok, animációk vagy multimédia jelenléte jelzésként szolgálhat, és mérje le egy reprezentatív renderelés vagy export időt, mielőtt egy diát végleges teljesítmény‑szűkítőnek tekintene.