Java'da Sunum Slaytlarını Görüntülere Dönüştürme

Giriş

Aspose.Slides for Java, PowerPoint ve OpenDocument sunumlarından tek tek slaytları PNG, JPEG, GIF, TIFF ve diğer görüntü biçimleri olarak oluşturabilir.

Bir slaytı görüntüye dönüştürmek için şu adımları izleyin:

  1. Sunumu, Presentation sınıfı ile yükleyin.
  2. Oluşturmak istediğiniz slaytı seçin.
  3. Gerekirse, renderlemeyi RenderingOptions veya TiffOptions sınıfı ile yapılandırın.
  4. ISlide.getImage yöntemini çağırın. Bu, bir IImage nesnesi döndürür.
  5. IImage.save yöntemini çağırın ve çıktının formatını bir ImageFormat değeriyle belirtin.

Bir Slaytı PNG Görüntüsüne Dönüştürme

En basit dönüşüm, varsayılan render ayarlarını kullanır. Oluşan IImage nesnesi bellek içinde işlenebilir veya bir dosyaya kaydedilebilir.

Aşağıdaki Java örneği ilk slaytı renderlayıp PNG görüntüsü olarak kaydeder:

import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;

Presentation presentation = new Presentation("Presentation.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IImage image = slide.getImage();
    try {
        image.save("Slide_0.png", ImageFormat.Png);
    } finally {
        image.dispose();
    }
} finally {
    presentation.dispose();
}

Özel Boyutlarla Slaytları Görüntülere Dönüştürme

Dimension değerini kabul eden ISlide.getImage aşırı yüklemesini kullanarak slaytı tam piksel boyutlarıyla renderlayın.

Aşağıdaki örnek 1820 × 1040 JPEG görüntüsü oluşturur:

import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;
import java.awt.Dimension;

Dimension imageSize = new Dimension(1820, 1040);

Presentation presentation = new Presentation("Presentation.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IImage image = slide.getImage(imageSize);
    try {
        image.save("Slide_0.jpg", ImageFormat.Jpeg);
    } finally {
        image.dispose();
    }
} finally {
    presentation.dispose();
}

Not ve Yorumlarıyla Slaytları Görüntülere Dönüştürme

Varsayılan olarak, slayt görüntüleri notları veya yorumları içermez. Notların ve yorumların nerede görüneceğini kontrol etmek için bir NotesCommentsLayoutingOptions nesnesini RenderingOptions.setSlidesLayoutOptions yöntemine gönderin.

Aşağıdaki örnek kısaltılmış notları slaytın altına, yorumları ise sağ tarafına yerleştirir:

import com.aspose.slides.CommentsPositions;
import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.NotesCommentsLayoutingOptions;
import com.aspose.slides.NotesPositions;
import com.aspose.slides.Presentation;
import com.aspose.slides.RenderingOptions;
import java.awt.Color;

float scaleX = 2f;
float scaleY = scaleX;

Color commentsAreaColor = new Color(250, 235, 215);

NotesCommentsLayoutingOptions layoutOptions = new NotesCommentsLayoutingOptions();
layoutOptions.setNotesPosition(NotesPositions.BottomTruncated);
layoutOptions.setCommentsPosition(CommentsPositions.Right);
layoutOptions.setCommentsAreaWidth(500);
layoutOptions.setCommentsAreaColor(commentsAreaColor);

RenderingOptions renderingOptions = new RenderingOptions();
renderingOptions.setSlidesLayoutOptions(layoutOptions);

Presentation presentation = new Presentation("Presentation_with_notes_and_comments.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IImage image = slide.getImage(renderingOptions, scaleX, scaleY);
    try {
        image.save("Image_with_notes_and_comments_0.gif", ImageFormat.Gif);
    } finally {
        image.dispose();
    }
} finally {
    presentation.dispose();
}

TIFF Seçeneklerini Kullanarak Slaytları Görüntülere Dönüştürme

TiffOptions sınıfı, renderlanan TIFF görüntüsünün boyutunu, çözünürlüğünü ve diğer özelliklerini kontrol etmenizi sağlar.

Aşağıdaki örnek ilk slaytı 2160 × 2880 boyutunda, 300 DPI’da bir TIFF görüntüsü olarak renderlar:

import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;
import com.aspose.slides.TiffOptions;
import java.awt.Dimension;

Dimension imageSize = new Dimension(2160, 2880);

TiffOptions tiffOptions = new TiffOptions();
tiffOptions.setImageSize(imageSize);
tiffOptions.setDpiX(300);
tiffOptions.setDpiY(300);

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IImage image = slide.getImage(tiffOptions);
    try {
        image.save("output.tiff", ImageFormat.Tiff);
    } finally {
        image.dispose();
    }
} finally {
    presentation.dispose();
}

Tüm Slaytları Görüntülere Dönüştürme

Tüm sunumu bir dizi görüntüye dönüştürmek için slayt koleksiyonunda döngü oluşturun. Gizli slaytlar, açıkça atlamadığınız sürece dahil edilir.

Aşağıdaki örnek, her slaytı yatay ve dikey ölçek faktörleri 2 olan bir JPEG görüntüsü olarak renderlar:

import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;

float scaleX = 2f;
float scaleY = scaleX;

Presentation presentation = new Presentation("Presentation.pptx");
try {
    int slideCount = presentation.getSlides().size();
    for (int index = 0; index < slideCount; index++) {
        ISlide slide = presentation.getSlides().get_Item(index);
        IImage image = slide.getImage(scaleX, scaleY);
        try {
            image.save("Slide_" + index + ".jpg", ImageFormat.Jpeg);
        } finally {
            image.dispose();
        }
    }
} finally {
    presentation.dispose();
}

Gelişmiş Metafile Çıktısı Oluşturma

Gelişmiş Metafile (EMF), vektör tabanlı grafiklerin Microsoft Office veya Windows metafil desteği olan diğer Windows uygulamalarıyla değiş tokuş edilmesi gerektiğinde faydalıdır. Piksel tabanlı bir görüntünün aksine, EMF ölçeklendiğinde keskinliğini kaybetmeden vektör çizim işlemlerini koruyabilir. Ancak EMF, esas olarak Windows metafil desteği olan uygulamalar için bir uyumluluk biçimidir, evrensel bir değişim formatı değildir. Ayrıca, bitmap görüntüler ve bazı efektler gibi karmaşık slayt içerikleri, vektör metafil kapsayıcısı içinde rasterleştirilmiş öğeler olarak saklanabilir.

Bir Slaytı EMF Olarak Dışa Aktarma

ISlide.writeAsEmf yöntemi bir ISlide nesnesini EMF formatında hedef bir akıma yazar. Aşağıdaki örnek bir sunumu yükler, ilk slaytı seçer ve onu bir EMF dosya akımına yazar:

import com.aspose.slides.ISlide;
import com.aspose.slides.Presentation;
import java.io.FileOutputStream;

Presentation presentation = new Presentation("Presentation.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    FileOutputStream emfStream = new FileOutputStream("Slide_0.emf");
    try {
        slide.writeAsEmf(emfStream);
    } finally {
        emfStream.close();
    }
} finally {
    presentation.dispose();
}

Çağırıcı, ISlide.writeAsEmf yöntemine geçirilen akımı sahiplenir ve yukarıda gösterildiği gibi akımı kapatmakla sorumludur.

Bir SVG Görüntüyü EMF’ye Dönüştürme ve Sunuma Ekleme

ISvgImage.writeAsEmf yöntemini kullanarak SVG içeriğini EMF’ye dönüştürün. Oluşan baytlar, IImageCollection.addImage aracılığıyla sunuma eklenebilir ve bir slayta IShapeCollection.addPictureFrame ile yerleştirilebilir.

Aşağıdaki örnek, SVG işaretlemesinden bir SvgImage oluşturur, bunu bellekte bir EMF’ye dönüştürür, metafili ilk slayta ekler ve sunumu kaydeder:

import com.aspose.slides.IPPImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ISvgImage;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
import com.aspose.slides.ShapeType;
import com.aspose.slides.SvgImage;
import java.io.ByteArrayOutputStream;

String svgContent = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"200\" height=\"100\"><rect width=\"200\" height=\"100\" fill=\"#4472C4\"/></svg>";
ISvgImage svgImage = new SvgImage(svgContent);

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    ByteArrayOutputStream emfStream = new ByteArrayOutputStream();
    try {
        svgImage.writeAsEmf(emfStream);

        byte[] emfData = emfStream.toByteArray();
        IPPImage image = presentation.getImages().addImage(emfData);
        slide.getShapes().addPictureFrame(ShapeType.Rectangle, 20, 20, 200, 100, image);
    } finally {
        emfStream.close();
    }

    presentation.save("Presentation_with_emf.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

ISvgImage.writeAsEmf hedef akımın sahipliğini almaz. Bir ByteArrayOutputStream tüm oluşturulan verileri bellekte saklar, bu yüzden toByteArray çağrılmadan önce konum sıfırlamaya gerek yoktur. Döndürülen bayt dizisi, akım kapatıldıktan sonra da geçerliliğini korur.

EMF oluşturma, seçilen Aspose.Slides for Java ve JDK yapılandırması tarafından desteklenen işletim sistemlerinde kullanılabilir, ancak fontlar veya grafik bağımlılıkları mevcut olmadığında platformlar arasında renderleme farklılık gösterebilir. Kaynak içeriğin kullandığı fontları yükleyin veya uygun ikameler yapılandırın, Aspose.Slides for Java için platform gereksinimlerini izleyin ve sonucu hedef EMF tüketen uygulamada doğrulayın. Linux ve macOS uygulamaları genellikle Windows metafillerinin görüntülenmesi ve düzenlenmesi konusunda sınırlı veya tutarsız destek sunar.

Renkli Emoji Renderleme

SSS

Aspose.Slides animasyonlu slaytları renderlamayı destekliyor mu?

Hayır. ISlide.getImage yöntemi slaydın statik bir görüntüsünü oluşturur ve animasyonları dışa aktarmaz.

Gizli slaytlar görüntü olarak dışa aktarılabilir mi?

Evet. Gizli slaytlar, normal slaytlar gibi renderlanabilir. Yukarıdaki örnekte gösterildiği gibi işleme döngüsüne dahil edin.

Gölgeler ve diğer efektler slayt görüntülerinde korunur mu?

Evet. Aspose.Slides, gölgeleri, saydamlığı ve diğer desteklenen grafik efektleri slayt görüntülerinde renderlar.