Python üzerinden Java ile Sunum Metnini Biçimlendirme

Genel Bakış

Bu makale, Aspose.Slides for Python via 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 çapa noktası, sek durakları ve dil ayarlarını kapsar.

Aksi belirtilmedikçe, örnekler sample.pptx dosyasını kullanır. İlk slaytının ilk şekli bir metin kutusudur ve ilk paragrafı aşağıda gösterilen metni içerir. Slayt ve şekil indeksleri sıfır tabanlıdır. Kalın bölümleri seçen örnekler, kalıtılmış kalın biçimlendirme dahil olmak üzere etkili biçimlendirmeyi kullanır:

Örnek metin

Literal metin veya düzenli ifade eşleşmelerini bulmak ve vurgulamak için Metin Ara ve Değiştir bölümüne bakın.

Metin Arka Plan Rengini Ayarla

Bir paragrafın varsayılan vurgulama rengini ayarlamak için ParagraphFormat.getDefaultPortionFormat kullanın veya bireysel metin bölümleri için BasePortionFormat.getHighlightColor kullanın.

Aşağıdaki örnek, ilk paragraf için varsayılan olarak açık gri bir vurgulama ayarlar. Bireysel bölümlerde belirtilen vurgulama renkleri bu varsayılanın üzerine yazar:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat
from java.awt import Color

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    auto_shape = slide.getShapes().get_Item(0)
    paragraph = auto_shape.getTextFrame().getParagraphs().get_Item(0)

    # Tüm paragrafın 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 rengini nasıl ayarlayacağınızı gösterir:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat
from java.awt import Color

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    auto_shape = slide.getShapes().get_Item(0)
    paragraph = auto_shape.getTextFrame().getParagraphs().get_Item(0)

    for portion in 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 ParagraphFormat.setAlignment kullanın. Değer merkezlenmiş, sola hizalanmış, sağa hizalanmış, iki yana hizalanmış vb. olabilir.

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

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, TextAlignment

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    auto_shape = slide.getShapes().get_Item(0)
    paragraph = auto_shape.getTextFrame().getParagraphs().get_Item(0)

    # Paragrafın hizalamasını merkeze ayarla.
    paragraph.getParagraphFormat().setAlignment(TextAlignment.Center)

    presentation.save("aligned_paragraph.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Sonuç:

Hizalanmış paragraf

Satır İçinde Yazı Tiplerini Hizala

Bir satır içinde farklı yazı tipi boyutlarına sahip metin bölümlerini dikey olarak hizalamak için ParagraphFormat.setFontAlignment kullanın. Bu ayar tüm paragrafı etkiler ve her satırdaki hizalamayı kontrol eder.

Aşağıdaki bağımsız örnek, bir slaytta dört etiketli metin kutusu oluşturur. Her paragraf aynı metni 18, 36 ve 54 puanda içerir ve farklı bir yazı tipi hizalaması vardır. Arial kullanır, otomatik sığdırma ve sarma devre dışı bırakılır ve metin çerçeveleri tek satır için yeterince büyük tutulur.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import FillType, FontAlignment, FontData, NullableBool, Paragraph, Portion, Presentation, SaveFormat, ShapeType, TextAlignment, TextAnchorType, TextAutofitType
from java.awt import Color

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(0)

    alignments = [FontAlignment.Baseline, FontAlignment.Top, FontAlignment.Center, FontAlignment.Bottom]
    alignment_names = ["Baseline", "Top", "Center", "Bottom"]
    font_sizes = [18.0, 36.0, 54.0]
    font = FontData("Arial")

    for i, alignment in enumerate(alignments):
        shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 30, 20 + i * 130, 660, 120)
        shape.getFillFormat().setFillType(FillType.NoFill)
        shape.getLineFormat().getFillFormat().setFillType(FillType.NoFill)

        text_frame = shape.getTextFrame()
        text_frame.getTextFrameFormat().setAnchoringType(TextAnchorType.Top)
        text_frame.getTextFrameFormat().setAutofitType(TextAutofitType.None_)
        text_frame.getTextFrameFormat().setWrapText(NullableBool.False_)

        label = text_frame.getParagraphs().get_Item(0)
        label.setText(alignment_names[i])
        label.getParagraphFormat().setAlignment(TextAlignment.Left)
        label.getParagraphFormat().getDefaultPortionFormat().setFontHeight(14)
        label.getParagraphFormat().getDefaultPortionFormat().setLatinFont(font)
        label.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid)
        label.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.GRAY)

        paragraph = Paragraph()
        paragraph.getParagraphFormat().setFontAlignment(alignment)
        paragraph.getParagraphFormat().setAlignment(TextAlignment.Left)
        paragraph.getParagraphFormat().getDefaultPortionFormat().setLatinFont(font)
        paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid)
        paragraph.getParagraphFormat().getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK)

        for font_size in font_sizes:
            portion = Portion("Ag ")
            portion.getPortionFormat().setFontHeight(font_size)
            paragraph.getPortions().add(portion)

        text_frame.getParagraphs().add(paragraph)

    presentation.save("font_alignment.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Sonuç:

Karışık yazı tipi boyutlarıyla Alt Çizgi, Üst, Merkez ve Alt yazı tipi hizalamalarının karşılaştırması

Yazı tipi hizalaması yazı tipi ölçümlerine dayanır; bu nedenle bireysel harflerin görünen kenarları tam olarak hizalanmayabilir. Örnek, alt çizgi ve alt hizalama arasındaki farkı göstermeye yardımcı olmak için bir büyük harf ve bir aşağı uzanan karakter içerir. Yazı tipi bulunabilirliği ve ikamesi, kullanılan karakterler ve yazı tipi boyutları farkı sonucu etkiler. Çerçeve boyutları, kenar boşlukları, satır aralığı, sarma ve otomatik sığdırma da yerleşimi etkiler; modları karşılaştırırken aynı yazı tiplerini ve yerleşim ayarlarını kullanın.

Bu ayar, yatay paragraf hizalamasını kontrol eden ParagraphFormat.setAlignment ve şekil içinde metin bloğunu dikey konumlandıran TextFrameFormat.setAnchoringType ayarlarından farklıdır. BasePortionFormat.setEscapement ile üst ve alt yazı biçimlendirmesi, paragraf satırlarının alt çizgisine göre bireysel bölümleri kaydırır, yazı tipi hizalaması ayarlamaz.

Metin Şeffaflığını Ayarla

Metin şeffaflığı, BasePortionFormat.getFillFormat aracılığıyla atanan rengin alfa bileşeni ile kontrol edilir. Aşağıdaki örneklerde alpha = 50, yüzde değil 0–255 ölçeğinde bir ARGB alfa kanalı değeridir.

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

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import FillType, Presentation, SaveFormat
from java.awt import Color

alpha = 50
text_color = Color(0, 0, 0, alpha)

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    auto_shape = slide.getShapes().get_Item(0)
    paragraph = auto_shape.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(text_color)

    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 jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import FillType, Presentation, SaveFormat
from java.awt import Color

alpha = 50
text_color = Color(0, 0, 0, alpha)

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    auto_shape = slide.getShapes().get_Item(0)
    paragraph = auto_shape.getTextFrame().getParagraphs().get_Item(0)

    for portion in 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(text_color)

    presentation.save("transparent_text_portions.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Sonuç:

Şeffaf metin bölümleri

Metin Karakter Aralığını Ayarla

Karakterler arasındaki boşluğu genişletmek veya sıkıştırmak için BasePortionFormat.setSpacing kullanın. Örnekler 3 puan ekler; negatif değerler metni sıkıştırır.

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

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    auto_shape = slide.getShapes().get_Item(0)
    paragraph = auto_shape.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çinde karakter aralığını nasıl genişleteceğinizi gösterir:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    auto_shape = slide.getShapes().get_Item(0)
    paragraph = auto_shape.getTextFrame().getParagraphs().get_Item(0)

    for portion in 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 İçin Kerning’i Devre Dışı Bırak

Bazı durumlarda, Aspose.Slides tarafından oluşturulan metin, PowerPoint’teki aynı metinden biraz daha sık görünebilir. Bunun nedeni, PowerPoint’in bazı yazı tipleri için kerning verilerini yok saymasıdır; hatta yazı tipi geçerli kerning bilgileri içeriyor ve PowerPoint ayarlarında kerning açıksa bile.

Bu durumlarda, etkilenen yazı tipini kullanan metin bölümleri için kerning’i devre dışı bırakabilirsiniz. BasePortionFormat.setKerningMinimalSize değerini gerçek yazı tipi boyutundan daha büyük bir değere ayarlayın. Bu örnek, ilk slaydın ilk şekli olarak bir metin kutusu içeren “presentation.pptx” dosyasını gerektirir. Etkili yazı tipi adlarını (kalıtılmış yazı tipleri dahil) denetler ve Roboto kullanan bölümler için 100 puan eşik değeri ayarlar. Böylece 100 puandan küçük puntoya sahip eşleşen bölümler için kerning devre dışı bırakılır:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation("presentation.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    auto_shape = slide.getShapes().get_Item(0)
    target_font = "Roboto"

    for paragraph in auto_shape.getTextFrame().getParagraphs():
        for portion in paragraph.getPortions():
            portion_format = portion.getPortionFormat().getEffective()
            fonts = (portion_format.getLatinFont(), portion_format.getEastAsianFont(), portion_format.getComplexScriptFont())
            if any(font is not None and font.getFontName() == target_font for font in fonts):
                portion.getPortionFormat().setKerningMinimalSize(100)

    presentation.save("output.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Eşiğin altındaki eşleşen metin için bu ayar kerning’i önler ve bu PowerPoint’e özgü davranıştan etkilenen yazı tipleri için Aspose.Slides render çıktısını PowerPoint’in görsel çıktısına yaklaştırmaya yardımcı olabilir.

Metin Yazı Tipi Özelliklerini Yönet

Paragraf düzeyinde yazı tipi özellikleri, ParagraphFormat.getDefaultPortionFormat üzerinden veya bireysel bölümler için PortionFormat aracılığıyla ayarlanabilir.

Aşağıdaki örnek, ilk paragrafın varsayılan yazı tipini 12 puan Times New Roman, kalın, italik ve noktalı alt çizgi biçimlendirmesiyle ayarlar. Bireysel bölümlerde yapılan açık biçimlendirme bu varsayılanların üzerine yazar:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import FontData, NullableBool, Presentation, SaveFormat, TextUnderlineType

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    auto_shape = slide.getShapes().get_Item(0)
    paragraph = auto_shape.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)
    font = FontData("Times New Roman")
    paragraph.getParagraphFormat().getDefaultPortionFormat().setLatinFont(font)

    presentation.save("font_properties_for_paragraph.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Sonuç:

Paragraf için yazı tipi özellikleri

Aşağıdaki örnek, etkili biçimlendirmesi kalın olan bölümler için 13 puan Times New Roman, italik ve noktalı alt çizgi uygular:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import FontData, NullableBool, Presentation, SaveFormat, TextUnderlineType

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    auto_shape = slide.getShapes().get_Item(0)
    paragraph = auto_shape.getTextFrame().getParagraphs().get_Item(0)

    for portion in 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)
            font = FontData("Times New Roman")
            portion.getPortionFormat().setLatinFont(font)

    presentation.save("font_properties_for_text_portions.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Sonuç:

Metin bölümleri için yazı tipi özellikleri

Metin Döndürmeyi Ayarla

Şekil içinde önceden tanımlı bir metin yönelimi ayarlamak için TextFrameFormat.setTextVerticalType kullanın.

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

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, TextVerticalType

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    auto_shape = slide.getShapes().get_Item(0)
    auto_shape.getTextFrame().getTextFrameFormat().setTextVerticalType(TextVerticalType.Vertical270)

    presentation.save("text_rotation.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Sonuç:

Metin döndürmesi

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

Bir TextFrame için özel bir döndürme açısı ayarlamak için TextFrameFormat.setRotationAngle kullanın.

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

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    auto_shape = slide.getShapes().get_Item(0)
    auto_shape.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 ParagraphFormat.setSpaceAfter, ParagraphFormat.setSpaceBefore ve ParagraphFormat.setSpaceWithin sağlar. Bu özellikler şu şekilde kullanılır:

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

Aşağıdaki örnek, ilk paragrafta satır yüksekliğinin %200’ü kadar (çift satır) aralık ayarlar:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    auto_shape = slide.getShapes().get_Item(0)

    paragraph = auto_shape.getTextFrame().getParagraphs().get_Item(0)
    paragraph.getParagraphFormat().setSpaceWithin(200)

    presentation.save("line_spacing.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Sonuç:

Paragraftaki satır aralığı

Satır Kesilmesini Kontrol Et

Paragraf satır kesme kuralları, dar metin blokları ve Latin ile Doğu Asya metinlerinin bir arada kullanıldığı sunumlar için yararlıdır. Aşağıdaki yöntemler ParagraphFormat sınıfına aittir; bu nedenle bir bütün paragrafı etkiler:

  • setLatinLineBreak Latin satır kesme kurallarını kontrol eder. Karışık metinde değiştirilmesi, bitişik Doğu Asya metni ve noktalama işaretlerinin nerede kayacağını da etkileyebilir.
  • setEastAsianLineBreak Doğu Asya satır kesme kurallarını kontrol eder; satırın başı ve sonundaki karakter sınırlamalarını içerir.

Bu kurallar, bir metin çerçevesi içinde otomatik sarma sağlayan TextFrameFormat.setWrapText işlevinin yerini almaz. Sarma gerçekleştiğinde yerleşimi etkiler; satır sonu karakteri eklemezler. Açık bir satır sonu, mevcut genişlikten bağımsız olarak paragrafta yeni bir satır zorlar.

Aşağıdaki bağımsız örnek, Çince ve Latin metin içeren dar bir metin bloğu oluşturur. Her iki satır kesme seçeneğini de açıkça ayarlar ve “line_breaking.pptx” olarak kaydeder. Her iki kuraldan birini denemek için, diğer ayarı sabit tutarken ilgili değeri değiştirin. Örnek, 24 puan Arial ve SimSun, 160 puan çerçeve genişliği ve sıfır yatay metin çerçevesi kenar boşluğu kullanır. TextFrameFormat.setAutofitType TextAutofitType.None_ ile çağrılır; böylece metin boyutu ve çerçeve boyutları sabit kalır.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import FillType, FontData, NullableBool, Presentation, SaveFormat, ShapeType, TextAlignment, TextAutofitType
from java.awt import Color

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(0)

    shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 160, 300)
    shape.getFillFormat().setFillType(FillType.NoFill)

    text_frame = shape.getTextFrame()
    text_frame.getTextFrameFormat().setWrapText(NullableBool.True_)
    text_frame.getTextFrameFormat().setAutofitType(TextAutofitType.None_)
    text_frame.getTextFrameFormat().setMarginLeft(0)
    text_frame.getTextFrameFormat().setMarginRight(0)

    paragraph = text_frame.getParagraphs().get_Item(0)
    paragraph.setText("中文排版测试,PowerPoint 中文演示。")

    paragraph_format = paragraph.getParagraphFormat()
    paragraph_format.setAlignment(TextAlignment.Left)
    paragraph_format.getDefaultPortionFormat().setFontHeight(24)
    latin_font = FontData("Arial")
    paragraph_format.getDefaultPortionFormat().setLatinFont(latin_font)
    east_asian_font = FontData("SimSun")
    paragraph_format.getDefaultPortionFormat().setEastAsianFont(east_asian_font)
    paragraph_format.getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid)
    paragraph_format.getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK)
    paragraph_format.setLatinLineBreak(NullableBool.False_)
    paragraph_format.setEastAsianLineBreak(NullableBool.True_)

    presentation.save("line_breaking.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Askıya Alınan Noktalama İşaretini Kontrol Et

ParagraphFormat.setHangingPunctuation uygun noktalama işaretlerinin metin satırının sağ kenarını aşarak uzamasına izin verir; bir sonraki satırı doldurmaz. Bu, tüm paragrafı etkiler ve askıya alınmış girintiden farklıdır.

Aşağıdaki bağımsız örnek, 100 puan genişliğinde bir metin çerçevesinde askıya alınmış noktalama işaretini etkinleştirir ve “hanging_punctuation.pptx” olarak kaydeder. 24 puan Arial ve sıfır yatay metin çerçevesi kenar boşluğu ile, son nokta “sentence” kelimesinin ardından kalır ve sağ metin kenarını aşar. Karşılaştırma için özelliği NullableBool.False_ olarak ayarlayın: bu ayarlarla nokta ayrı bir satır alır. Sarma açık ve otomatik sığdırma kapalıdır; mevcut genişlik sabit tutulur.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import FillType, FontData, NullableBool, Presentation, SaveFormat, ShapeType, TextAlignment, TextAutofitType
from java.awt import Color

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(0)

    shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 50, 50, 100, 200)
    shape.getFillFormat().setFillType(FillType.NoFill)

    text_frame = shape.getTextFrame()
    text_frame.getTextFrameFormat().setWrapText(NullableBool.True_)
    text_frame.getTextFrameFormat().setAutofitType(TextAutofitType.None_)
    text_frame.getTextFrameFormat().setMarginLeft(0)
    text_frame.getTextFrameFormat().setMarginRight(0)

    paragraph = text_frame.getParagraphs().get_Item(0)
    paragraph.setText("Simple text, next sentence.")

    paragraph_format = paragraph.getParagraphFormat()
    paragraph_format.setAlignment(TextAlignment.Left)
    paragraph_format.getDefaultPortionFormat().setFontHeight(24)
    latin_font = FontData("Arial")
    paragraph_format.getDefaultPortionFormat().setLatinFont(latin_font)
    paragraph_format.getDefaultPortionFormat().getFillFormat().setFillType(FillType.Solid)
    paragraph_format.getDefaultPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.BLACK)
    paragraph_format.setHangingPunctuation(NullableBool.True_)

    presentation.save("hanging_punctuation.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Her noktalama işareti askıya alınamaz. Yukarıda açıklanan yazı tipi ve yerleşim koşulları da bu karşılaştırmaya uygulanır: yazı tipini, mevcut genişliği, kenar boşluklarını veya otomatik sığdırma ayarlarını değiştirerek görünür fark ortadan kalkabilir.

Metin Çerçeveleri İçin Otomatik Sığdırma Türünü Ayarla

TextFrameFormat.setAutofitType, metnin kapsayıcısının sınırlarını aştığında nasıl davranacağını belirler. Metnin küçülüp küçülmeyeceği, taşma yapıp yapmayacağı veya şeklin otomatik olarak yeniden boyutlandırılıp boyutlandırılmayacağını kontrol etmek için kullanın. Aşağıdaki örnek, şekli metnine uyacak şekilde yeniden boyutlandırır ve sonucu “autofit_type.pptx” olarak kaydeder:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, TextAutofitType

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    auto_shape = slide.getShapes().get_Item(0)
    auto_shape.getTextFrame().getTextFrameFormat().setAutofitType(TextAutofitType.Shape)

    presentation.save("autofit_type.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Otomatik sarma sonrası satır sayısını saymak ve metin ya da şekil genişliğinin sonucu nasıl etkilediğini görmek için Sayılmış Satırları Sayma bölümüne bakın. Satır sayısı yalnızca metnin kapsayıcısını aşıp aşmadığını göstermez.

Metin Çerçevelerinin Çapa Noktasını Ayarla

TextFrameFormat.setAnchoringType, metnin şekil içinde dikey olarak nasıl konumlandırılacağını tanımlar; örneğin, üst, orta veya alt. Aşağıdaki örnek, metni ilk şeklin altına çapa noktasını ayarlar ve sonucu “text_anchor.pptx” olarak kaydeder:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, TextAnchorType

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    auto_shape = slide.getShapes().get_Item(0)
    auto_shape.getTextFrame().getTextFrameFormat().setAnchoringType(TextAnchorType.Bottom)

    presentation.save("text_anchor.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Metin Sekmesini Ayarla

Paragrafta sek duraklarını yapılandırmak için ParagraphFormat.setDefaultTabSize ve ParagraphFormat.getTabs kullanın. Aşağıdaki örnek, varsayılan sek aralığını 100 puan olarak ayarlar ve 30 puanda sola hizalanmış bir sek durak ekler. Bu ayarlar sek karakteri içeren metni etkiler:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat, TabAlignment

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    auto_shape = slide.getShapes().get_Item(0)

    paragraph = auto_shape.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

Düzeltme Dilini Ayarla

Aspose.Slides, bir metin bölümü için düzeltme dilini ayarlamanızı sağlayan BasePortionFormat.setLanguageId sunar. Düzeltme dili, PowerPoint’te yazım ve dilbilgisi denetimlerinde kullanılan dili belirler.

Aşağıdaki örnek, “presentation.pptx” dosyasının ilk slaydındaki ilk şekli olarak bir metin kutusu gerektirir ve en az bir paragraf içerir. İlk paragrafın içeriğini “1。” ile değiştirir, yazı tipini SimSun olarak ayarlar ve Basitleştirilmiş Çince düzeltme dilini (zh-CN) atar. Sonucu “proofing_language.pptx” olarak kaydeder:

import jpage
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import FontData, Portion, Presentation, SaveFormat

presentation = Presentation("presentation.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    auto_shape = slide.getShapes().get_Item(0)

    paragraph = auto_shape.getTextFrame().getParagraphs().get_Item(0)
    paragraph.getPortions().clear()

    font = FontData("SimSun")

    text_portion = Portion()
    text_portion.getPortionFormat().setComplexScriptFont(font)
    text_portion.getPortionFormat().setEastAsianFont(font)
    text_portion.getPortionFormat().setLatinFont(font)

    # Düzeltme dilinin kimliğini ayarla.
    text_portion.getPortionFormat().setLanguageId("zh-CN")

    text_portion.setText("1。")
    paragraph.getPortions().add(text_portion)

    presentation.save("proofing_language.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Varsayılan Dili Ayarla

LoadOptions.setDefaultTextLanguage kullanarak bir sunum yüklenirken veya oluşturulurken oluşturulan metin için varsayılan dili tanımlayabilirsiniz. Aşağıdaki örnek, varsayılan metin dili olarak ABD İngilizcesiyle bir sunum oluşturur, bir metin kutusu ekler ve ilk metin bölümü için en-US yazdırır:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import LoadOptions, Presentation, ShapeType

load_options = LoadOptions()
load_options.setDefaultTextLanguage("en-US")

presentation = Presentation(load_options)
try:
    slide = presentation.getSlides().get_Item(0)

    # Metin içeren bir dikdörtgen şekil ekle.
    shape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 20, 20, 150, 50)
    shape.getTextFrame().setText("Sample text")

    # İlk bölümün dilini kontrol et.
    portion = shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0)
    print(portion.getPortionFormat().getLanguageId())
finally:
    presentation.dispose()

Varsayılan Metin Stili Ayarla

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

Aşağıdaki örnek, yeni bir sunumda üst düzey paragraflar için 14 puan kalın bir yazı tipini varsayılan olarak ayarlar ve “default_text_style.pptx” olarak kaydeder. Metin, daha belirgin biçimlendirme üzerine yazılmadıkça bu varsayılanları miras alabilir.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import NullableBool, Presentation, SaveFormat

presentation = Presentation()
try:
    # Üst düzey paragraf biçimini al.
    paragraph_format = presentation.getDefaultTextStyle().getLevel(0)

    if paragraph_format is not None:
        paragraph_format.getDefaultPortionFormat().setFontHeight(14)
        paragraph_format.getDefaultPortionFormat().setFontBold(NullableBool.True_)

    presentation.save("default_text_style.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

BÜYÜK HARFLER Etkisiyle Metni Çıkar

PowerPoint’te All Caps (BÜYÜK HARFLER) yazı tipi efekti uygulandığında, metin slaytta büyük harf olarak görünür, ancak orijinal olarak küçük harfle girilmişse 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üntülenen metni eşleştirmek için TextCapType kontrol edin ve değer All olduğunda döndürülen dizeyi büyük harfe çevirin.

Bu örnek, “sample2.pptx” dosyasının ilk slaydındaki ilk şekli olarak bir metin kutusu gerektirir. İlk paragrafın ilk bölümü, All Caps etkisi uygulanmış “Hello, Aspose!” metnini içerir; aşağıda gösterildiği gibidir:

BÜYÜK HARFLER etkisi

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

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, TextCapType

presentation = Presentation("sample2.pptx")
try:
    slide = presentation.getSlides().get_Item(0)
    
    auto_shape = slide.getShapes().get_Item(0)
    text_portion = auto_shape.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0)

    print("Original text: " + str(text_portion.getText()))

    text_format = text_portion.getPortionFormat().getEffective()
    if text_format.getTextCapType() == TextCapType.All:
        text = str(text_portion.getText()).upper()
        print("All-Caps effect: " + text)
finally:
    presentation.dispose()

Çıktı:

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

SSS

Bir slayttaki tablo içinde metni nasıl değiştiririm?

Bir slayttaki tablo içinde metni değiştirmek için Table kullanın. Hücreler üzerinde döngü yapın ve her hücreyi Cell.getTextFrame ve paragraf biçimlendirmesini Paragraph.getParagraphFormat aracılığıyla güncelleyin.

PowerPoint slaytındaki metne degrade (gradient) renk nasıl uygularım?

Metne degrade renk uygulamak için BasePortionFormat.getFillFormat kullanın. FillFormat.setFillType değerini FillType.Gradient olarak ayarlayın ve degrade duraklarını, yönünü ve şeffaflığını yapılandırın.