كيفية إنشاء عروض تقديمية في جافا
يتيح لك Aspose.Slides FOSS for Java إنشاء عروض PowerPoint بالكامل باستخدام Java دون الاعتماد على Microsoft Office. يوضح هذا الدليل كيفية إنشاء عرض تقديمي جديد، وإضافة الشرائح والأشكال، وتنسيق النص، وحفظ النتيجة.
دليل خطوة بخطوة
الخطوة 1: إضافة تبعية Maven
أضف Aspose.Slides FOSS إلى pom.xml الخاص بك. يلزم Java 21 أو أحدث.
<dependency>
<groupId>org.aspose.slides.foss</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>1.0.0</version>
</dependency>تحقق من التثبيت:
import org.aspose.slides.foss.Presentation;
Presentation prs = new Presentation();
prs.dispose();
System.out.println("Aspose.Slides FOSS ready");الخطوة 2: استيراد الفئات المطلوبة
استورد الفئة Presentation والعدد التعدادي SaveFormat اللازمين للحفظ.
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;جميع ثوابت نوع الشكل موجودة في org.aspose.slides.foss.ShapeType. تعديلات التنسيق (FillType، NullableBool) موجودة أيضًا في org.aspose.slides.foss.
الخطوة 3: إنشاء عرض تقديمي
استخدم new Presentation() وضمّنه في try-with-resources. يبدأ عرض تقديمي جديد بشريحة فارغة واحدة.
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.export.SaveFormat;
try (Presentation prs = new Presentation()) {
System.out.println("Slides in new presentation: " + prs.getSlides().size());
prs.save("output.pptx", SaveFormat.PPTX);
}مهم: يجب دائمًا استخدام try-with-resources أو استدعاء prs.dispose() في كتلة finally. لن يتم تحرير الموارد بشكل صحيح خلاف ذلك.
الخطوة 4: الوصول إلى شريحة
الشريحة الأولى في الفهرس 0. العرض التقديمي الفارغ يحتوي على شريحة واحدة بالضبط.
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0); // zero-based index
System.out.println("Slide at index 0: " + slide);
prs.save("output.pptx", SaveFormat.PPTX);
}الخطوة 5: إضافة شكل
استخدم slide.getShapes().addAutoShape() لإضافة AutoShape. المعلمات هي (shapeType, x, y, width, height) جميعها بالنقاط (نقطة واحدة = 1/72 بوصة؛ الشريحة القياسية هي 720 × 540 نقطة).
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
try (Presentation prs = new Presentation()) {
ISlide slide = prs.getSlides().get(0);
// Rectangle at (50, 50) with 400 wide and 120 tall
IAutoShape shape = slide.getShapes().addAutoShape(
ShapeType.RECTANGLE, 50, 50, 400, 120
);
// Attach a text frame
shape.addTextFrame("Hello from Aspose.Slides FOSS!");
prs.save("with-shape.pptx", SaveFormat.PPTX);
}الخطوة 6: حفظ العرض التقديمي
استدعِ prs.save(path, SaveFormat.PPTX) قبل خروج كتلة try. PPTX هو تنسيق الإخراج الوحيد المدعوم.
prs.save("result.pptx", SaveFormat.PPTX);يتم كتابة الملف بطريقة ذرية؛ إذا حدث خطأ قبل هذا الاستدعاء، لن يتم إنشاء ملف إخراج.
مثال عملي كامل
البرنامج التالي ينشئ عرض تقديمي من شريحتين مع شكل عنوان في الشريحة الأولى وجدول في الشريحة الثانية.
import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.ITextFrame;
import org.aspose.slides.foss.IPortionFormat;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.FillType;
import org.aspose.slides.foss.NullableBool;
import org.aspose.slides.foss.export.SaveFormat;
import org.aspose.slides.foss.drawing.Color;
public class CreatePresentation {
public static void main(String[] args) {
try (Presentation prs = new Presentation()) {
// --- Slide 1: title shape ---
ISlide slide1 = prs.getSlides().get(0);
IAutoShape title = slide1.getShapes().addAutoShape(
ShapeType.RECTANGLE, 40, 40, 640, 80
);
ITextFrame tf = title.addTextFrame("Q1 Results: Executive Summary");
IPortionFormat fmt = tf.getParagraphs().get(0)
.getPortions().get(0).getPortionFormat();
fmt.setFontHeight(32);
fmt.setFontBold(NullableBool.TRUE);
fmt.getFillFormat().setFillType(FillType.SOLID);
fmt.getFillFormat().getSolidFillColor().setColor(
Color.fromArgb(255, 0, 70, 127)
);
// --- Slide 2: table ---
prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0));
ISlide slide2 = prs.getSlides().get(1);
ITable table = slide2.getShapes().addTable(
40, 40,
new double[]{200.0, 120.0, 120.0},
new double[]{40.0, 40.0, 40.0}
);
String[] headers = {"Region", "Revenue", "Growth"};
String[][] data = {
{"North", "$1.2M", "+8%"},
{"South", "$0.9M", "+4%"},
};
for (int col = 0; col < headers.length; col++) {
table.getRows().get(0).get(col).getTextFrame().setText(headers[col]);
}
for (int row = 0; row < data.length; row++) {
for (int col = 0; col < data[row].length; col++) {
table.getRows().get(row + 1).get(col)
.getTextFrame().setText(data[row][col]);
}
}
prs.save("q1-results.pptx", SaveFormat.PPTX);
}
System.out.println("Saved q1-results.pptx");
}
}المشكلات الشائعة والحلول
IllegalStateException: Presentation already disposed
أنت تستدعي طرقًا على كائن Presentation بعد خروج كتلة try-with-resources. احرص دائمًا على إبقاء جميع الأعمال داخل كتلة try.
UnsupportedOperationException عند الحفظ
يحدث هذا عند محاولة حفظ بصيغة غير PPTX، أو عند استخدام ميزة غير مدعومة (مثل المخططات أو الرسوم المتحركة).
الشكل يظهر خارج منطقة الشريحة المرئية
الشرائح بحجم 720 × 540 نقطة بشكل افتراضي. احتفظ بـ x + width <= 720 و y + height <= 540.
الأسئلة المتكررة
ما هو حجم الشريحة الافتراضي؟
إنشاء شريحة جديدة Presentation() بحجم قياسي 10 × 7.5 بوصة (720 × 540 نقطة). تغيير حجم الشريحة غير مدعوم بعد في هذا الإصدار.
هل يمكنني إضافة أكثر من شريحة واحدة؟
نعم. استدعِ prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0)) لإضافة شريحة فارغة والوصول إليها عبر الفهرس:
prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0));
ISlide slide2 = prs.getSlides().get(1);هل يمكنني فتح ملف موجود وإضافة شرائح؟
نعم:
try (Presentation prs = new Presentation("existing.pptx")) {
prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0));
prs.save("existing.pptx", SaveFormat.PPTX);
}ما الصيغ التي يمكنني الحفظ إليها؟
يتم دعم SaveFormat.PPTX فقط. تصدير إلى PDF أو HTML أو SVG أو الصور غير متاح في هذا الإصدار.