چگونه اشکال را به پاورپوینت در جاوا اضافه کنیم

چگونه اشکال را به پاورپوینت در جاوا اضافه کنیم

Aspose.Slides FOSS for Java از افزودن AutoShapes، Tables، Connectors و PictureFrames به اسلایدهای ارائه پشتیبانی می‌کند. تمام انواع شکل‌ها از طریق مجموعه slide.getShapes() اضافه می‌شوند.

راهنمای گام به گام

مرحله 1: افزودن وابستگی Maven

<dependency>
  <groupId>org.aspose.slides.foss</groupId>
  <artifactId>aspose-slides-foss</artifactId>
  <version>1.0.0</version>
</dependency>

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

همیشه از try-with-resources برای مدیریت منابع استفاده کنید.

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.IConnector;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;

try (Presentation prs = new Presentation()) {
    ISlide slide = prs.getSlides().get(0);
    // ... add shapes ...
    prs.save("output.pptx", SaveFormat.PPTX);
}

مرحله ۳: افزودن AutoShape

slide.getShapes().addAutoShape(shapeType, x, y, width, height) یک شکل را در موقعیت و اندازهٔ داده‌شده (همه به نقطه) قرار می‌دهد. برای انتخاب شکل از ثابت‌های ShapeType استفاده کنید.

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.IConnector;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;

try (Presentation prs = new Presentation()) {
    ISlide slide = prs.getSlides().get(0);

    // Rectangle
    IAutoShape rect = slide.getShapes().addAutoShape(
        ShapeType.RECTANGLE, 50, 50, 300, 100
    );
    rect.addTextFrame("Rectangle shape");

    // Ellipse
    IAutoShape ellipse = slide.getShapes().addAutoShape(
        ShapeType.ELLIPSE, 400, 50, 200, 100
    );
    ellipse.addTextFrame("Ellipse shape");

    prs.save("autoshapes.pptx", SaveFormat.PPTX);
}

مرحله ۴: افزودن جدول

slide.getShapes().addTable(x, y, colWidths, rowHeights) یک جدول در موقعیت مشخص ایجاد می‌کند. عرض ستون‌ها و ارتفاع ردیف‌ها آرایه‌هایی از مقادیر نقطه‌ای هستند.

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.IConnector;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;

try (Presentation prs = new Presentation()) {
    ISlide slide = prs.getSlides().get(0);

    double[] colWidths = {150.0, 150.0, 150.0};
    double[] rowHeights = {40.0, 40.0, 40.0};
    ITable table = slide.getShapes().addTable(50, 200, colWidths, rowHeights);

    // Set header row text
    String[] headers = {"Product", "Units", "Revenue"};
    for (int col = 0; col < headers.length; col++) {
        table.getRows().get(0).get(col).getTextFrame().setText(headers[col]);
    }

    // Set data rows
    String[][] rows = {
        {"Widget A", "120", "$2,400"},
        {"Widget B", "85", "$1,700"},
    };
    for (int row = 0; row < rows.length; row++) {
        for (int col = 0; col < rows[row].length; col++) {
            table.getRows().get(row + 1).get(col)
                .getTextFrame().setText(rows[row][col]);
        }
    }

    prs.save("table.pptx", SaveFormat.PPTX);
}

مرحله 5: افزودن یک کانکتور

اتصالات دو شکل را به صورت بصری به هم متصل می‌کنند. ابتدا شکل‌ها را ایجاد کنید، سپس یک اتصال اضافه کنید و نقاط اتصال شروع و پایان آن را تنظیم کنید.

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.IConnector;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;

try (Presentation prs = new Presentation()) {
    ISlide slide = prs.getSlides().get(0);

    IAutoShape box1 = slide.getShapes().addAutoShape(
        ShapeType.RECTANGLE, 50, 100, 150, 60
    );
    box1.addTextFrame("Start");

    IAutoShape box2 = slide.getShapes().addAutoShape(
        ShapeType.RECTANGLE, 350, 100, 150, 60
    );
    box2.addTextFrame("End");

    IConnector conn = slide.getShapes().addConnector(
        ShapeType.BENT_CONNECTOR3, 0, 0, 10, 10
    );
    conn.setStartShapeConnectedTo(box1);
    conn.setStartShapeConnectionSiteIndex(3);  // right side of box1
    conn.setEndShapeConnectedTo(box2);
    conn.setEndShapeConnectionSiteIndex(1);    // left side of box2

    prs.save("connector.pptx", SaveFormat.PPTX);
}

شاخص‌های نقاط اتصال برای یک مستطیل از 0 تا 3 شماره‌گذاری می‌شوند: top=0، left=1، bottom=2، right=3.


مرحله 6: افزودن قاب تصویر

یک تصویر را جاسازی کنید و به اسلاید به عنوان PictureFrame اضافه کنید. ابتدا بایت‌های تصویر را بخوانید، آنها را به مجموعه تصاویر ارائه اضافه کنید، سپس فریم را ایجاد کنید.

import org.aspose.slides.foss.Presentation;
import org.aspose.slides.foss.ISlide;
import org.aspose.slides.foss.IAutoShape;
import org.aspose.slides.foss.IConnector;
import org.aspose.slides.foss.ITable;
import org.aspose.slides.foss.IPPImage;
import org.aspose.slides.foss.ILayoutSlide;
import org.aspose.slides.foss.ShapeType;
import org.aspose.slides.foss.export.SaveFormat;
import java.nio.file.Files;
import java.nio.file.Paths;

try (Presentation prs = new Presentation()) {
    byte[] imageData = Files.readAllBytes(Paths.get("logo.png"));
    IPPImage image = prs.getImages().addImage(imageData);

    ISlide slide = prs.getSlides().get(0);
    slide.getShapes().addPictureFrame(
        ShapeType.RECTANGLE,  // bounding shape type
        50, 50,               // x, y in points
        200, 150,             // width, height in points
        image
    );

    prs.save("with-image.pptx", SaveFormat.PPTX);
}

مشکلات رایج و راه‌حل‌ها

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

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

NullPointerException هنگام خواندن متن شکل

addAutoShape() مستقیماً شیء شکل را برمی‌گرداند. اگر null را مشاهده کردید، بررسی کنید که مقدار بازگشتی را دور نمی‌اندازید. همچنین قبل از خواندن متن، اطمینان حاصل کنید که getTextFrame() مقدار null نیست.

متن سلول جدول پس از اختصاص خالی است

روش صحیح .getTextFrame().setText(value) است. دسترسی به سلول‌ها به صورت table.getRows().get(rowIndex).get(colIndex).getTextFrame().setText("value").


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

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

هیچ محدودیتی توسط کتابخانه اعمال نمی‌شود. محدودیت‌های عملی به اندازهٔ فایل و قابلیت رندرینگ نمایشگر PPTX هدف شما بستگی دارد.

آیا می‌توانم موقعیت یک شکل را پس از افزودن آن تغییر دهم؟

بله. شیء شکل که توسط addAutoShape() برگردانده می‌شود، دارای ویژگی‌های موقعیت و اندازه از طریق getShapeFrame() است.

آیا نمودارها پشتیبانی می‌شوند؟

خیر. نمودارها، SmartArt و اشیای OLE در این نسخه پیاده‌سازی نشده‌اند و UnsupportedOperationException را ایجاد می‌کنند.


موارد مرتبط

 فارسی