Ukládat prezentace v Javě

Přehled

Po vytvoření prezentace nebo otevření existující, použijte metodu Presentation.save k zápisu výsledku. Aspose.Slides pro Java může ukládat prezentaci do souboru nebo proudu ve formátech PowerPoint, OpenDocument, PDF a dalších. Následující sekce pokrývají standardní operace ukládání a možnosti dostupné pro výstup PPTX.

Ukládání prezentací do souborů

Pro uložení prezentace do souboru předáte výstupní cestu a hodnotu SaveFormat metodě Presentation.save. Hodnota formátu určuje typ souboru, který Aspose.Slides vytvoří.

Příkladem níže se vytvoří prezentace a uloží jako soubor PPTX:

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

Presentation presentation = new Presentation();
try {
    // Přidat nebo upravit obsah prezentace zde.
    presentation.save("Output.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Ukládání prezentací v jejich původním formátu

Pro příklady detekce souboru a proudu, chování nově vytvořených prezentací a rozdíl mezi zdrojovým a výstupním formátem se podívejte na Determine the Original Presentation Format.

V aplikaci pro dávkové zpracování nemusí být vstupní formát znám předem. Po načtení souboru přečtěte jeho původní formát pomocí metody IPresentation.getSourceFormat. Předejte získanou hodnotu SourceFormat metodě SlideUtil.toSaveFormat pro získání odpovídající hodnoty SaveFormat, a pak použijte Presentation.save k zápisu upravené prezentace.

Následující kompletní příklad zpracuje každý soubor ve vstupním adresáři, aktualizuje jeho název a uloží jej do výstupního adresáře ve formátu, ze kterého byl načten:

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 mapuje PPT, PPTX, ODP, PPTM, PPSX, PPSM, POTX, POTM, PPS, POT, OTP, FODP a PowerPoint XML na jejich odpovídající formáty pro ukládání prezentací. Mapuje pouze zdrojové formáty prezentací; není určen pro výběr exportních formátů jako PDF, HTML, TIFF nebo obrázky. Předání nepodporované nebo neplatné hodnoty SourceFormat vede k IllegalArgumentException.

Starší soubory PPT, PPS a POT používají stejný binární kontejner. Když je taková prezentace načtena z proudu bez přípony souboru, může být soubor PPS nebo POT identifikován jako PPT. Pokud je vyžadováno zachování těchto starých podtypů, uchovejte původní název souboru nebo metadata formátu samostatně a použijte je při výběru výstupního názvu souboru a formátu.

Ukládání prezentací do proudů

Pro zápis prezentace bez použití konečné cesty k souboru předáte zapisovatelný proud a hodnotu SaveFormat metodě Presentation.save. Tento přístup je užitečný, když musí být výstup vrácen z webové služby, uložen v databázi nebo zpracován v paměti.

Následující příklad uloží novou prezentaci do souborového proudu:

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

Ukládání prezentací s předdefinovaným typem zobrazení

Můžete určit, v jakém zobrazení PowerPoint při otevření uložené prezentace nejprve zobrazí. Před uložením použijte metodu ViewProperties.setLastView s hodnotou ViewType.

Následující příklad nastaví zobrazení Slide Master jako počáteční zobrazení:

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

Ukládání prezentací v přísném formátu Office Open XML

Aby byl vytvořen soubor PPTX, který odpovídá přísnému profilu Office Open XML, vytvořte instanci PptxOptions a použijte její metodu setConformance s hodnotou Conformance.Iso29500_2008_Strict. Poté předáte možnosti metodě Presentation.save.

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

Ukládání prezentací ve formátu Office Open XML v režimu Zip64

Standardní archiv ZIP omezuje komprimovanou i nekomprimovanou velikost každé položky, celkovou velikost archivu a počet položek. Protože je soubor PPTX archiv ZIP, může velmi velká prezentace tato omezení překročit. Rozšíření ZIP64 zvyšují platná omezení velikosti a počtu položek.

Přiřaďte metodě PptxOptions.setZip64Mode kontrolu, zda Aspose.Slides zapisuje rozšíření ZIP64:

  • IfNecessary používá ZIP64 pouze když prezentace překročí standardní limity ZIP. Toto je výchozí režim.
  • Never zakáže rozšíření ZIP64.
  • Always vždy zapisuje rozšíření ZIP64.

Následující příklad vždy zapne rozšíření ZIP64 pro výstupní prezentaci:

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

Ukládání prezentací ve formátu Office Open XML s úrovněmi komprese

Pro výstup PPTX můžete vyvážit rychlost ukládání vůči velikosti souboru pomocí metody PptxOptions.setCompressionLevel. Třída CompressionLevel poskytuje následující hodnoty:

  • None ukládá data bez komprese.
  • Level1 poskytuje nejrychlejší kompresi a největší komprimovaný výstup.
  • Level2Level5 postupně upřednostňují menší výstup před rychlostí ukládání.
  • Level6 vyvažuje rychlost ukládání a velikost souboru. Toto je výchozí úroveň.
  • Level7 a Level8 dále upřednostňují menší výstup před rychlostí ukládání.
  • Level9 poskytuje nejsilnější kompresi a vyžaduje nejvíce výpočetního času.

Následující příklad uloží prezentaci bez komprese:

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

Následující příklad použije maximální úroveň komprese:

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

Ukládání prezentací bez obnovení miniatury

Když se prezentace uloží jako PPTX, metoda PptxOptions.setRefreshThumbnail řídí její miniaturu dokumentu:

  • true regeneruje miniaturu během operace ukládání. Toto je výchozí hodnota.
  • false zachová existující miniaturu. Pokud prezentace nemá miniaturu, Aspose.Slides ji nevyrobí.

Následující příklad uloží prezentaci bez obnovení její miniatury:

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

Získávání aktualizací průběhu ukládání v procentech

Pro sledování operace ukládání implementujte rozhraní IProgressCallback a předáte implementaci metodě ISaveOptions.setProgressCallback. Aspose.Slides pak volá metodu IProgressCallback.reporting s hodnotami průběhu během exportu.

Následující příklad hlásí průběh exportu PDF do konzole:

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

FAQ

Podporuje Aspose.Slides inkrementální nebo „rychlé uložení“?

Ne. Každá operace ukládání zapíše kompletní výstupní soubor místo aktualizace pouze změněných částí.

Může více vláken ukládat stejnou instanci Presentation?

Ne. Instance Presentation není thread‑safe. Přistupujte a ukládejte každou instanci pouze z jednoho vlákna najednou.

Co se stane s hypertextovými odkazy a externě propojenými soubory při uložení prezentace?

Hyperlinky zůstávají v prezentaci. Aspose.Slides nekopíruje externě propojené soubory, takže uložená prezentace musí i nadále mít přístup k jejich umístěním.

Mohu uložit metadata dokumentu, jako je autor, název, společnost a datum vytvoření?

Ano. Před uložením nastavte příslušné vlastnosti dokumentu a Aspose.Slides je zapíše do výstupního souboru.