Jak ładować prezentacje w Javie
Aspose.Slides FOSS for Java pozwala otworzyć dowolny plik .pptx, sprawdzić jego zawartość i albo zapisać go ponownie jako PPTX, albo wyodrębnić z niego dane. Ten przewodnik obejmuje otwieranie pliku, iterację slajdów, odczytywanie tekstu kształtów oraz zapis w trybie round‑tripping.
Przewodnik krok po kroku
Krok 1: Dodaj zależność Maven
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Krok 2: Otwórz istniejącą prezentację
Przekaż ścieżkę pliku do konstruktora Presentation. Użyj try-with-resources, aby zapewnić sprzątanie.
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IShape;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IDocumentProperties;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation prs = new Presentation("input.pptx")) {
System.out.println("Slide count: " + prs.getSlides().size());
prs.save("output.pptx", SaveFormat.PPTX);
}Nieznane części XML w pliku źródłowym są zachowywane dosłownie: biblioteka nigdy nie usuwa treści, której jeszcze nie rozumie.
Krok 3: Sprawdź slajdy
Iteruj po wszystkich slajdach i wydrukuj liczbę ich kształtów:
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IShape;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IDocumentProperties;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation prs = new Presentation("deck.pptx")) {
for (int i = 0; i < prs.getSlides().size(); i++) {
ISlide slide = prs.getSlides().get(i);
int shapeCount = slide.getShapes().size();
System.out.println("Slide " + i + ": " + shapeCount + " shapes");
}
}Krok 4: Odczyt tekstu kształtu
Iteruj po kształtach i odczytaj tekst z kształtów, które mają TextFrame:
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IShape;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IDocumentProperties;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation prs = new Presentation("deck.pptx")) {
for (ISlide slide : prs.getSlides()) {
for (IShape shape : slide.getShapes()) {
if (shape instanceof IAutoShape) {
IAutoShape autoShape = (IAutoShape) shape;
ITextFrame tf = autoShape.getTextFrame();
if (tf != null && !tf.getText().isEmpty()) {
System.out.println(" Shape text: " + tf.getText());
}
}
}
}
}Krok 5: Odczyt właściwości dokumentu
Uzyskaj dostęp do podstawowych właściwości dokumentu z prs.getDocumentProperties():
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IShape;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IDocumentProperties;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation prs = new Presentation("deck.pptx")) {
IDocumentProperties props = prs.getDocumentProperties();
System.out.println("Title: " + props.getTitle());
System.out.println("Author: " + props.getAuthor());
System.out.println("Subject: " + props.getSubject());
}Krok 6: Zapis Round‑Trip
Po sprawdzeniu lub modyfikacji prezentacji, zapisz ją ponownie jako PPTX:
prs.save("output.pptx", SaveFormat.PPTX);Zapisywanie w inną ścieżkę tworzy nowy plik. Zapisywanie w tę samą ścieżkę nadpisuje oryginał.
Typowe problemy i rozwiązania
java.io.FileNotFoundException
Sprawdź, czy ścieżka do pliku .pptx jest poprawna względem katalogu roboczego. Użyj java.nio.file.Paths do solidnego budowania ścieżek:
import java.nio.file.Path;
import java.nio.file.Paths;
Path path = Paths.get("assets", "deck.pptx");
try (Presentation prs = new Presentation(path.toString())) {
// ...
}Exception: File format is not supported
Biblioteka obsługuje wyłącznie .pptx (Office Open XML). Pliki starszego formatu .ppt (binarny PowerPoint 97‑2003) nie są obsługiwane.
Kształty nie mają metody getTextFrame()
Niektóre kształty (Connectors, PictureFrames, GroupShapes) nie mają ramki tekstowej. Sprawdź instanceof IAutoShape przed rzutowaniem i dostępem do tekstu.
Najczęściej zadawane pytania
Czy ładowanie zachowuje całą oryginalną treść?
Tak. Nieznane części XML są zachowywane dosłownie przy zapisie w trybie round‑trip. Biblioteka serializuje tylko te części modelu dokumentu, które rozumie, i przepuszcza wszelkie XML, których nie rozpoznaje.
Czy mogę wczytać plik PPTX zabezpieczony hasłem?
Prezentacje zabezpieczone hasłem (zaszyfrowane) nie są obsługiwane w tej edycji.
Czy ładowanie z InputStream jest obsługiwane?
Tak. Konstruktor Presentation przyjmuje InputStream:
import java.io.FileInputStream;
try (FileInputStream fis = new FileInputStream("deck.pptx");
Presentation prs = new Presentation(fis)) {
System.out.println("Slides: " + prs.getSlides().size());
}