Java'da Metin Biçimlendirme

Java'da Metin Biçimlendirme

Aspose.Slides FOSS for Java, PortionFormat sınıfı aracılığıyla ayrıntılı metin biçimlendirme sağlar. Bir Portion, metnin en küçük bağımsız birimidir; bir paragraftaki tek bir biçimlendirme çalışmasına karşılık gelir. Bu kılavuz, bir sunumdaki metne kalın, italik, yazı tipi boyutu ve renk biçimlendirmesinin nasıl uygulanacağını gösterir.

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: Metin Çerçevesi Olan Bir Şekil Ekle

Metni biçimlendirmeden önce, bir şekil TextFrame içermelidir. Bir tane oluşturmak için shape.addTextFrame() 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.ITextFrame;
import org.aspose.slides.foss.IParagraph;
import org.aspose.slides.foss.IPortion;
import org.aspose.slides.foss.Portion;
import org.aspose.slides.foss.IPortionFormat;
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);
    IAutoShape shape = slide.getShapes().addAutoShape(
        ShapeType.RECTANGLE, 50, 50, 500, 150
    );
    ITextFrame tf = shape.addTextFrame("Default text: will be formatted");
    prs.save("output.pptx", SaveFormat.PPTX);
}

Adım 3: TextFrame’e Erişin

shape.addTextFrame(), TextFrame nesnesini döndürür. Ayrıca shape.getTextFrame() aracılığıyla daha sonra alabilirsiniz.

ITextFrame tf = shape.getTextFrame();          // if the frame already exists
ITextFrame tf = shape.addTextFrame("");        // creates a new frame

Bir TextFrame, Paragraph nesnelerinin bir listesini (tf.getParagraphs()) içerir. Her Paragraph, Portion nesnelerini (paragraph.getPortions()) içerir.


Adım 4: Kalın ve İtalik Biçimlendirmeyi Uygula

portionFormat.setFontBold() ve portionFormat.setFontItalic() kullanın. Bu yöntemler NullableBool.TRUE, NullableBool.FALSE veya NullableBool.NOT_DEFINED (master’dan miras alır) kabul eder.

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.IParagraph;
import org.aspose.slides.foss.IPortion;
import org.aspose.slides.foss.Portion;
import org.aspose.slides.foss.IPortionFormat;
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);
    IAutoShape shape = slide.getShapes().addAutoShape(
        ShapeType.RECTANGLE, 50, 50, 500, 150
    );
    ITextFrame tf = shape.addTextFrame("Bold and italic text");

    IPortionFormat fmt = tf.getParagraphs().get(0)
        .getPortions().get(0).getPortionFormat();
    fmt.setFontBold(NullableBool.TRUE);
    fmt.setFontItalic(NullableBool.TRUE);

    prs.save("bold-italic.pptx", SaveFormat.PPTX);
}

Adım 5: Yazı Tipi Boyutunu ve Rengini Ayarla

portionFormat.setFontHeight()‘yi boyut (nokta cinsinden) için ayarlayın ve renk için getFillFormat()‘yi 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.ITextFrame;
import org.aspose.slides.foss.IParagraph;
import org.aspose.slides.foss.IPortion;
import org.aspose.slides.foss.Portion;
import org.aspose.slides.foss.IPortionFormat;
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);
    IAutoShape shape = slide.getShapes().addAutoShape(
        ShapeType.RECTANGLE, 50, 50, 500, 150
    );
    ITextFrame tf = shape.addTextFrame("Large corporate-blue heading");

    IPortionFormat fmt = tf.getParagraphs().get(0)
        .getPortions().get(0).getPortionFormat();
    fmt.setFontHeight(32);                          // 32pt font
    fmt.setFontBold(NullableBool.TRUE);
    fmt.getFillFormat().setFillType(FillType.SOLID);
    fmt.getFillFormat().getSolidFillColor().setColor(
        Color.fromArgb(255, 0, 70, 127)
    );

    prs.save("colored-text.pptx", SaveFormat.PPTX);
}

Color.fromArgb(alpha, red, green, blue) her kanal için 0-255 değerlerini kabul eder.


Adım 6: Tek Bir Paragrafta Birden Çok Bölüm

Tek bir paragraf, farklı biçimlendirmeye sahip birden fazla bölüm içerebilir. Bir paragrafın getPortions() koleksiyonuna yeni bir Portion ekleyin:

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.IParagraph;
import org.aspose.slides.foss.IPortion;
import org.aspose.slides.foss.Portion;
import org.aspose.slides.foss.IPortionFormat;
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);
    IAutoShape shape = slide.getShapes().addAutoShape(
        ShapeType.RECTANGLE, 50, 50, 600, 100
    );
    ITextFrame tf = shape.addTextFrame("");  // start with empty frame

    IParagraph paragraph = tf.getParagraphs().get(0);

    // First portion: normal text
    IPortion portion1 = paragraph.getPortions().get(0);
    portion1.setText("Normal text followed by ");
    portion1.getPortionFormat().setFontHeight(20);

    // Second portion: bold red text
    Portion portion2 = new Portion("bold red text");
    portion2.getPortionFormat().setFontHeight(20);
    portion2.getPortionFormat().setFontBold(NullableBool.TRUE);
    portion2.getPortionFormat().getFillFormat().setFillType(FillType.SOLID);
    portion2.getPortionFormat().getFillFormat().getSolidFillColor().setColor(
        Color.fromArgb(255, 200, 0, 0)
    );
    paragraph.getPortions().add(portion2);

    prs.save("mixed-format.pptx", SaveFormat.PPTX);
}

Yaygın Sorunlar ve Çözümler

Metin rengi ayarlandıktan sonra bile siyah görünüyor

Rengi atamadan önce getFillFormat().setFillType(FillType.SOLID) çağrıldığından emin olun. Doldurma türü ayarlanmadan, renk değişikliği etkisiz olabilir.

NullableBool.TRUE vs true

portionFormat.setFontBold(), Java’nın true yerine NullableBool.TRUE bekler. Bir boolean geçmek, metodun NullableBool enum’ını beklediği için derleme hatasına neden olur.

Kaydedilen dosyada yazı tipi görünmüyor

setLatinFont() yöntemi Latin yazı tipi ailesini ayarlar. Ayarlanmamışsa, sunum teması yazı tipi kullanılır. Özel yazı tipleri gömülmüş olmalı veya görüntüleme makinesinde mevcut olmalıdır.


Sıkça Sorulan Sorular

Yazı tipi ailesini nasıl değiştiririm?

Ayarla portionFormat.setLatinFont():

fmt.setLatinFont(new FontData("Arial"));

FontData font ailesi adını bir dize olarak kabul eder.

Paragraf hizalamasını nasıl ayarlarım?

paragraphFormat.setAlignment()‘yi kullanın:

import org.aspose.slides.foss.TextAlignment;

tf.getParagraphs().get(0).getParagraphFormat()
    .setAlignment(TextAlignment.CENTER);

Desteklenen değerler: LEFT, CENTER, RIGHT, JUSTIFY.

Satır aralığını nasıl ayarlarım?

paragraphFormat.setSpaceBefore() (paragraftan önceki noktalar) veya paragraphFormat.setSpaceAfter() (paragraftan sonraki noktalar) kullanın:

tf.getParagraphs().get(0).getParagraphFormat().setSpaceBefore(12);  // 12pt before
tf.getParagraphs().get(0).getParagraphFormat().setSpaceAfter(6);    // 6pt after

Ayrıca Bakınız

 Türkçe