چگونه ارائه‌ها را در جاوا ایجاد کنیم

چگونه ارائه‌ها را در جاوا ایجاد کنیم

Aspose.Slides FOSS برای 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");

مرحله ۲: وارد کردن کلاس‌های مورد نیاز

کلاس Presentation و enum 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 هستند.


مرحله ۳: ایجاد یک ارائه

از 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 استفاده کنید یا در یک بلوک finally prs.dispose() را فراخوانی کنید. در غیر این صورت منابع به‌درستی آزاد نخواهند شد.


مرحله ۴: دسترسی به یک اسلاید

اسلاید اول در ایندکس 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 نقطه = 1/72 اینچ؛ اسلاید استاندارد 720 × 540 pt).

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: ذخیرهٔ ارائه

قبل از خروج از بلوک try، prs.save(path, SaveFormat.PPTX) را فراخوانی کنید. 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

شما پس از خروج از بلوک try-with-resources، متدهایی را روی شیء Presentation فراخوانی می‌کنید. همیشه تمام کارها را داخل بلوک try نگه دارید.

UnsupportedOperationException هنگام ذخیره‌سازی

این هنگام تلاش برای ذخیره با فرمت دیگری به جز PPTX یا هنگام استفاده از ویژگی پشتیبانی‌نشده (مانند نمودارها یا انیمیشن‌ها) رخ می‌دهد.

شکل خارج از ناحیه قابل مشاهده اسلاید ظاهر می‌شود

اسلایدها به‌صورت پیش‌فرض 720 × 540 نقطه هستند. نگه دارید x + width <= 720 و y + height <= 540.


سوالات متداول

اندازه پیش‌فرض اسلاید چیست؟

یک Presentation() جدید اسلایدها را با اندازه استاندارد ۱۰ × ۷٫۵ اینچ (۷۲۰ × ۵۴۰ نقطه) ایجاد می‌کند. تغییر اندازه اسلاید در این نسخه هنوز پشتیبانی نمی‌شود.

آیا می‌توانم بیش از یک اسلاید اضافه کنم؟

بله. 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 یا تصاویر در این نسخه موجود نیست.


موارد مرتبط

 فارسی