Gérer TextBox

Les textes sur les diapositives existent généralement dans des zones de texte ou des formes. Par conséquent, pour ajouter un texte à une diapositive, vous devez ajouter une zone de texte et ensuite mettre un texte à l’intérieur de la zone de texte. Aspose.Slides pour Python via .NET fournit l’interface IAutoShape qui vous permet d’ajouter une forme contenant du texte.

Créer une zone de texte sur la diapositive

Pour créer une zone de texte sur une diapositive, suivez ces étapes :

  1. Créez une instance de la classe Presentation.
  2. Obtenez une référence pour la première diapositive de la présentation nouvellement créée.
  3. Ajoutez un objet IAutoShape avec ShapeType défini comme RECTANGLE à une position spécifiée sur la diapositive et obtenez la référence pour le nouvel objet IAutoShape ajouté.
  4. Ajoutez une propriété text_frame à l’objet IAutoShape qui contiendra un texte. Dans l’exemple ci-dessous, nous avons ajouté ce texte : Aspose TextBox.
  5. Enfin, écrivez le fichier PPTX via l’objet Presentation.

Ce code Python — une implémentation des étapes ci-dessus — vous montre comment ajouter du texte à une diapositive :

import aspose.slides as slides

# Instancie PresentationEx
with slides.Presentation() as pres:

    # Obtient la première diapositive de la présentation
    sld = pres.slides[0]

    # Ajoute une AutoShape avec le type défini comme Rectangle
    ashp = sld.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 75, 150, 50)

    # Ajoute TextFrame au Rectangle
    ashp.add_text_frame(" ")

    # Accède au cadre de texte
    txtFrame = ashp.text_frame

    # Crée l'objet Paragraph pour le cadre de texte
    para = txtFrame.paragraphs[0]

    # Crée un objet Portion pour le paragraphe
    portion = para.portions[0]

    # Définit le texte
    portion.text = "Aspose TextBox"

    # Enregistre la présentation sur le disque
    pres.save("TextBox_out.pptx", slides.export.SaveFormat.PPTX)

Vérifier si la forme est une zone de texte

Aspose.Slides fournit la propriété is_text_box (de la classe AutoShape) pour vous permettre d’examiner les formes et de trouver des zones de texte.

Zone de texte et forme

Ce code Python vous montre comment vérifier si une forme a été créée comme une zone de texte : xxx

from aspose.slides import Presentation, AutoShape

with Presentation("pres.pptx") as pres:
    for slide in pres.slides:
        for shape in slide.shapes:
            if (type(shape) is AutoShape):
                print("la forme est une zone de texte" if shape.is_text_box else "la forme n'est pas une zone de texte")

Ajouter une colonne dans la zone de texte

Aspose.Slides fournit les propriétés column_count et column_spacing (de l’interface ITextFrameFormat et de la classe text_frame_format) qui vous permettent d’ajouter des colonnes aux zones de texte. Vous pouvez spécifier le nombre de colonnes dans une zone de texte et définir l’espacement en points entre les colonnes.

Ce code en Python démontre l’opération décrite :

import aspose.slides as slides

with slides.Presentation() as presentation:
    # Obtient la première diapositive de la présentation
    slide = presentation.slides[0]

    # Ajoute une AutoShape avec le type défini comme Rectangle
    aShape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 300, 300)

    # Ajoute TextFrame au Rectangle
    aShape.add_text_frame("Toutes ces colonnes sont limitées à être à l'intérieur d'un seul conteneur de texte -- " +
    "vous pouvez ajouter ou supprimer du texte et le nouveau texte ou le texte restant s'ajuste automatiquement " +
    "pour s'écouler à l'intérieur du conteneur. Vous ne pouvez pas faire couler du texte d'un conteneur " +
    "à un autre cependant -- nous vous avons dit que les options de colonnes de PowerPoint pour le texte sont limitées!")

    # Obtient le format de texte de TextFrame
    format = aShape.text_frame.text_frame_format

    # Spécifie le nombre de colonnes dans TextFrame
    format.column_count = 3

    # Spécifie l'espacement entre les colonnes
    format.column_spacing = 10

    # Enregistre la présentation
    presentation.save("ColumnCount.pptx", slides.export.SaveFormat.PPTX)

Ajouter une colonne dans le cadre de texte

Aspose.Slides pour Python via .NET fournit la propriété ColumnCount (de l’interface ITextFrameFormat) qui vous permet d’ajouter des colonnes dans les cadres de texte. Grâce à cette propriété, vous pouvez spécifier votre nombre de colonnes préféré dans un cadre de texte.

Ce code Python vous montre comment ajouter une colonne dans un cadre de texte :

import aspose.slides as slides

outPptxFileName = "ColumnsTest.pptx"
with slides.Presentation() as pres:
    shape1 = pres.slides[0].shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 100, 100, 300, 300)
    format = shape1.text_frame.text_frame_format

    format.column_count = 2
    shape1.text_frame.text = """Toutes ces colonnes sont forcées de rester à l'intérieur d'un seul conteneur de texte -- 
        vous pouvez ajouter ou supprimer du texte - et le nouveau texte ou le texte restant s'ajuste automatiquement 
        pour rester à l'intérieur du conteneur. Vous ne pouvez pas faire couler du texte d'un conteneur 
        à un autre, cependant -- parce que les options de colonnes de PowerPoint pour le texte sont limitées!
        pres.save(outPptxFileName, slides.export.SaveFormat.PPTX)"""

    with slides.Presentation(path + outPptxFileName) as test:
        print(test.slides[0].shapes[0].text_frame.text_frame_format.column_count)
        print(test.slides[0].shapes[0].text_frame.text_frame_format.column_spacing)

    format.column_spacing = 20
    pres.save(path + outPptxFileName, slides.export.SaveFormat.PPTX)

    with slides.Presentation(path + outPptxFileName) as test:
        print(test.slides[0].shapes[0].text_frame.text_frame_format.column_count)
        print(test.slides[0].shapes[0].text_frame.text_frame_format.column_spacing)

    format.column_count = 3
    format.column_spacing = 15
    pres.save(path + outPptxFileName, slides.export.SaveFormat.PPTX)

    with slides.Presentation(path + outPptxFileName) as test:
        print(test.slides[0].shapes[0].text_frame.text_frame_format.column_count)
        print(test.slides[0].shapes[0].text_frame.text_frame_format.column_spacing)

Mettre à jour le texte

Aspose.Slides vous permet de changer ou de mettre à jour le texte contenu dans une zone de texte ou tous les textes contenus dans une présentation.

Ce code Python démontre une opération où tous les textes dans une présentation sont mis à jour ou changés :

import aspose.slides as slides

with slides.Presentation("pres.pptx") as pres:
    for slide in pres.slides:
        for shape in slide.shapes:
            if type(shape) is slides.AutoShape:
                for paragraph in shape.text_frame.paragraphs:
                    for portion in paragraph.portions:
                        portion.text = portion.text.replace("years", "months")
                        portion.portion_format.font_bold = 1
  
    # Enregistre la présentation modifiée
    pres.save("text-changed.pptx", slides.export.SaveFormat.PPTX)

Ajouter une zone de texte avec un lien hypertexte

Vous pouvez insérer un lien à l’intérieur d’une zone de texte. Lorsque la zone de texte est cliquée, les utilisateurs sont dirigés pour ouvrir le lien.

Pour ajouter une zone de texte contenant un lien, suivez ces étapes :

  1. Créez une instance de la classe Presentation.
  2. Obtenez une référence pour la première diapositive de la présentation nouvellement créée.
  3. Ajoutez un objet AutoShape avec ShapeType défini comme RECTANGLE à une position spécifiée sur la diapositive et obtenez une référence de l’objet AutoShape nouvellement ajouté.
  4. Ajoutez un text_frame à l’objet AutoShape qui contient Aspose TextBox comme texte par défaut.
  5. Instanciez la classe hyperlink_manager.
  6. Assignez l’objet hyperlink_manager à la propriété HyperlinkClick associée à votre portion préférée du TextFrame.
  7. Enfin, écrivez le fichier PPTX via l’objet Presentation.

Ce code Python — une implémentation des étapes ci-dessus — vous montre comment ajouter une zone de texte avec un lien hypertexte à une diapositive :

import aspose.slides as slides

# Instancie une classe Presentation qui représente un PPTX
with slides.Presentation() as pptxPresentation:
    # Obtient la première diapositive de la présentation
    slide = pptxPresentation.slides[0]

    # Ajoute un objet AutoShape avec le type défini comme Rectangle
    pptxShape = slide.shapes.add_auto_shape(slides.ShapeType.RECTANGLE, 150, 150, 150, 50)

    # Accède à la propriété ITextFrame associée à l'AutoShape
    pptxShape.add_text_frame("")

    textFrame = pptxShape.text_frame

    # Ajoute du texte au cadre
    textFrame.paragraphs[0].portions[0].text = "Aspose.Slides"

    # Définit le lien hypertexte pour le texte de la portion
    hm = textFrame.paragraphs[0].portions[0].portion_format.hyperlink_manager
    hm.set_external_hyperlink_click("http://www.aspose.com")
    # Enregistre la présentation PPTX
    pptxPresentation.save("hLinkPPTX_out.pptx", slides.export.SaveFormat.PPTX)