איך לעצב טקסט בפייתון

איך לעצב טקסט בפייתון

Aspose.Slides FOSS for Python מספקת עיצוב טקסט מדויק דרך המחלקה PortionFormat. Portion הוא היחידה העצמאית הקטנה ביותר של טקסט; הוא ממופה לרצף עיצוב יחיד בתוך פסקה. מדריך זה מראה כיצד להחיל עיצוב מודגש, נטוי, גודל גופן וצבע על טקסט במצגת.

מדריך שלב אחר שלב

שלב 1: התקנת החבילה

pip install aspose-slides-foss

שלב 2: הוסף צורה עם מסגרת טקסט

לפני עיצוב הטקסט, על הצורה להכיל TextFrame. השתמש בshape.add_text_frame() כדי ליצור אחת.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 500, 150)
    tf = shape.add_text_frame("Default text: will be formatted")
    prs.save("output.pptx", SaveFormat.PPTX)

שלב 3: גישה ל‑TextFrame

shape.add_text_frame() מחזיר את האובייקט TextFrame. ניתן גם לאחזר אותו מאוחר יותר באמצעות shape.text_frame.

tf = shape.text_frame          # if the frame already exists
tf = shape.add_text_frame("") # creates a new frame

TextFrame מכיל רשימה של אובייקטים Paragraph (tf.paragraphs). כל Paragraph מכיל אובייקטים Portion (paragraph.portions).


שלב 4: יישום עיצוב מודגש ונטוי

השתמש בportion_format.font_bold ובportion_format.font_italic. מאפיינים אלה מקבלים NullableBool.TRUE, NullableBool.FALSE או NullableBool.NOT_DEFINED (יורשים מהמאסטר).

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType, NullableBool
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 500, 150)
    tf = shape.add_text_frame("Bold and italic text")

    fmt = tf.paragraphs[0].portions[0].portion_format
    fmt.font_bold = NullableBool.TRUE
    fmt.font_italic = NullableBool.TRUE

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

שלב 5: הגדר גודל גופן וצבע

הגדר portion_format.font_height לגודל (בנקודות) והשתמש בfill_format לצבע.

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType, NullableBool, FillType
from aspose.slides_foss.drawing import Color
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 500, 150)
    tf = shape.add_text_frame("Large corporate-blue heading")

    fmt = tf.paragraphs[0].portions[0].portion_format
    fmt.font_height = 32                          # 32pt font
    fmt.font_bold = NullableBool.TRUE
    fmt.fill_format.fill_type = FillType.SOLID
    fmt.fill_format.solid_fill_color.color = Color.from_argb(255, 0, 70, 127)

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

Color.from_argb(alpha, red, green, blue) מקבל ערכים 0–255 לכל ערוץ.


שלב 6: חלקים מרובים בפסקה אחת

פסקה בודדת יכולה להכיל מספר חלקים עם עיצוב שונה. הוסף Portion חדש לאוסף portions של פסקה:

import aspose.slides_foss as slides
from aspose.slides_foss import ShapeType, NullableBool, FillType
from aspose.slides_foss.drawing import Color
from aspose.slides_foss.export import SaveFormat

with slides.Presentation() as prs:
    slide = prs.slides[0]
    shape = slide.shapes.add_auto_shape(ShapeType.RECTANGLE, 50, 50, 600, 100)
    tf = shape.add_text_frame("")  # start with empty frame

    paragraph = tf.paragraphs[0]

    # First portion: normal text
    portion1 = paragraph.portions[0]
    portion1.text = "Normal text followed by "
    portion1.portion_format.font_height = 20

    # Second portion: bold red text
    portion2 = slides.Portion()
    portion2.text = "bold red text"
    portion2.portion_format.font_height = 20
    portion2.portion_format.font_bold = NullableBool.TRUE
    portion2.portion_format.fill_format.fill_type = FillType.SOLID
    portion2.portion_format.fill_format.solid_fill_color.color = Color.from_argb(255, 200, 0, 0)
    paragraph.portions.add(portion2)

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

בעיות נפוצות ותיקונים

הטקסט מופיע שחור גם אחרי קביעת צבע

ודא ש-fill_format.fill_type = FillType.SOLID מוגדר לפני הקצאת הצבע. ללא הגדרת סוג המילוי, שינוי הצבע עשוי שלא להיות בעל השפעה.

NullableBool.TRUE לעומת True

portion_format.font_bold מצפה ל‑NullableBool.TRUE, ולא ל‑True של פייתון. הקצאת True של פייתון עשויה לגרום ל‑TypeError או לשתוק וללא פעולה, תלוי בקישור.

הגופן אינו מופיע בקובץ השמור

המאפיין latin_font מגדיר את משפחת הגופנים הלטינית. אם לא הוגדר, נעשה שימוש בגופן של ערכת נושא המצגת. גופנים מותאמים אישית חייבים להיות משובצים או זמינים במחשב הצפייה.


שאלות נפוצות

איך אני משנה את משפחת הגופנים?

הגדר portion_format.latin_font:

fmt.latin_font = slides.FontData("Arial")

FontData מקבל את שם משפחת הגופן כמחרוזת.

איך אני מגדיר יישור פסקה?

השתמש paragraph_format.alignment:

from aspose.slides_foss import TextAlignment

tf.paragraphs[0].paragraph_format.alignment = TextAlignment.CENTER

ערכים נתמכים: LEFT, CENTER, RIGHT, JUSTIFY.

איך אני מגדיר ריווח שורות?

השתמש בparagraph_format.space_before (נקודות לפני פסקה) או בparagraph_format.space_after (נקודות אחרי פסקה):

tf.paragraphs[0].paragraph_format.space_before = 12   # 12pt before
tf.paragraphs[0].paragraph_format.space_after = 6     # 6pt after

ראה גם

 עברית