Java'da Sunum Metnini Biçimlendir

Genel Bakış

Bu makale, Aspose.Slides for Java kullanarak PowerPoint ve OpenDocument sunumlarında metni nasıl biçimlendireceğinizi gösterir. Arka plan renkleri, şeffaflık, karakter aralığı, yazı tipi özellikleri, döndürme, paragraf aralığı, otomatik sığdırma davranışı, metin sabitleme, sekme durakları ve dil ayarları ele alınmaktadır.

Aşağıdaki örneklerde, ilk slaytta tek bir metin kutusu içeren ve aşağıdaki metni barındıran sample.pptx adlı bir dosya kullanılacaktır:

Örnek metin

Kelime sözcükleri ya da düzenli ifade eşleşmelerini bulmak ve vurgulamak için Metin Arama ve Değiştirme bölümüne bakın.

Metin Arka Plan Rengini Ayarla

Paragraf için varsayılan vurgulama rengini ayarlamak üzere IParagraphFormat.getDefaultPortionFormat metodunu, tek tek metin bölümleri için ise IBasePortionFormat.getHighlightColor metodunu kullanın.

Aşağıdaki kod örneği tüm paragraf için arka plan renginin nasıl ayarlanacağını gösterir:

import com.aspose.slides.*;
import java.awt.Color;

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    // Paragrafın tamamı için vurgulama rengini ayarla.
    paragraph.getParagraphFormat().getDefaultPortionFormat().getHighlightColor().setColor(Color.LIGHT_GRAY);

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

Sonuç:

Gri paragraf

Aşağıdaki kod örneği kalın bir yazı tipine sahip metin bölümleri için arka plan renginin nasıl ayarlanacağını gösterir:

import com.aspose.slides.*;
import java.awt.Color;

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    for (IPortion portion : paragraph.getPortions()) {
        if (portion.getPortionFormat().getEffective().getFontBold()) {
            // Metin bölümü için vurgulama rengini ayarla.
            portion.getPortionFormat().getHighlightColor().setColor(Color.LIGHT_GRAY);
        }
    }

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

Sonuç:

Gri metin bölümleri

Metin Paragraflarını Hizala

Bir metin çerçevesi içinde paragraf hizalamasını ayarlamak için IParagraphFormat.setAlignment metodunu kullanın. Değerler ortalanmış, sola hizalı, sağa hizalı, iki yana yaslanmış vb. olabilir.

Aşağıdaki kod örneği paragrafı ortaya hizalamayı gösterir:

import com.aspose.slides.*;

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    // Paragraf hizalamasını ortaya ayarla.
    paragraph.getParagraphFormat().setAlignment(TextAlignment.Center);

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

Sonuç:

Hizalanmış paragraf

Metin Şeffaflığını Ayarla

Metin şeffaflığı, IBasePortionFormat.getFillFormat metoduna atanmış rengin alfa bileşeni üzerinden kontrol edilir. Aşağıdaki örneklerde alpha = 50, 0–255 ölçeğinde bir ARGB alfa kanalı değeridir, yüzde şeffaflık değildir.

Aşağıdaki kod örneği tüm paragraf için şeffaflığın nasıl uygulanacağını gösterir:

import com.aspose.slides.*;
import java.awt.Color;

int alpha = 50;

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    // Metnin dolgu rengini şeffaf renk olarak ayarla.
    paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid);
    paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(new Color(0, 0, 0, alpha));

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

Sonuç:

Şeffaf paragraf

Aşağıdaki kod örneği kalın bir yazı tipine sahip metin bölümleri için şeffaflığın nasıl uygulanacağını gösterir:

import com.aspose.slides.*;
import java.awt.Color;

int alpha = 50;

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    for (IPortion portion : paragraph.getPortions()) {
        if (portion.getPortionFormat().getEffective().getFontBold()) {
            // Metin bölümünün şeffaflığını ayarla.
            portion.getPortionFormat().getFillFormat().setFillType(FillType.Solid);
            portion.getPortionFormat().getFillFormat().getSolidFillColor().setColor(new Color(0, 0, 0, alpha));
        }
    }

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

Sonuç:

Şeffaf metin bölümleri

Metin Karakter Aralığını Ayarla

Bir metin kutusunda karakterler arasındaki aralığı genişletmek ya da sıkıştırmak için IBasePortionFormat.setSpacing metodunu kullanın.

Aşağıdaki Java kodu tüm paragraf içinde karakter aralığını nasıl genişleteceğinizi gösterir:

import com.aspose.slides.*;

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    // Not: Karakter aralığını sıkıştırmak için negatif değerler kullanın.
    paragraph.getParagraphFormat().getDefaultPortionFormat().setSpacing(3); // Karakter aralığını genişlet.

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

Sonuç:

Paragraftaki karakter aralığı

Aşağıdaki kod örneği kalın bir yazı tipine sahip metin bölümleri için karakter aralığını nasıl genişleteceğinizi gösterir:

import com.aspose.slides.*;

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    for (IPortion portion : paragraph.getPortions()) {
        if (portion.getPortionFormat().getEffective().getFontBold()) {
            // Not: Karakter aralığını sıkıştırmak için negatif değerler kullanın.
            portion.getPortionFormat().setSpacing(3); // Karakter aralığını genişlet.
        }
    }

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

Sonuç:

Metin bölümlerindeki karakter aralığı

Belirli Yazı Tipleri için Kerning’i Devre Dışı Bırak

Bazı durumlarda, Aspose.Slides ile oluşturulan metin, PowerPoint’te aynı metinden daha sıkı görünebilir. Bu, PowerPoint’in bazı yazı tipleri için kerning verilerini görmezden gelmesinden kaynaklanabilir; yazı tipinde geçerli kerning bilgileri olsa bile PowerPoint ayarlarında kerning etkin olsa da.

Bu gibi durumlarda çıktıyı PowerPoint’e daha yakın hâle getirmek için, etkilenen yazı tipini kullanan metin bölümleri için kerning’i devre dışı bırakabilirsiniz. IBasePortionFormat.setKerningMinimalSize değerini gerçek yazı tipi boyutundan belirgin şekilde daha büyük bir değere ayarlayın:

import com.aspose.slides.*;

Presentation presentation = new Presentation("presentation.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
    String targetFont = "Roboto";

    for (IParagraph paragraph : autoShape.getTextFrame().getParagraphs()) {
        for (IPortion portion : paragraph.getPortions()) {
            IPortionFormat portionFormat = portion.getPortionFormat();

            if ((portionFormat.getLatinFont() != null &&
                 portionFormat.getLatinFont().getFontName().equals(targetFont)) ||
                (portionFormat.getEastAsianFont() != null &&
                 portionFormat.getEastAsianFont().getFontName().equals(targetFont)) ||
                (portionFormat.getComplexScriptFont() != null &&
                 portionFormat.getComplexScriptFont().getFontName().equals(targetFont))) {
                portionFormat.setKerningMinimalSize(100);
            }
        }
    }

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

Bu ayar, eşleşen metin bölümlerine kerning uygulanmasını engeller ve bu PowerPoint’e özgü davranıştan etkilenen yazı tipleri için Aspose.Slides render’ının PowerPoint’in görsel çıktısıyla daha uyumlu olmasına yardımcı olur.

Metin Yazı Tipi Özelliklerini Yönet

Yazı tipi özellikleri, IParagraphFormat.getDefaultPortionFormat üzerinden paragraf düzeyinde ya da tek tek bölümler için IPortionFormat aracılığıyla ayarlanabilir.

Aşağıdaki kod, tüm paragraf için yazı tipini ve metin stilini ayarlar: boyut, kalın, italik, noktalı altı çizgi ve Times New Roman yazı tipini paragraftaki tüm bölümlere uygular.

import com.aspose.slides.*;

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    // Paragraf için yazı tipi özelliklerini ayarla.
    paragraph.getParagraphFormat().getDefaultPortionFormat().setFontHeight(12);
    paragraph.getParagraphFormat().getDefaultPortionFormat().setFontBold(NullableBool.True);
    paragraph.getParagraphFormat().getDefaultPortionFormat().setFontItalic(NullableBool.True);
    paragraph.getParagraphFormat().getDefaultPortionFormat().setFontUnderline(TextUnderlineType.Dotted);
    paragraph.getParagraphFormat().getDefaultPortionFormat().setLatinFont(new FontData("Times New Roman"));

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

Sonuç:

Paragrafın yazı tipi özellikleri

Aşağıdaki kod örneği kalın bir yazı tipine sahip metin bölümleri için benzer özellikleri uygular:

import com.aspose.slides.*;

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    for (IPortion portion : paragraph.getPortions()) {
        if (portion.getPortionFormat().getEffective().getFontBold()) {
            // Metin bölümü için yazı tipi özelliklerini ayarla.
            portion.getPortionFormat().setFontHeight(13);
            portion.getPortionFormat().setFontItalic(NullableBool.True);
            portion.getPortionFormat().setFontUnderline(TextUnderlineType.Dotted);
            portion.getPortionFormat().setLatinFont(new FontData("Times New Roman"));
        }
    }

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

Sonuç:

Metin bölümlerinin yazı tipi özellikleri

Metin Döndürmeyi Ayarla

Şekil içinde önceden tanımlı bir metin yönlendirmesini ayarlamak için ITextFrameFormat.setTextVerticalType metodunu kullanın.

Aşağıdaki kod örneği şeklin içindeki metin yönlendirmesini Vertical270 olarak ayarlar; bu, metni 90 derece saat yönünün tersine döndürür:

import com.aspose.slides.*;

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

    autoShape.getTextFrame().getTextFrameFormat().setTextVerticalType(TextVerticalType.Vertical270);

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

Sonuç:

Metin döndürmesi

Metin Çerçeveleri için Özel Döndürmeyi Ayarla

ITextFrameFormat.setRotationAngle metodunu kullanarak bir ITextFrame için özel bir döndürme açısı ayarlayabilirsiniz.

Aşağıdaki kod örneği şekil içinde metin çerçevesini saat yönünde 3 derece döndürür:

import com.aspose.slides.*;

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

    autoShape.getTextFrame().getTextFrameFormat().setRotationAngle(3);

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

Sonuç:

Özel metin döndürmesi

Paragrafların Satır Aralığını Ayarla

Aspose.Slides, paragraf aralığını kontrol etmek için IParagraphFormat.setSpaceAfter, IParagraphFormat.setSpaceBefore ve IParagraphFormat.setSpaceWithin metodlarını sunar. Bu özellikler şu şekilde kullanılır:

  • Pozitif bir değer, satır aralığını satır yüksekliğinin yüzdesi olarak belirtir.
  • Negatif bir değer, satır aralığını puan (point) olarak belirtir.

Aşağıdaki kod örneği paragraf içinde satır aralığını nasıl belirleyeceğinizi gösterir:

import com.aspose.slides.*;

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    paragraph.getParagraphFormat().setSpaceWithin(200);

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

Sonuç:

Paragraftaki satır aralığı

Metin Çerçeveleri için Otomatik Sığdırma Tipini Ayarla

ITextFrameFormat.setAutofitType metni, kapsayıcının sınırlarını aştığında nasıl davranacağını belirler. Metnin küçülüp küçülmeyeceği, taşma göstereceği ya da şeklin otomatik olarak yeniden boyutlandırılıp boyutlandırılmayacağını kontrol etmek için bu ayarı kullanın.

import com.aspose.slides.*;

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

    autoShape.getTextFrame().getTextFrameFormat().setAutofitType(TextAutofitType.Shape);

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

Metin Çerçevelerinin Sabitleme Tipini Ayarla

ITextFrameFormat.setAnchoringType metni bir şeklin içinde dikey olarak nasıl konumlandırılacağını tanımlar; örneğin üstte, ortada ya da altta.

import com.aspose.slides.*;

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

    autoShape.getTextFrame().getTextFrameFormat().setAnchoringType(TextAnchorType.Bottom);

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

Metin Sekmelerini Ayarla

Paragrafta sekme duraklarını yapılandırmak için IParagraphFormat.setDefaultTabSize ve IParagraphFormat.getTabs metodlarını kullanın.

import com.aspose.slides.*;

Presentation presentation = new Presentation("sample.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);

    paragraph.getParagraphFormat().setDefaultTabSize(100);
    paragraph.getParagraphFormat().getTabs().add(30, TabAlignment.Left);

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

Sonuç:

Paragraf sekmeleri

Denetleme Diline Ayarla

Aspose.Slides, bir metin bölümünün denetleme dilini ayarlamanıza olanak tanıyan IBasePortionFormat.setLanguageId metodunu sağlar. Denetleme dili, PowerPoint’te imla ve dilbilgisi denetiminde kullanılan dili belirler.

Aşağıdaki kod örneği bir metin bölümü için denetleme dilinin nasıl ayarlanacağını gösterir:

import com.aspose.slides.*;

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

    IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
    paragraph.getPortions().clear();

    FontData font = new FontData("SimSun");

    Portion textPortion = new Portion();
    textPortion.getPortionFormat().setComplexScriptFont(font);
    textPortion.getPortionFormat().setEastAsianFont(font);
    textPortion.getPortionFormat().setLatinFont(font);

    // Denetleme dilinin Id'sini ayarla.
    textPortion.getPortionFormat().setLanguageId("zh-CN");

    textPortion.setText("1。");
    paragraph.getPortions().add(textPortion);

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

Varsayılan Dili Ayarla

Sunum yüklenirken ya da yeni bir sunum oluşturulurken oluşturulan metinler için varsayılan dili tanımlamak amacıyla LoadOptions.setDefaultTextLanguage metodunu kullanın.

import com.aspose.slides.*;

LoadOptions loadOptions = new LoadOptions();
loadOptions.setDefaultTextLanguage("en-US");

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

    // Yeni bir dikdörtgen şekil ekle ve metin ekle.
    IAutoShape shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 20, 20, 150, 50);
    shape.getTextFrame().setText("Sample text");

    // İlk bölümün dilini kontrol et.
    IPortion portion = shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0);
    System.out.println(portion.getPortionFormat().getLanguageId());
} finally {
    presentation.dispose();
}

Varsayılan Metin Stili Ayarla

Sunum düzeyinde varsayılan metin biçimlendirmesi uygulamak için IPresentation.getDefaultTextStyle metodunu kullanın.

Aşağıdaki kod örneği yeni bir sunumda tüm slaytlardaki metinler için 14 pt boyutunda kalın bir yazı tipini varsayılan olarak ayarlar.

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    // Üst düzey paragraf biçimini al.
    IParagraphFormat paragraphFormat = presentation.getDefaultTextStyle().getLevel(0);

    if (paragraphFormat != null) {
        paragraphFormat.getDefaultPortionFormat().setFontHeight(14);
        paragraphFormat.getDefaultPortionFormat().setFontBold(NullableBool.True);
    }

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

Tüm Büyük Harf Efekti ile Metni Çıkarma

PowerPoint’te All Caps (Tüm Büyük Harf) yazı tipi efekti uygulandığında, metin slaytta büyük harflerle gösterilir, ancak aslında küçük harflerle girilmiş olabilir. Aspose.Slides ile böyle bir metin bölümü elde edildiğinde kütüphane metni tam olarak girildiği gibi döndürür. Görüntülenen metinle eşleşmesi için TextCapType değerini kontrol edin ve değer All olduğunda döndürülen dizeyi büyük harfe dönüştürün.

Örnek olarak, sample2.pptx dosyasının ilk slaydındaki aşağıdaki metin kutusunu ele alalım.

Tüm Büyük Harf etkisi

Aşağıdaki kod örneği All Caps efekti uygulanmış metni nasıl çıkaracağınızı gösterir:

import com.aspose.slides.*;

Presentation presentation = new Presentation("sample2.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAutoShape autoShape = (IAutoShape)slide.getShapes().get_Item(0);
    IPortion textPortion = autoShape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0);

    System.out.println("Original text: " + textPortion.getText());

    IPortionFormatEffectiveData textFormat = textPortion.getPortionFormat().getEffective();
    if (textFormat.getTextCapType() == TextCapType.All) {
        String text = textPortion.getText().toUpperCase();
        System.out.println("All-Caps effect: " + text);
    }
} finally {
    presentation.dispose();
}

Çıktı:

Original text: Hello, Aspose!
All-Caps effect: HELLO, ASPOSE!

SSS

Bir slayttaki tabloda metni nasıl değiştiririm?

Bir slayttaki tabloda metni değiştirmek için ITable arayüzünü kullanın. Hücreler arasında döngü kurarak her hücreyi ICell.getTextFrame metodu ile alın ve ardından paragraf biçimlendirmesini IParagraph.getParagraphFormat ile güncelleyin.

PowerPoint slaytındaki metne degrade renk nasıl uygulanır?

Degrade renk uygulamak için IBasePortionFormat.getFillFormat metodunu kullanın. IFillFormat.setFillType metodunu FillType.Gradient olarak ayarlayın ve ardından degrade duraklarını, yönünü ve şeffaflığını yapılandırın.