كيفية تحميل العروض التقديمية في 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: حفظ دورة كاملة
بعد فحص أو تعديل العرض التقديمي، احفظه مرة أخرى كـ 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 ملفات (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());
}