Як завантажити презентації у Java
Aspose.Slides FOSS for Java lets you open any .pptx файл, перевірте його вміст і або збережіть його назад у PPTX, або витягніть дані з нього. У цьому посібнику розглядаються відкриття файлу, перебір слайдів, читання тексту форми та збереження зворотного проходу.
Покроковий посібник
Крок 1: Додайте залежність Maven
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>Крок 2: Відкрити існуючу презентацію
Передайте шлях до файлу в Presentation конструктор. Використовуйте try-with-resources, щоб забезпечити очищення.
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);
}Невідомі XML‑частини у вихідному файлі зберігаються дослівно: бібліотека ніколи не видаляє вміст, який ще не розуміє.
Крок 3: Переглянути слайди
Переберіть усі слайди та виведіть кількість форм на кожному:
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");
}
}Крок 4: Читання тексту форми
Перебирайте форми та читайте текст з форм, які мають 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());
}
}
}
}
}Крок 5: Читання властивостей документа
Отримайте доступ до основних властивостей документа з 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());
}Крок 6: Збереження у режимі round‑trip
Після перегляду або зміни презентації збережіть її назад у PPTX:
prs.save("output.pptx", SaveFormat.PPTX);Збереження за іншим шляхом створює новий файл. Збереження за тим самим шляхом перезаписує оригінал.
Типові проблеми та їх вирішення
java.io.FileNotFoundException
Перевірте, що шлях до .pptx файл правильний щодо робочого каталогу. Використовуйте java.nio.file.Paths для надійного формування шляху:
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
Бібліотека підтримує .pptx (Office Open XML) лише. Заcтарілі .ppt (binary PowerPoint 97-2003) файли не підтримуються.
У форм не має методу getTextFrame()
Деякі форми (Connectors, PictureFrames, GroupShapes) не мають текстового кадру. Перевірте з instanceof IAutoShape перед приведенням типу та доступом до тексту.
Часті запитання
Чи зберігає завантаження весь оригінальний вміст?
Так. Невідомі XML‑частини зберігаються дослівно під час збереження у зворотному циклі. Бібліотека серіалізує лише ті частини моделі документа, які вона розуміє, і пропускає будь‑який XML, який не розпізнає.
Чи можу я завантажити PPTX, захищений паролем?
Презентації, захищені паролем (зашифровані), не підтримуються в цій версії.
Чи підтримується завантаження з InputStream?
Так. Presentation конструктор приймає InputStream:
import java.io.FileInputStream;
try (FileInputStream fis = new FileInputStream("deck.pptx");
Presentation prs = new Presentation(fis)) {
System.out.println("Slides: " + prs.getSlides().size());
}