Java'da PowerPoint'e Şekil Ekleme

Java'da PowerPoint'e Şekil Ekleme

Aspose.Slides FOSS for Java, AutoShapes, Tables, Connectors ve PictureFrames’i sunum slaytlarına eklemeyi destekler. Tüm şekil türleri slide.getShapes() koleksiyonu aracılığıyla eklenir.

Adım Adım Kılavuz

Adım 1: Maven Bağımlılığını Ekleyin

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

Adım 2: Sunum Oluştur

Kaynakları yönetmek için her zaman try-with-resources kullanın.

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);
}

Adım 3: Bir AutoShape ekleyin

slide.getShapes().addAutoShape(shapeType, x, y, width, height), verilen konum ve boyutta (tümü puan cinsinden) bir şekil yerleştirir. Şekli seçmek için ShapeType sabitlerini kullanın.

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);
}

Adım 4: Tablo Ekle

slide.getShapes().addTable(x, y, colWidths, rowHeights) belirtilen konumda bir tablo oluşturur. Sütun genişlikleri ve satır yükseklikleri nokta değerlerinden oluşan dizilerdir.

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);
}

Adım 5: Bağlayıcı Ekle

Bağlayıcılar iki şekli görsel olarak bağlar. Şekilleri önce oluşturun, ardından bir bağlayıcı ekleyin ve başlangıç ve bitiş bağlantı noktalarını ayarlayın.

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);
}

Bağlantı noktası indeksleri bir dikdörtgen için 0‑3 olarak numaralandırılır: üst=0, sol=1, alt=2, sağ=3.


Adım 6: Bir Resim Çerçevesi Ekle

Bir resmi gömün ve slayta PictureFrame olarak ekleyin. Önce resim baytlarını okuyun, bunları sunumun resim koleksiyonuna ekleyin, ardından çerçeveyi oluşturun.

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);
}

Yaygın Sorunlar ve Çözümler

Şekil görünür slayt alanının dışında görünüyor

Slaytlar varsayılan olarak 720 × 540 puandır. x veya y değerleri bu sınırların dışına çıktığında şekil slayt dışına yerleştirilir. x < 720 ve y < 540 tutun ve x + width <= 720 ve y + height <= 540 sağlandığından emin olun.

NullPointerException şekil metnini okurken

addAutoShape() şekil nesnesini doğrudan döndürür. null görürseniz, dönüş değerini atmadığınızdan emin olun. Ayrıca getTextFrame() metni okumadan önce null olmadığını doğrulayın.

Tablo hücresi metni atamadan sonra boş

Doğru yöntem .getTextFrame().setText(value). Hücrelere table.getRows().get(rowIndex).get(colIndex).getTextFrame().setText("value") olarak erişin.


Sıkça Sorulan Sorular

Bir slayta kaç şekil ekleyebilirim?

Kütüphane tarafından uygulanan bir sınırlama yoktur. Pratik sınırlamalar dosya boyutuna ve hedef PPTX görüntüleyicinizin renderleme yeteneğine bağlıdır.

Bir şeklin konumunu ekledikten sonra değiştirebilir miyim?

Evet. addAutoShape() tarafından döndürülen şekil nesnesi, getShapeFrame() aracılığıyla konum ve boyut özelliklerine sahiptir.

Grafikler destekleniyor mu?

Hayır. Çizelgeler, SmartArt ve OLE nesneleri bu sürümde uygulanmamıştır ve UnsupportedOperationException hatasını verir.


Ayrıca Bakınız

 Türkçe