Як завантажити презентації в Java
Aspose.Slides FOSS for Java дозволяє відкривати будь‑який .pptx файл, переглядати його вміст і або зберігати його назад у PPTX, або витягувати дані з нього. Цей посібник охоплює відкриття файлу, перебір слайдів, читання тексту форми та round‑tripping збереження.
Покроковий посібник
Крок 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: Збереження у зворотному циклі
Після перевірки або зміни презентації збережіть її назад у 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). Файли Legacy .ppt (бінарний PowerPoint 97‑2003) не підтримуються.
У Shapes немає методу getTextFrame()
Деякі форми (Connectors, PictureFrames, GroupShapes) не мають текстового кадру. Перевірте за допомогою instanceof IAutoShape перед приведенням типу та доступом до тексту.
Часті запитання
Чи зберігає завантаження весь оригінальний вміст?
Так. Невідомі частини XML зберігаються дослівно під час збереження у режимі round‑trip. Бібліотека лише серіалізує ті частини моделі документа, які вона розуміє, і пропускає будь‑який 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());
}