Az eredeti prezentáció formátumának meghatározása Androidon

Áttekintés

Prezentáció betöltése után hívd meg a Presentation.getSourceFormat metódust, hogy meghatározd annak eredeti formátumát. A metódus elérhető az IPresentation.getSourceFormat útján is. Használd, ha a további feldolgozás a jelenlegi példány betöltési 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 példák Java-t és fájlútvonalakat használnak. Androidon cseréld le a minta útvonalakat az alkalmazás által elérhető tároló útvonalakra, például az alkalmazás belső fájlkönyvtárára.

A fájl forrásformátumának olvasása

Ez a példa egy meglévő sample.pptx fájlt igényel. A fájlt betölti, és az alkalmazásfeldolgozási politikát a Presentation.getSourceFormat használatával választja ki, a fájlnév helyett. Módosítsd a bemeneti útvonalat más formátumok kipróbálásához. A példa kiírja a kiválasztott politikát; cseréld le az üzeneteket saját alkalmazáslogikádra.

import com.aspose.slides.Presentation;
import com.aspose.slides.SourceFormat;

Presentation presentation = new Presentation("sample.pptx");
try {
    switch (presentation.getSourceFormat()) {
        case SourceFormat.Ppt:
        case SourceFormat.Pps:
        case SourceFormat.Pot:
            System.out.println("Use the legacy PowerPoint processing policy.");
            break;
        case SourceFormat.Pptx:
            System.out.println("Use the standard PPTX processing policy.");
            break;
        default:
            System.out.println("Use the general policy for source format " + presentation.getSourceFormat() + ".");
            break;
    }
} finally {
    presentation.dispose();
}

A támogatott értékek felismerése

A SourceFormat osztály egész számú konstansokat definiál, amelyek megkülönböztetik a következő prezentációformátumokat. Az alábbi kiterjesztések hagyományosak, nem az eredeti fájlnév visszaállítása.

SourceFormat érték Kiterjesztés Formátum
Ppt .ppt PowerPoint 97–2003 prezentáció
Pptx .pptx Office Open XML prezentáció
Pptm .pptm Makrókkal kibő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ókkal kibővített Office Open XML diavetítés
Pot .pot PowerPoint 97–2003 sablon
Potx .potx Office Open XML sablon
Potm .potm Makrókkal kibő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 olvasása adatfolyamból

Ez a példa egy meglévő sample.pps fájlt igényel. A bájtok memóriás adatfolyamba olvasása olyan bemenetet modellez, amely fájlnév nélkül érkezik, például adatbázis értéket vagy feltöltött byte tömböt. A Presentation konstruktor csak az adatfolyamot kapja.

import com.aspose.slides.Presentation;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;

try {
    byte[] bytes;
    try (FileInputStream input = new FileInputStream("sample.pps");
         ByteArrayOutputStream output = new ByteArrayOutputStream()) {
        byte[] buffer = new byte[8192];
        int bytesRead;
        while ((bytesRead = input.read(buffer)) != -1) {
            output.write(buffer, 0, bytesRead);
        }
        bytes = output.toByteArray();
    }
    try (ByteArrayInputStream stream = new ByteArrayInputStream(bytes)) {
        Presentation presentation = new Presentation(stream);
        try {
            System.out.println("Source format: " + presentation.getSourceFormat());
        } finally {
            presentation.dispose();
        }
    }
} catch (IOException exception) {
    System.err.println("Cannot read the presentation: " + exception.getMessage());
}

A PPT, PPS és POT ugyanazt az alapvető bináris formátumot használja. Fájlúton történő betöltéskor 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 jelenthető; a fenti PPS példa kiírja a SourceFormat.Ppt egész számú értékét.

Ha az alkalmazásodnak meg kell őrizni a különbséget, tartsd meg az eredeti fájlnevet vagy az al‑típus metaadatot külön. A kiterjesztés hasznos útmutató ezekhez a régi al‑típusokhoz, de nem lehet egyetlen alapja a tetszőleges prezentációtartalom azonosításának.

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

Használd a PresentationFactory.getPresentationInfo és az IPresentationInfo.getLoadFormat metódusokat, ha egy fájlt a teljes prezentációs objektummodell betöltése előtt kell megvizsgálnod. Használd a Presentation.getSourceFormat metódust, ha a példány már létezik.

Ez a példa sample.pptx‑t igényel, és kiírja a LoadFormat.Pptx és SourceFormat.Pptx egész számú értékeit. Éles környezetben válaszd ki a feldolgozási szakaszodnak megfelelő API‑t; egy már betöltött prezentációnak nincs szüksége egy második vizsgálatra csak a forrásformátum lekérésére.

import com.aspose.slides.Presentation;
import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.PresentationFactory;

String path = "sample.pptx";
IPresentationInfo information = PresentationFactory.getInstance().getPresentationInfo(path);
System.out.println("Before loading: " + information.getLoadFormat());

Presentation presentation = new Presentation(path);
try {
    System.out.println("After loading: " + presentation.getSourceFormat());
} finally {
    presentation.dispose();
}

Az eredmények különböző osztályok konstansait használják: a LoadFormat és a SourceFormat. Ne hasonlítsd össze a numerikus értékeiket, és ne feltételezd, 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 SourceFormat.Xml‑ként jelenthető.

A forrás- és kimeneti formátumok külön tartása

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

import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

Presentation presentation = new Presentation("sample.pptx");
try {
    System.out.println("Before saving: " + presentation.getSourceFormat());

    presentation.save("converted.odp", SaveFormat.Odp);
    System.out.println("After saving: " + presentation.getSourceFormat());

    Presentation reopened = new Presentation("converted.odp");
    try {
        System.out.println("Reopened output: " + reopened.getSourceFormat());
    } finally {
        reopened.dispose();
    }
} finally {
    presentation.dispose();
}

Egy new Presentation()‑val nulláról létrehozott prezentáció SourceFormat.Pptx‑t jelent. Nincs bemeneti fájlja: ez az újonnan létrehozott példány alapértelmezett értéke, nem bizonyíték arra, hogy PPTX fájlt töltöttek be. Kövesd nyomon, hogy az alkalmazásod létrehozta vagy betöltötte a példányt, ha ez a különbség számít.

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

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

import com.aspose.slides.Presentation;
import com.aspose.slides.SourceFormat;

Presentation presentation = new Presentation("sample.pptx");
try {
    String extension;
    switch (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;
    }

    System.out.println(extension != null ? extension : "No extension mapping is available.");
} finally {
    presentation.dispose();
}

Ez a leképezés nem konvertál fájlt, és nem állítja vissza a stream betöltése során elveszett régi PPS/POT al‑típust. A tényleges mentéshez válassz explicit SaveFormat‑ot, vagy használd a Save Presentations in Their Original Format példában látható konverziót.

Formátumok ellenőrzése mentéssel és újratöltéssel

Ez az önálló példa egy prezentációt hoz létre, és három fájlt ír a munkakönyvtárba, felülírva az azonos nevű fájlokat. Mindegyik kimenetet újra megnyitja útvonal alapján és memóriás adatfolyamon keresztül is. PPTX és ODP esetén mindkét útvonal a mentett formátumot jelenti. PPS esetén a fájlúton történő betöltés Pps‑t jelent, míg a név nélküli adatfolyam betöltése Ppt‑t.

import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;

Presentation presentation = new Presentation();
try {
    int[] formats = { SaveFormat.Pptx, SaveFormat.Odp, SaveFormat.Pps };
    String[] extensions = { "pptx", "odp", "pps" };

    for (int i = 0; i < formats.length; i++) {
        String path = "roundtrip." + extensions[i];
        presentation.save(path, formats[i]);

        Presentation fromFile = new Presentation(path);
        try {
            byte[] bytes;
            try (FileInputStream input = new FileInputStream(path);
                 ByteArrayOutputStream output = new ByteArrayOutputStream()) {
                byte[] buffer = new byte[8192];
                int bytesRead;
                while ((bytesRead = input.read(buffer)) != -1) {
                    output.write(buffer, 0, bytesRead);
                }
                bytes = output.toByteArray();
            }
            try (ByteArrayInputStream stream = new ByteArrayInputStream(bytes)) {
                Presentation fromStream = new Presentation(stream);
                try {
                    System.out.println(extensions[i] + ": file=" + fromFile.getSourceFormat() + ", stream=" + fromStream.getSourceFormat());
                } finally {
                    fromStream.dispose();
                }
            }
        } finally {
            fromFile.dispose();
        }
    }
} catch (IOException exception) {
    System.err.println("Cannot read a saved presentation: " + exception.getMessage());
} finally {
    presentation.dispose();
}

Az alábbi táblázat összefoglalja a forrásformátum azonosítását a megfelelő kiterjesztésű prezentációk esetén. A nevek konstansokat jelölnek; a Java példák kiírják azok egész számú értékét:

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

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

GYIK

A PPTX‑ből betöltött prezentáció ODP‑be mentése megváltoztatja a forrásformátumot?

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

Egy adatfolyam mindig meg tudja különböztetni a régi prezentációt, diavetítést és sablont?

Nem. A PPT, PPS és POT ugyanazt a bináris formátumot használja. Ha a különbség fontos, tartsd meg a fájlnevet vagy az al‑típus metaadatát külön.

Melyik API‑t kell használni, ha a prezentáció már betöltődött?

Olvasd a Presentation.getSourceFormat metódust. Használd a PresentationFactory.getPresentationInfo‑t az betöltés előtti vizsgálathoz.