Java'da Sunum Metnini Biçimlendirme
Genel Bakış
Bu makale, Aspose.Slides for Java kullanarak PowerPoint ve OpenDocument sunumlarında metni nasıl biçimlendireceğinizi gösterir. Metin vurgulama, arka plan renkleri, şeffaflık, karakter aralığı, yazı tipi özellikleri, döndürme, paragraf aralığı, otomatik sığdırma davranışı, metin konumlandırma, sekme durakları ve dil ayarlarını kapsar.
Aşağıdaki örneklerde, ilk slaytında aşağıdaki metni içeren tek bir metin kutusu bulunan “sample.pptx” adlı bir dosya kullanacağız:

Metni Vurgulama
Bir metin çerçevesinde belirli bir örnekle eşleşen metni vurgulamanız gerektiğinde ITextFrame.highlightText yöntemini kullanın. Bu yöntem, eşleşen metin parçalarına vurgulama rengi uygular ve aramanın nasıl yapılacağını kontrol etmek için, örneğin yalnızca tam kelimelerle eşleşmeyi sağlamak amacıyla, TextSearchOptions ile birlikte kullanılabilir.
Aşağıdaki kod örneği, “try” karakterlerinin tüm oluşumlarını vurgular ve ardından yalnızca tam kelime “to” yi vurgular.
Presentation presentation = new Presentation("sample.pptx");
try {
// İlk slayttaki ilk şekli al.
IAutoShape shape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
// Şekildeki "try" kelimesini vurgula.
shape.getTextFrame().highlightText("try", Color.LIGHT_GRAY);
TextSearchOptions searchOptions = new TextSearchOptions();
searchOptions.setWholeWordsOnly(true);
// Şekildeki "to" kelimesini vurgula.
shape.getTextFrame().highlightText("to", Color.MAGENTA, searchOptions, null);
presentation.save("highlighted_text.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Sonuç:

Düzenli İfadelerle Metni Vurgulama
ITextFrame.highlightRegex yöntemi, düzenli ifadeyle bulunan metin eşleşmelerini vurgular. Java’da bu API, ITextFrame üzerinde sunulmuştur.
Aşağıdaki kod örneği, yedi veya daha fazla karakter içeren tüm kelimeleri vurgular:
Presentation presentation = new Presentation("sample.pptx");
try {
IAutoShape shape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
java.util.regex.Pattern regex = java.util.regex.Pattern.compile("\\b[^\\s]{7,}\\b");
// Yedi veya daha fazla karaktere sahip tüm kelimeleri vurgula.
shape.getTextFrame().highlightRegex(regex, Color.YELLOW, null);
presentation.save("highlighted_text_using_regex.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Sonuç:

Metin Arka Plan Rengini Ayarlama
Bir paragraf için varsayılan vurgulama rengini ayarlamak için IParagraphFormat.getDefaultPortionFormat yöntemini kullanın veya tek tek metin bölümleri için IBasePortionFormat.getHighlightColor yöntemini kullanın.
Aşağıdaki kod örneği, tüm paragraf için arka plan rengini nasıl ayarlayacağınızı gösterir:
Presentation presentation = new Presentation("sample.pptx");
try {
IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).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ç:

Aşağıdaki kod örneği, kalın yazı tipine sahip metin bölümleri için arka plan rengini nasıl ayarlayacağınızı gösterir:
Presentation presentation = new Presentation("sample.pptx");
try {
IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).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ç:

Metin Paragraflarını Hizalama
Bir metin çerçevesindeki paragraf hizalamasını ayarlamak için IParagraphFormat.setAlignment yöntemini kullanın. Değer, ortalanmış, sola hizalı, sağa hizalı, iki yana yaslı vb. olabilir.
Aşağıdaki kod örneği, paragrafı ortaya hizalamanın nasıl yapılacağını gösterir:
Presentation presentation = new Presentation("sample.pptx");
try {
IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
// Paragrafın hizalamasını ortaya ayarla.
paragraph.getParagraphFormat().setAlignment(TextAlignment.Center);
presentation.save("aligned_paragraph.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Sonuç:

Metin Şeffaflığını Ayarlama
Metin şeffaflığı, IBasePortionFormat.getFillFormat yöntemine atanan rengin alfa bileşeni üzerinden kontrol edilir. Aşağıdaki örneklerde, alpha = 50 0-255 ölçeğinde bir ARGB alfa kanalı değeridir, şeffaflık yüzdesi değildir.
Aşağıdaki kod örneği, tüm paragraf için şeffaflık uygulamanın nasıl yapılacağını gösterir:
int alpha = 50;
Presentation presentation = new Presentation("sample.pptx");
try {
IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
IParagraph paragraph = autoShape.getTextFrame().getParagraphs().get_Item(0);
// Metnin doldurma 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ç:

Aşağıdaki kod örneği, kalın yazı tipine sahip metin bölümleri için şeffaflık uygulamanın nasıl yapılacağını gösterir:
int alpha = 50;
Presentation presentation = new Presentation("sample.pptx");
try {
IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).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ç:

Metin İçin Karakter Aralığını Ayarlama
Bir metin kutusundaki karakterler arasındaki boşluğu artırmak veya azaltmak için IBasePortionFormat.setSpacing yöntemini kullanın.
Aşağıdaki Java kodu, tüm paragrafta karakter aralığını nasıl artıracağınızı gösterir:
Presentation presentation = new Presentation("sample.pptx");
try {
IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).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.
paragraph.getParagraphFormat().getDefaultPortionFormat().setSpacing(3); // Karakter aralığını genişlet.
presentation.save("character_spacing_in_paragraph.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Sonuç:

Aşağıdaki kod örneği, kalın yazı tipine sahip metin bölümlerinde karakter aralığını nasıl artıracağınızı gösterir:
Presentation presentation = new Presentation("sample.pptx");
try {
IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).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.
portion.getPortionFormat().setSpacing(3); // Karakter aralığını genişlet.
}
}
presentation.save("character_spacing_in_text_portions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Sonuç:

Belirli Yazı Tipleri İçin Kerning’i Devre Dışı Bırakma
Bazı durumlarda, Aspose.Slides tarafından oluşturulan metin, PowerPoint’te görüntülenen aynı metinden biraz daha sık görünebilir. Bu, PowerPoint’in belirli yazı tipleri için kerning verilerini yoksayması nedeniyle olabilir; hatta yazı tipi geçerli kerning bilgisine sahip olsa ve PowerPoint ayarlarında kerning etkin olsa bile.
Bu 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 yöntemini gerçek yazı tipi boyutundan önemli ölçüde daha büyük bir değere ayarlayın:
Presentation presentation = new Presentation("presentation.pptx");
try {
IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).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 renderlemesini PowerPoint’in görsel çıktısıyla hizalamaya yardımcı olabilir.
Metin Yazı Tipi Özelliklerini Yönetme
Yazı tipi özellikleri, IParagraphFormat.getDefaultPortionFormat yöntemiyle paragraf düzeyinde veya tek tek bölümler için IPortionFormat yöntemiyle ayarlanabilir.
Aşağıdaki kod, tüm paragraf için yazı tipi ve metin stilini ayarlar: paragraftaki tüm bölümlere yazı tipi boyutu, kalın, italik, noktalı alt çizgi ve Times New Roman yazı tipini uygular.
Presentation presentation = new Presentation("sample.pptx");
try {
IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).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ç:

Aşağıdaki kod örneği, kalın yazı tipine sahip metin bölümleri için benzer özellikleri uygular:
Presentation presentation = new Presentation("sample.pptx");
try {
IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).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 Döndürmeyi Ayarlama
Bir şekil içinde önceden tanımlı bir metin yönünü ayarlamak için ITextFrameFormat.setTextVerticalType yöntemini kullanın.
Aşağıdaki kod örneği, şekil içindeki metin yönünü Vertical270 olarak ayarlar; bu, metni 90 derece saat yönünün tersine döndürür:
Presentation presentation = new Presentation("sample.pptx");
try {
IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
autoShape.getTextFrame().getTextFrameFormat().setTextVerticalType(TextVerticalType.Vertical270);
presentation.save("text_rotation.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Sonuç:

Metin Çerçeveleri İçin Özelleştirilmiş Döndürmeyi Ayarlama
Bir ITextFrame için özelleştirilmiş bir döndürme açısı ayarlamak için ITextFrameFormat.setRotationAngle yöntemini kullanın.
Aşağıdaki kod örneği, şekil içinde metin çerçevesini saat yönünde 3 derece döndürür:
Presentation presentation = new Presentation("sample.pptx");
try {
IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
autoShape.getTextFrame().getTextFrameFormat().setRotationAngle(3);
presentation.save("custom_text_rotation.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Sonuç:

Paragrafların Satır Aralığını Ayarlama
Aspose.Slides, paragraf aralığını kontrol etmek için IParagraphFormat.setSpaceAfter, IParagraphFormat.setSpaceBefore ve IParagraphFormat.setSpaceWithin yöntemlerini sağlar. Bu özellikler şu şekilde kullanılır:
- Satır aralığını, satır yüksekliğinin yüzde olarak belirtmek için pozitif bir değer kullanın.
- Satır aralığını nokta cinsinden belirtmek için negatif bir değer kullanın.
Aşağıdaki kod örneği, paragraftaki satır aralığını nasıl belirleyeceğinizi gösterir:
Presentation presentation = new Presentation("sample.pptx");
try {
IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).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ç:

Metin Çerçeveleri İçin Otomatik Sığdırma Türünü Ayarlama
ITextFrameFormat.setAutofitType metin, kapsayıcısının sınırlarını aştığında nasıl davranacağını belirler. Metnin küçülmesini, taşmasını veya şeklin otomatik olarak yeniden boyutlandırılmasını kontrol etmek için kullanın.
Presentation presentation = new Presentation("sample.pptx");
try {
IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
autoShape.getTextFrame().getTextFrameFormat().setAutofitType(TextAutofitType.Shape);
presentation.save("autofit_type.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Metin Çerçevelerinin Sabitlemesini Ayarlama
ITextFrameFormat.setAnchoringType bir şekil içinde metnin dikey konumlandırılmasını tanımlar; örneğin üstte, ortada veya altta.
Presentation presentation = new Presentation("sample.pptx");
try {
IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).getShapes().get_Item(0);
autoShape.getTextFrame().getTextFrameFormat().setAnchoringType(TextAnchorType.Bottom);
presentation.save("text_anchor.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Metin Sekme Ayarlarını Belirleme
Bir paragrafta sekme duraklarını yapılandırmak için IParagraphFormat.setDefaultTabSize ve IParagraphFormat.getTabs yöntemlerini kullanın.
Presentation presentation = new Presentation("sample.pptx");
try {
IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).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ç:

Denetleme Dilini Ayarlama
Aspose.Slides, bir metin bölümü için denetleme dilini ayarlamanızı sağlayan IBasePortionFormat.setLanguageId yöntemini sunar. Denetleme dili, PowerPoint’teki yazım ve dilbilgisi denetiminde kullanılan dili belirler.
Aşağıdaki kod örneği, bir metin bölümü için denetleme dilini nasıl ayarlayacağınızı gösterir:
Presentation presentation = new Presentation("presentation.pptx");
try {
IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).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 kimliğini 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 Ayarlama
Bir sunumu yüklerken veya oluştururken yaratılan metinler için varsayılan dili tanımlamak amacıyla LoadOptions.setDefaultTextLanguage yöntemini kullanın.
LoadOptions loadOptions = new LoadOptions();
loadOptions.setDefaultTextLanguage("en-US");
Presentation presentation = new Presentation(loadOptions);
try {
ISlide slide = presentation.getSlides().get_Item(0);
// Metinle yeni bir dikdörtgen şekil 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 Biçimini Ayarlama
Sunum düzeyinde varsayılan metin biçimlendirmesini uygulamak için IPresentation.getDefaultTextStyle yöntemini kullanın.
Aşağıdaki kod örneği, yeni bir sunumdaki tüm slaytlarda tüm metinler için 14 pt boyutunda varsayılan kalın bir yazı tipi nasıl ayarlanacağını gösterir.
Presentation presentation = new Presentation();
try {
// Üst seviye 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 Efektiyle Metni Çıkarma
PowerPoint’te All Caps (Tüm Büyük Harf) yazı tipi etkisini uygulamak, metni slaytta büyük harflerle gösterir; metin orijinal olarak küçük harfle yazılmış olsa bile. Aspose.Slides ile böyle bir metin bölümü alındığında, kütüphane metni tam olarak girildiği gibi döndürür. Görünen metinle eşleşmek için TextCapType kontrol edin ve değer All olduğunda dönen dizgeyi büyük harfe çevirin.
Örneğin, sample2.pptx dosyasının ilk slaytında aşağıdaki metin kutusunun olduğunu varsayalım.

Aşağıdaki kod örneği, All Caps etkisi uygulanmış metni nasıl çıkaracağınızı gösterir:
Presentation presentation = new Presentation("sample2.pptx");
try {
IAutoShape autoShape = (IAutoShape)presentation.getSlides().get_Item(0).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 tablo içindeki metni nasıl değiştiririm?
Bir slayttaki tablo içindeki metni değiştirmek için ITable kullanın. Hücreler üzerinde döngü yaparak her bir hücreyi ICell.getTextFrame ile güncelleyin ve paragraf biçimlendirmesini IParagraph.getParagraphFormat ile ayarlayın.
PowerPoint slaytındaki metne degrade (gradient) renk nasıl uygulanır?
Metne degrade renk uygulamak için IBasePortionFormat.getFillFormat kullanın. IFillFormat.setFillType yöntemini FillType.Gradient olarak ayarlayın ve degrade duraklarını, yönünü ve şeffaflığını yapılandırın.