Az eredeti prezentáció formátumának meghatározása PHP-ben

Áttekintés

Az előadás betöltése után hívja meg a Presentation::getSourceFormat metódust, hogy meghatározza az eredeti formátumát. Használja, ha a későbbi feldolgozás a betöltött példány formátumától függ.

A forrásformátum különbözik a kimeneti fájlhoz kiválasztott SaveFormat formátumtól. Egy másik formátumba mentés nem változtatja meg a meglévő példány forrásformátumát.

A forrásformátum beolvasása egy fájlból

Ez a példa egy meglévő sample.pptx fájlt igényel. Betölti a fájlt, és a Presentation::getSourceFormat használatával választja ki az alkalmazás feldolgozási szabályát, nem a fájlnév alapján. Módosítsa a bemeneti útvonalat más formátumok kipróbálásához. A példa kiírja a kiválasztott szabályt; cserélje le az üzeneteket saját alkalmazáslogikájára.

use aspose\slides\Presentation;
use aspose\slides\SourceFormat;

$presentation = new Presentation("sample.pptx");
try {
    switch (java_values($presentation->getSourceFormat())) {
        case SourceFormat::Ppt:
        case SourceFormat::Pps:
        case SourceFormat::Pot:
            echo "Use the legacy PowerPoint processing policy." . PHP_EOL;
            break;
        case SourceFormat::Pptx:
            echo "Use the standard PPTX processing policy." . PHP_EOL;
            break;
        default:
            echo "Use the general policy for source format " . java_values($presentation->getSourceFormat()) . "." . PHP_EOL;
            break;
    }
} finally {
    $presentation->dispose();
}

A támogatott értékek felismerése

A SourceFormat osztály egész számú állandókat definiál, amelyek megkülönböztetik a következő előadásformátumokat. Az alábbi kiterjesztések konvencionálisak, nem az eredeti fájlnév rekonstrukciója.

SourceFormat érték Kiterjesztés Formátum
Ppt .ppt PowerPoint 97–2003 prezentáció
Pptx .pptx Office Open XML prezentáció
Pptm .pptm Makróval bővített Office Open XML prezentáció
Pps .pps PowerPoint 97–2003 diavetítés
Ppsx .ppsx Office Open XML diavetítés
Ppsm .ppsm Makróval bővített Office Open XML diavetítés
Pot .pot PowerPoint 97–2003 sablon
Potx .potx Office Open XML sablon
Potm .potm Makróval bővített Office Open XML sablon
Odp .odp OpenDocument prezentáció
Otp .otp OpenDocument prezentációs sablon
Fodp .fodp Flat XML ODF prezentáció
Xml .xml PowerPoint XML prezentáció

A forrásformátum beolvasása egy adatfolyamból

Ez a példa egy meglévő sample.pps fájlt igényel. A bájtok memóriaprofilba olvasása olyan bemenetet szimulál, amely fájlnév nélkül érkezik, például adatbázisérték vagy feltöltött bájt tömb. A Presentation konstruktor csak a folyamot kapja.

use aspose\slides\Presentation;

$inputFile = new Java("java.io.File", "sample.pps");
$bytes = java("java.nio.file.Files")->readAllBytes($inputFile->toPath());
$stream = new Java("java.io.ByteArrayInputStream", $bytes);
try {
    $presentation = new Presentation($stream);
    try {
        echo "Source format: " . java_values($presentation->getSourceFormat()) . PHP_EOL;
    } finally {
        $presentation->dispose();
    }
} finally {
    $stream->close();
}

A PPT, PPS és POT ugyanazt a bináris formátumot használja. Fájlútvonal alapján a kiterjesztés segíthet megkülönböztetni a diavetítést vagy a sablont. Fájlnév nélkül a régi PPS és POT tartalom SourceFormat::Ppt‑ként jelentkezhet; a fenti PPS példa a SourceFormat::Ppt egész számú értékét írja ki.

Ha az alkalmazásnak meg kell őriznie a különbséget, tartsa meg az eredeti fájlnevet vagy a részlet metaadatait külön. A kiterjesztés hasznos útmutató ezekhez a régi alcsaládokhoz, de nem lehet az egyetlen alap a tetszőleges előadástartalom azonosításához.

Az észlelés összehasonlítása betöltés előtt és után

Használja a PresentationFactory::getPresentationInfo és a PresentationInfo::getLoadFormat metódusokat, ha egy fájlt kell megvizsgálnia a teljes előadásobjektum modell betöltése előtt. Használja a Presentation::getSourceFormat metódust, ha a példány már létezik.

Ez a példa sample.pptx‑et igényel, és kiírja a LoadFormat::Pptx valamint a SourceFormat::Pptx egész számú értékeit. Éles környezetben válassza a feldolgozási szintnek megfelelő API‑t; egy már betöltött előadásnak nem kell második alkalommal ellenőrizni csak a forrásformátum lekéréséhez.

use aspose\slides\Presentation;
use aspose\slides\PresentationFactory;

$path = "sample.pptx";
$information = PresentationFactory::getInstance()->getPresentationInfo($path);
echo "Before loading: " . java_values($information->getLoadFormat()) . PHP_EOL;

$presentation = new Presentation($path);
try {
    echo "After loading: " . java_values($presentation->getSourceFormat()) . PHP_EOL;
} finally {
    $presentation->dispose();
}

Az eredmények különböző osztályok állandóiból származnak: LoadFormat és SourceFormat. Ne hasonlítsa össze a numerikus értékeket, és ne feltételezze, hogy minden formátum azonos észlelési eredményt ad. A PowerPoint XML betöltés előtt LoadFormat::Unknown‑ként, betöltés után pedig SourceFormat::Xml‑ként jelentkezhet.

A forrás- és kimeneti formátumok külön kezelése

Ez a példa sample.pptx‑et igényel, és converted.odp‑t ír. Kiírja a SourceFormat::Pptx egész számú értékét a mentés előtt és után is. Az ODP kimenetből betöltött új példány csak Odp‑t jelent.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation("sample.pptx");
try {
    echo "Before saving: " . java_values($presentation->getSourceFormat()) . PHP_EOL;

    $presentation->save("converted.odp", SaveFormat::Odp);
    echo "After saving: " . java_values($presentation->getSourceFormat()) . PHP_EOL;

    $reopened = new Presentation("converted.odp");
    try {
        echo "Reopened output: " . java_values($reopened->getSourceFormat()) . PHP_EOL;
    } finally {
        $reopened->dispose();
    }
} finally {
    $presentation->dispose();
}

Az new Presentation()-nel az elejétől létrehozott előadás SourceFormat::Pptx‑t jelent. Nincs bemeneti fájlja: ez az újonnan létrehozott példány alapértelmezett értéke, nem annak bizonyítéka, hogy PPTX fájlt töltött be. Kövesse nyomon, hogy az alkalmazás létrehozta vagy betöltötte-e a példányt, ha a különbség számít.

Forrásformátum leképezése kiterjesztésre

A következő példa sample.pptx‑et igényel. Minden jelenleg támogatott SourceFormat értéket leképez egy konvencionális kiterjesztésre, a bemeneti fájlnév elemzése nélkül. A tartalék elkerüli, hogy nem felismert értékhez csendben kiterjesztést rendeljünk.

use aspose\slides\Presentation;
use aspose\slides\SourceFormat;

$presentation = new Presentation("sample.pptx");
try {
    $extension = null;
    switch (java_values($presentation->getSourceFormat())) {
        case SourceFormat::Ppt:
            $extension = ".ppt";
            break;
        case SourceFormat::Pptx:
            $extension = ".pptx";
            break;
        case SourceFormat::Pptm:
            $extension = ".pptm";
            break;
        case SourceFormat::Pps:
            $extension = ".pps";
            break;
        case SourceFormat::Ppsx:
            $extension = ".ppsx";
            break;
        case SourceFormat::Ppsm:
            $extension = ".ppsm";
            break;
        case SourceFormat::Pot:
            $extension = ".pot";
            break;
        case SourceFormat::Potx:
            $extension = ".potx";
            break;
        case SourceFormat::Potm:
            $extension = ".potm";
            break;
        case SourceFormat::Odp:
            $extension = ".odp";
            break;
        case SourceFormat::Otp:
            $extension = ".otp";
            break;
        case SourceFormat::Fodp:
            $extension = ".fodp";
            break;
        case SourceFormat::Xml:
            $extension = ".xml";
            break;
        default:
            $extension = null;
            break;
    }

    echo ($extension !== null ? $extension : "No extension mapping is available.") . PHP_EOL;
} finally {
    $presentation->dispose();
}

Ez a leképezés nem konvertál fájlt, és nem állítja helyre a folyam betöltése során elveszett régi PPS/POT alcsaládot. A tényleges mentéshez válasszon egy SaveFormat értéket kifejezetten, vagy használja a Save Presentations in Their Original Format példában bemutatott konverziót.

Formátumok ellenőrzése mentés és újraolvasás révén

Ez az önálló példa létrehoz egy előadást, és három fájlt ír a munkakönyvtárba, felülírva az azonos nevű fájlokat. Minden kimenetet újból megnyit útvonalként és memóriaprofilon keresztül is. PPTX és ODP esetén mindkét út jelentése megegyezik a mentett formátummal. PPS esetén az útvonal szerinti betöltés Pps‑t jelent, míg a fájlnév nélküli azonos bájtok betöltése Ppt‑t ad.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation();
try {
    $formats = [SaveFormat::Pptx, SaveFormat::Odp, SaveFormat::Pps];
    $extensions = ["pptx", "odp", "pps"];

    foreach ($formats as $index => $format) {
        $path = "roundtrip." . $extensions[$index];
        $presentation->save($path, $format);

        $fromFile = new Presentation($path);
        try {
            $inputFile = new Java("java.io.File", $path);
            $bytes = java("java.nio.file.Files")->readAllBytes($inputFile->toPath());
            $stream = new Java("java.io.ByteArrayInputStream", $bytes);
            try {
                $fromStream = new Presentation($stream);
                try {
                    echo $extensions[$index] . ": file=" . java_values($fromFile->getSourceFormat()) . ", stream=" . java_values($fromStream->getSourceFormat()) . PHP_EOL;
                } finally {
                    $fromStream->dispose();
                }
            } finally {
                $stream->close();
            }
        } finally {
            $fromFile->dispose();
        }
    }
} finally {
    $presentation->dispose();
}

Az alábbi táblázat összegzi a forrásformátum azonosítást az egyező kiterjesztésű előadásoknál. A nevek állandókat jelölnek; a PHP példák a numerikus értékeket írják ki:

Mentett formátum SourceFormat fájlúton SourceFormat névtelen folyamról
PPT Ppt Ppt
PPTX, PPTM Pptx, Pptm megfelelően Ugyanaz, mint fájlúton
PPS Pps Ppt
PPSX, PPSM Ppsx, Ppsm megfelelően Ugyanaz, mint fájlúton
POT Pot Ppt
POTX, POTM Potx, Potm megfelelően Ugyanaz, mint fájlúton
ODP, OTP Odp, Otp megfelelően Ugyanaz, mint fájlúton
FODP Fodp Fodp
PowerPoint XML Xml Xml

A PPS/POT tartalom névtelen folyamok esetén Ppt‑ként azonosítható. A táblázat a formátumazonosítást írja le, nem a konverzió során minden előadásjellemző megőrzését.

GYIK

Megváltoztatja-e az ODP‑ba mentés a PPTX‑ből betöltött előadás forrásformátumát?

Nem. A meglévő példány továbbra is Pptx‑et jelent. Az ODP‑ból betöltött példány Odp‑t jelent.

A folyam mindig meg tudja különböztetni a régi előadást, diavetítést és sablont?

Nem. A PPT, PPS és POT ugyanazt a bináris formátumot használja. Tartsa meg a fájlnevet vagy a részlet metaadatait külön, ha ez a megkülönböztetés szükséges.

Melyik API‑t kell használni, ha az előadás már betöltött?

Olvassa a Presentation::getSourceFormat metódust. Használja a PresentationFactory::getPresentationInfo ellenőrzéshez betöltés előtt.