Zapisywanie prezentacji na Androidzie
Przegląd
Po utworzeniu prezentacji lub otwarciu istniejącej, użyj metody Presentation.save aby zapisać wynik. Aspose.Slides for Android via Java może zapisać prezentację do pliku lub strumienia w formatach PowerPoint, OpenDocument, PDF i innych. Następujące sekcje opisują standardowe operacje zapisu i dostępne opcje dla wyjścia PPTX.
Zapisz prezentacje do plików
Aby zapisać prezentację do pliku, przekaż ścieżkę wyjściową oraz wartość SaveFormat do metody Presentation.save. Wartość formatu określa typ pliku, który tworzy Aspose.Slides.
Poniższy przykład tworzy prezentację i zapisuje ją jako plik PPTX:
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
Presentation presentation = new Presentation();
try {
// Dodaj lub zmodyfikuj treść prezentacji tutaj.
presentation.save("Output.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Zapisz prezentacje w ich pierwotnym formacie
Przykłady wykrywania formatu pliku i strumienia, zachowanie nowo tworzonych prezentacji oraz rozróżnienie między formatem źródłowym a wyjściowym znajdziesz w sekcji Determine the Original Presentation Format.
W aplikacji przetwarzającej wsadowo format wejściowy może nie być znany z góry. Po wczytaniu pliku odczytaj jego pierwotny format za pomocą metody IPresentation.getSourceFormat . Przekaż uzyskaną wartość SourceFormat do SlideUtil.toSaveFormat , aby otrzymać odpowiadającą wartość SaveFormat, a następnie użyj Presentation.save do zapisania zmodyfikowanej prezentacji.
Poniższy kompletny przykład przetwarza każdy plik w katalogu wejściowym, aktualizuje jego tytuł i zapisuje go do katalogu wyjściowego w formacie, z którego został wczytany:
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 oraz PowerPoint XML na ich odpowiadające formaty zapisu prezentacji. Mapuje jedynie formaty źródłowe prezentacji; nie jest przeznaczony do wyboru formatów eksportu, takich jak PDF, HTML, TIFF czy obrazy. Przekazanie nieobsługiwanej lub nieprawidłowej wartości SourceFormat powoduje zgłoszenie IllegalArgumentException.
Starsze pliki PPT, PPS i POT używają tego samego kontenera binarnego. Gdy taka prezentacja zostanie wczytana ze strumienia bez rozszerzenia pliku, plik PPS lub POT może zostać zidentyfikowany jako PPT. Jeśli wymagane jest zachowanie tych starszych podtypów, zachowaj oryginalną nazwę pliku lub metadane formatu oddzielnie i użyj ich przy wyborze nazwy i formatu pliku wyjściowego.
Zapisz prezentacje do strumieni
Aby zapisać prezentację bez konieczności podawania ostatecznej ścieżki pliku, przekaż strumień zapisu oraz wartość SaveFormat do metody Presentation.save. To podejście jest przydatne, gdy wynik ma zostać zwrócony z usługi webowej, przechowany w bazie danych lub przetworzony w pamięci.
Poniższy przykład zapisuje nową prezentację do strumienia pliku:
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();
}
Zapisz prezentacje z określonym typem widoku
Możesz określić widok, w którym PowerPoint otwiera zapisaną prezentację. Użyj metody ViewProperties.setLastView wraz z wartością ViewType przed zapisem.
Poniższy przykład konfiguruje widok Slide Master jako widok początkowy:
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();
}
Zapisz prezentacje w ścisłym formacie Office Open XML
Aby utworzyć plik PPTX zgodny ze ścisłym profilem Office Open XML, utwórz instancję PptxOptions i użyj jej metody setConformance z wartością Conformance.Iso29500_2008_Strict. Następnie przekaż opcje do metody 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();
}
Zapisz prezentacje w formacie Office Open XML w trybie Zip64
Standardowe archiwum ZIP ogranicza skompresowany i nieskompresowany rozmiar każdego wpisu, całkowity rozmiar archiwum oraz liczbę wpisów. Ponieważ plik PPTX jest archiwum ZIP, bardzo duża prezentacja może przekroczyć te limity. Rozszerzenia ZIP64 podnoszą obowiązujące limity rozmiaru i liczby wpisów.
Użyj metody PptxOptions.setZip64Mode, aby kontrolować, czy Aspose.Slides zapisuje rozszerzenia ZIP64:
- IfNecessary używa ZIP64 tylko wtedy, gdy prezentacja przekracza standardowe limity ZIP. Jest to tryb domyślny.
- Never wyłącza rozszerzenia ZIP64.
- Always zawsze zapisuje rozszerzenia ZIP64.
Poniższy przykład zawsze włącza rozszerzenia ZIP64 dla prezentacji wyjściowej:
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();
}
Warning
Jeśli użyto Zip64Mode.Never i prezentacja nie mieści się w standardowych limitach ZIP, operacja zapisu zgłasza PptxException.Zapisz prezentacje w formacie Office Open XML z poziomami kompresji
Dla wyjścia PPTX możesz zrównoważyć szybkość zapisu z rozmiarem pliku, używając metody PptxOptions.setCompressionLevel. Klasa CompressionLevel udostępnia następujące wartości:
- None zapisuje dane bez kompresji.
- Level1 zapewnia najszybszą kompresję i największy skompresowany wynik.
- Level2‑Level5 stopniowo faworyzują mniejszy wynik kosztem szybkości zapisu.
- Level6 równoważy szybkość zapisu i rozmiar pliku. Jest to poziom domyślny.
- Level7 i Level8 jeszcze bardziej faworyzują mniejszy wynik kosztem szybkości zapisu.
- Level9 zapewnia najsilniejszą kompresję i wymaga najwięcej czasu przetwarzania.
Poniższy przykład zapisuje prezentację bez kompresji:
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();
}
Poniższy przykład używa maksymalnego poziomu kompresji:
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();
}
Zapisz prezentacje bez odświeżania miniatury
Gdy prezentacja jest zapisywana jako PPTX, metoda PptxOptions.setRefreshThumbnail kontroluje jej miniaturę dokumentu:
trueodtwarza miniaturę podczas operacji zapisu. Jest to wartość domyślna.falsezachowuje istniejącą miniaturę. Jeśli prezentacja nie posiada miniatury, Aspose.Slides nie generuje jej.
Poniższy przykład zapisuje prezentację bez odświeżania 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();
}
Note
Wyłączenie odświeżania miniatury może skrócić czas potrzebny na zapis pliku PPTX.Zapisywanie aktualizacji postępu w procentach
Aby monitorować operację zapisu, zaimplementuj interfejs IProgressCallback i przekaż implementację do metody ISaveOptions.setProgressCallback. Aspose.Slides następnie wywołuje metodę IProgressCallback.reporting z wartościami postępu podczas eksportu.
Poniższy przykład raportuje postęp eksportu PDF w konsoli:
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();
}
Note
Aspose udostępnia bezpłatny PowerPoint Splitter oparty na API Aspose.Slides. Pozwala on zapisać wybrane slajdy z prezentacji jako oddzielne pliki PPT lub PPTX.FAQ
Czy Aspose.Slides obsługuje zapisy przyrostkowe lub „szybkie zapisy”?
Nie. Każda operacja zapisu tworzy kompletny plik wyjściowy, a nie aktualizuje jedynie zmienione części.
Czy wiele wątków może zapisywać tę samą instancję Presentation?
Nie. Instancja Presentation nie jest bezpieczna wątkowo. Dostęp i zapis każdej instancji powinny odbywać się z jednego wątku naraz.
Co się dzieje z hiperłączami i zewnętrznie powiązanymi plikami przy zapisie prezentacji?
Hiperłącza pozostają w prezentacji. Aspose.Slides nie kopiuje zewnętrznych plików, więc zapisana prezentacja musi nadal mieć dostęp do ich lokalizacji.
Czy mogę zapisać metadane dokumentu, takie jak autor, tytuł, firma i data utworzenia?
Tak. Ustaw odpowiednie właściwości dokumentu przed zapisem, a Aspose.Slides zapisze je w pliku wyjściowym.