كيفية إضافة أشكال إلى PowerPoint في Java
Aspose.Slides FOSS for Java supports adding AutoShapes, Tables, Connectors, and PictureFrames to presentation slides. All shape types are added through the slide.getShapes() جمعية .
خطوة بخطوة دليل
الخطوة 1: إضافة الاعتماد على Maven
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-slides-foss</artifactId>
<version>26.7.0</version>
</dependency>الخطوة الثانية: إعداد عرض
استخدم دائما الموارد محاولة لإدارة المواد.
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);
}الخطوة 3: إضافة 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);
}الخطوة 4: إضافة طاولة
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);
}الخطوة الخامسة: إضافة جهاز اتصال
يربط الاتصالات شكلين بصريًا.إنشاء الأشكال أولاً، ثم إضافة اتصال وتعيين نقاط البداية والنهاية للاتصال.
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 لقطعة مستقيمة: أعلى = 0 ، اليسار = 1 ، أسفل = 2 ، اليمين = 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() لا يصل إلى صفر قبل قراءة النص.
نص الخلية في الجدول فارغ بعد التعيين
الطريقة الصحيحة هي .getTextFrame().setText(value).الوصول إلى الخلايا كما table.getRows().get(rowIndex).get(colIndex).getTextFrame().setText("value").
الأسئلة المتكررة
كم عدد الأشكال التي يمكنني إضافةها إلى الشرائح؟?
لا يوجد حد مكتبي يفرضه الحد العملي يعتمد على حجم الملف والقدرة على العرض لمشاهدة PPTX المستهدفة.
هل يمكنني تغيير وضع الشكل بعد إضافته؟?
نعم.الشكل العودة عن طريق addAutoShape() يمتلك موقعًا وحجمًّا من الخصائص عبر getShapeFrame().
هل يتم دعم الرسوم البيانية؟?
لا يتم تنفيذ الرسوم البيانية، SmartArt، و OLE الكائنات في هذا الإصدار. UnsupportedOperationException.