Jak ładować prezentacje w Javie

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

Zobacz także

 Polski