Com carregar presentacions a Java
Aspose.Slides FOSS for Java lets you open any .pptx fitxer, inspeccioneu el seu contingut i deseu-lo de nou a PPTX o extraieu-ne dades. Aquesta guia cobreix l’obertura d’un fitxer, la iteració de les diapositives, la lectura del text de les formes i el procés de desar de nou.
Guia pas a pas
Pas 1: Afegeix la dependència Maven
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Pas 2: Obre una presentació existent
Passeu la ruta del fitxer al Presentation constructor. Utilitzeu try-with-resources per garantir la neteja.
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);
}Les parts XML desconegudes del fitxer d’origen es conserven literalment: la biblioteca mai elimina contingut que encara no entén.
Pas 3: Inspecciona les diapositives
Itera sobre totes les diapositives i imprimeix el nombre de formes:
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");
}
}Pas 4: Llegeix el text de les formes
Itereu sobre les formes i llegiu el text de les formes que tenen un 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());
}
}
}
}
}Pas 5: Llegeix les propietats del document
Accediu a les propietats principals del document des de 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());
}Pas 6: Desament d’anar i tornar
Després d’inspeccionar o modificar la presentació, desa-la de nou a PPTX:
prs.save("output.pptx", SaveFormat.PPTX);Desar a un camí diferent crea un fitxer nou. Desar al mateix camí sobrescriu l’original.
Problemes comuns i solucions
java.io.FileNotFoundException
Comproveu que la ruta cap al .pptx fitxer és correcta respecte al directori de treball. Utilitzeu java.nio.file.Paths per a una construcció robusta de rutes:
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
La biblioteca admet .pptx (Office Open XML) només. Les antigues .ppt (binary PowerPoint 97-2003) no són compatibles.
Les formes no tenen el mètode getTextFrame()
Algunes formes (Connectors, PictureFrames, GroupShapes) no tenen un marc de text. Comproveu amb instanceof IAutoShape abans de fer el casting i accedir al text.
Preguntes freqüents
La càrrega conserva tot el contingut original?
Sí. Les parts XML desconegudes es conserven literalment en el desament d’anada i tornada. La biblioteca només serialitza les parts del model del document que entén i transmet sense modificar cap XML que no reconeix.
Puc carregar un PPTX protegit per contrasenya?
Les presentacions protegides amb contrasenya (encriptades) no són compatibles en aquesta edició.
Es suporta la càrrega des d’un InputStream?
Sí. El Presentation constructor accepta un InputStream:
import java.io.FileInputStream;
try (FileInputStream fis = new FileInputStream("deck.pptx");
Presentation prs = new Presentation(fis)) {
System.out.println("Slides: " + prs.getSlides().size());
}