Java'da Sunumlar Nasıl Oluşturulur

Java'da Sunumlar Nasıl Oluşturulur

Aspose.Slides FOSS for Java, Microsoft Office’a bağımlı olmadan tamamen Java’da PowerPoint sunumları oluşturmanıza olanak tanır. Bu kılavuz, yeni bir sunum oluşturmayı, slayt ve şekiller eklemeyi, metni biçimlendirmeyi ve sonucu kaydetmeyi gösterir.

Adım Adım Kılavuz

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

Aspose.Slides FOSS’u pom.xml‘ye ekleyin. Java 21 veya daha yenisi gereklidir.

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

Kurulumu doğrulayın:

import org.aspose.slides.foss.Presentation;

Presentation prs = new Presentation();
prs.dispose();
System.out.println("Aspose.Slides FOSS ready");

Adım 2: Gerekli Sınıfları İçe Aktarın

Kaydetme için gereken Presentation sınıfını ve SaveFormat enumunu içe aktarın.

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;

Tüm şekil‑tipi sabitleri org.aspose.slides.foss.ShapeType içinde bulunur. Biçimlendirme enum’ları (FillType, NullableBool) ayrıca org.aspose.slides.foss içinde yer alır.


Adım 3: Sunum Oluştur

new Presentation() kullanın ve try-with-resources içinde sarın. Yeni bir sunum bir boş slaytla başlar.

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

Önemli: Her zaman try-with-resources kullanın veya finally bloğunda prs.dispose() çağırın. Aksi takdirde kaynaklar doğru şekilde serbest bırakılmayacaktır.


Adım 4: Bir Slayta Erişin

İlk slayt indeks 0’da bulunur. Boş bir sunum tam olarak bir slayta sahiptir.

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

Adım 5: Bir Şekil Ekle

slide.getShapes().addAutoShape() kullanarak bir AutoShape ekleyin. Parametreler (shapeType, x, y, width, height) tümü puan cinsindendir (1 puan = 1/72 inç; standart slayt 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);
}

Adım 6: Sunumu Kaydet

Try bloğu çıkmadan önce prs.save(path, SaveFormat.PPTX) çağırın. PPTX yalnızca desteklenen çıktı formatıdır.

prs.save("result.pptx", SaveFormat.PPTX);

Dosya atomik olarak yazılır; bu çağrıdan önce bir hata oluşursa, hiçbir çıktı dosyası oluşturulmaz.


Tam Çalışan Örnek

Aşağıdaki program, ilk slaytta bir başlık şekli ve ikinci slaytta bir tablo içeren iki slaytlık bir sunum oluşturur.

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

Yaygın Sorunlar ve Çözümler

IllegalStateException: Presentation already disposed

Try-with-resources bloğu sona erdikten sonra bir Presentation nesnesi üzerinde metodları çağırıyorsunuz. Tüm işlemleri her zaman try bloğu içinde tutun.

UnsupportedOperationException kaydederken

Bu, PPTX dışındaki bir kaydetme formatı denendiğinde veya desteklenmeyen bir özellik (örneğin grafikler veya animasyonlar) kullanıldığında meydana gelir.

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

Slaytlar varsayılan olarak 720 × 540 puandır. x + width <= 720 ve y + height <= 540‘yi koruyun.


Sıkça Sorulan Sorular

Varsayılan slayt boyutu nedir?

Yeni bir Presentation(), standart 10 x 7,5 inç (720 x 540 nokta) boyutunda slaytlar oluşturur. Bu sürümde slayt boyutunu değiştirme henüz desteklenmemektedir.

Birden fazla slayt ekleyebilir miyim?

Evet. prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0))‘yi çağırarak boş bir slayt ekleyin ve indeksle erişin:

prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0));
ISlide slide2 = prs.getSlides().get(1);

Mevcut bir dosyayı açıp slayt ekleyebilir miyim?

Evet:

try (Presentation prs = new Presentation("existing.pptx")) {
    prs.getSlides().addEmptySlide(prs.getLayoutSlides().get(0));
    prs.save("existing.pptx", SaveFormat.PPTX);
}

Hangi formatlara kaydedebilirim?

Yalnızca SaveFormat.PPTX desteklenir. PDF, HTML, SVG veya görüntülere dışa aktarma bu sürümde mevcut değildir.


Ayrıca Bakınız

 Türkçe