Prezentációk mentése Java-ban

Áttekintés

Miután létrehoz egy prezentációt vagy nyiss meg egy meglévőt, használja a Presentation.save metódust az eredmény írásához. Az Aspose.Slides for Java képes egy prezentációt fájlba vagy adatfolyamba menteni PowerPoint, OpenDocument, PDF és egyéb formátumokban. Az alábbi szakaszok bemutatják a szabványos mentési műveleteket és a PPTX kimenethez elérhető beállításokat.

Prezentációk mentése fájlokba

Egy prezentáció fájlba mentéséhez adja meg a kimeneti útvonalat és egy SaveFormat értéket a Presentation.save metódusnak. A formátum érték meghatározza, hogy milyen típusú fájlt hoz létre az Aspose.Slides.

A következő példa egy prezentációt hoz létre, és PPTX fájlként menti el:

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

Presentation presentation = new Presentation();
try {
    // Itt adja hozzá vagy módosítsa a prezentáció tartalmát.

    presentation.save("Output.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Prezentációk mentése eredeti formátumban

Az fájl- és adatfolyam‑detektálási példákért, az újonnan létrehozott prezentációk viselkedéséért, valamint a forrás‑ és kimeneti formátumok közti különbségért lásd a Az eredeti prezentáció formátumának meghatározása témát.

Kötegelt feldolgozási alkalmazásban a bemeneti formátum előre nem ismert. Egy fájl betöltése után olvassa ki az eredeti formátumát az IPresentation.getSourceFormat metódussal. A kapott SourceFormat értéket adja át a SlideUtil.toSaveFormat metódusnak, hogy megkapja a megfelelő SaveFormat értéket, majd a Presentation.save metódussal írja ki a módosított prezentációt.

A következő teljes példa minden fájlt feldolgoz egy bemeneti könyvtárban, frissíti a címét, és a betöltéskor használt formátumban menti egy kimeneti könyvtárba:

import com.aspose.slides.Presentation;
import com.aspose.slides.SlideUtil;
import java.io.File;

File inputDirectory = new File("Input");
File outputDirectory = new File("Output");

if (!outputDirectory.exists() && !outputDirectory.mkdirs()) {
    System.err.println("Cannot create the output directory.");
}

File[] inputFiles = inputDirectory.listFiles(File::isFile);
if (inputFiles != null && outputDirectory.isDirectory()) {
    for (File inputFile : inputFiles) {
        try {
            Presentation presentation = new Presentation(inputFile.getPath());
            try {
                int saveFormat = SlideUtil.toSaveFormat(presentation.getSourceFormat());
                presentation.getDocumentProperties().setTitle("Processed by the batch application");

                File outputFile = new File(outputDirectory, inputFile.getName());
                presentation.save(outputFile.getPath(), saveFormat);
            } finally {
                presentation.dispose();
            }
        } catch (IllegalArgumentException exception) {
            System.err.println("Cannot map the source format of '" + inputFile.getPath() + "': " + exception.getMessage());
        } catch (Exception exception) {
            System.err.println("Cannot process '" + inputFile.getPath() + "': " + exception.getMessage());
        }
    }
}

SlideUtil.toSaveFormat a PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP és a PowerPoint XML formátumokat a megfelelő prezentáció‑mentési formátumokra térképezi. Csak a prezentáció forrásformátumait térképezi; nem arra szolgál, hogy exportálási formátumokat, például PDF‑et, HTML‑t, TIFF‑et vagy képeket válasszon. Nem támogatott vagy érvénytelen SourceFormat érték átadása IllegalArgumentException-t eredményez.

A régi PPT, PPS és POT fájlok ugyanazt a bináris tárolót használják. Ha egy ilyen prezentációt kiterjesztés nélküli adatfolyamból tölt be, a PPS vagy POT fájl ezért PPT‑ként azonosítható. Ha meg kell őrizni ezeket a régi altípusokat, tartsa meg az eredeti fájlnevet vagy a formátum‑metaadatot külön, és használja fel a kimeneti fájlnév és formátum kiválasztásakor.

Prezentációk mentése adatfolyamokba

Egy prezentáció írásához anélkül, hogy végleges fájlútra támaszkodna, adjon meg egy írható adatfolyamot és egy SaveFormat értéket a Presentation.save metódusnak. Ez a megközelítés hasznos, ha a kimenetet webszolgáltatásból kell visszaadni, adatbázisban tárolni vagy memóriában feldolgozni.

A következő példa egy új prezentációt fájl‑adatfolyamba ment:

import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
import java.io.FileOutputStream;
import java.io.OutputStream;

Presentation presentation = new Presentation();
try {
    OutputStream outputStream = new FileOutputStream("Output.pptx");
    try {
        presentation.save(outputStream, SaveFormat.Pptx);
    } finally {
        outputStream.close();
    }
} finally {
    presentation.dispose();
}

Prezentációk mentése előre meghatározott nézet típussal

Megadhatja azt a nézetet, amelyben a PowerPoint kezdetben megnyit egy mentett prezentációt. Használja a ViewProperties.setLastView metódust egy ViewType értékkel a mentés előtt.

A következő példa a Dia‑mester nézetet állítja be kezdeti nézetként:

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

Presentation presentation = new Presentation();
try {
    presentation.getViewProperties().setLastView(ViewType.SlideMasterView);
    presentation.save("SlideMasterView.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Prezentációk mentése a szigorú Office Open XML formátumban

Egy PPTX fájl létrehozásához, amely megfelel az Office Open XML szigorú profiljának, hozzon létre egy PptxOptions példányt, és hívja meg a setConformance metódust a Conformance.Iso29500_2008_Strict értékkel. Ezután adja át a beállításokat a Presentation.save metódusnak.

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

PptxOptions options = new PptxOptions();
options.setConformance(Conformance.Iso29500_2008_Strict);

Presentation presentation = new Presentation();
try {
    presentation.save("StrictOfficeOpenXml.pptx", SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

Prezentációk mentése Office Open XML formátumban Zip64 módban

Egy szabványos ZIP archívum korlátozza az egyes bejegyzések tömörített és tömörítetlen méretét, a teljes archívum méretét és a bejegyzések számát. Mivel egy PPTX fájl ZIP archívum, egy nagyon nagy prezentáció túlcsordulhat ezeken a korlátokon. A ZIP64 kiterjesztések megemelik a vonatkozó méret‑ és bejegyzésszám‑korlátokat.

Használja a PptxOptions.setZip64Mode metódust annak vezérlésére, hogy az Aspose.Slides ZIP64 kiterjesztéseket írjon‑e:

  • IfNecessary csak akkor használ ZIP64‑et, ha a prezentáció meghaladja a szabványos ZIP‑korlátokat. Ez az alapértelmezett mód.
  • Never letiltja a ZIP64 kiterjesztéseket.
  • Always mindig ír ZIP64 kiterjesztéseket.

A következő példa mindig engedélyezi a ZIP64 kiterjesztéseket a kimeneti prezentációhoz:

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

Presentation presentation = new Presentation("Sample.pptx");
try {
    PptxOptions options = new PptxOptions();
    options.setZip64Mode(Zip64Mode.Always);

    presentation.save("OutputZip64.pptx", SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

Prezentációk mentése Office Open XML formátumban tömörítési szintekkel

PPTX kimenet esetén a PptxOptions.setCompressionLevel metódus használatával egyensúlyozhat a mentés sebessége és a fájlméret között. A CompressionLevel osztály a következő értékeket biztosítja:

  • None adatot tömörítés nélkül tárol.
  • Level1 a leggyorsabb tömörítést és a legnagyobb tömörített kimenetet biztosítja.
  • Level2‑től Level5 fokozatosan a kisebb kimenetet részesítik előnyben a mentés sebessége rovására.
  • Level6 az mentési sebesség és a fájlméret egyensúlyát biztosítja. Ez az alapértelmezett szint.
  • Level7 és Level8 tovább részesítik előnyben a kisebb kimenetet a sebesség rovására.
  • Level9 a legerősebb tömörítést biztosítja, de a legtöbb feldolgozási időt igényli.

A következő példa tömörítés nélkül ment egy prezentációt:

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

Presentation presentation = new Presentation("Sample.pptx");
try {
    PptxOptions options = new PptxOptions();
    options.setCompressionLevel(CompressionLevel.None);

    presentation.save("OutputNoCompression.pptx", SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

A következő példa a maximális tömörítési szintet használja:

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

Presentation presentation = new Presentation("Sample.pptx");
try {
    PptxOptions options = new PptxOptions();
    options.setCompressionLevel(CompressionLevel.Level9);

    presentation.save("OutputMaximumCompression.pptx", SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

Prezentációk mentése a miniatűr frissítése nélkül

Amikor egy prezentációt PPTX‑ként mentünk, a PptxOptions.setRefreshThumbnail metódus szabályozza a dokumentum‑miniatűrt:

  • true újragenerálja a miniatűrt a mentés során. Ez az alapértelmezett érték.
  • false megőrzi a meglévő miniatűrt. Ha a prezentációnak nincs miniatűre, az Aspose.Slides nem hoz létre újat.

A következő példa a miniatűr frissítése nélkül ment egy prezentációt:

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

Presentation presentation = new Presentation("Sample.pptx");
try {
    PptxOptions options = new PptxOptions();
    options.setRefreshThumbnail(false);

    presentation.save("Output.pptx", SaveFormat.Pptx, options);
} finally {
    presentation.dispose();
}

Mentési folyamat frissítéseinek megjelenítése százalékban

A mentés felügyeletéhez valósítsa meg az IProgressCallback interfészt, és adja át a megvalósítást az ISaveOptions.setProgressCallback metódusnak. Az Aspose.Slides ekkor a IProgressCallback.reporting metódust hívja meg a folyamat értékeivel az exportálás során.

A következő példa egy PDF‑exportálás előrehaladását írja ki a konzolra:

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

class ExportProgressHandler implements IProgressCallback {
    public void reporting(double progressValue) {
        int progress = (int) progressValue;
        System.out.println(progress + "% of the file has been converted.");
    }
}

PdfOptions options = new PdfOptions();
options.setProgressCallback(new ExportProgressHandler());

Presentation presentation = new Presentation("Sample.pptx");
try {
    presentation.save("Output.pdf", SaveFormat.Pdf, options);
} finally {
    presentation.dispose();
}

GYIK

Támogatja-e az Aspose.Slides az inkrementális vagy „gyors mentést”?

Nem. Minden mentési művelet egy teljes kimeneti fájlt ír, nem csak a módosult részeket.

Több szál is mentheti-e ugyanazt a Presentation példányt?

Nem. A Presentation példány nem szálbiztos. Minden példányt csak egy szálról lehet elérni és menteni egyszerre.

Mi történik a hiperhivatkozásokkal és a külsőleg hivatkozott fájlokkal, amikor mentek egy prezentációt?

A Hyperlinks a prezentációban marad. Az Aspose.Slides nem másolja a külsőleg hivatkozott fájlokat, így a mentett prezentációnak továbbra is el kell tudnia érni azok helyét.

Menthetek-e dokumentummetaadatokat, például szerzőt, címet, céget és létrehozási dátumot?

Igen. Állítsa be a megfelelő dokumentumtulajdonságokat a mentés előtt, és az Aspose.Slides azokat a kimeneti fájlba írja.