Redimensionner les formes sur la diapositive

Redimensionner les formes sur la diapositive

L’une des questions les plus fréquentes posées par les clients d’Aspose.Slides pour Python via .NET est comment redimensionner les formes afin que lorsque la taille de la diapositive est modifiée, les données ne soient pas coupées. Cette astuce technique courte montre comment y parvenir.

Pour éviter la désorientation des formes, chaque forme sur la diapositive doit être mise à jour en fonction de la nouvelle taille de la diapositive.

import aspose.slides as slides

#Charger une présentation
with slides.Presentation("pres.pptx") as presentation:
    #Ancienne taille de diapositive
    currentHeight = presentation.slide_size.size.height
    currentWidth = presentation.slide_size.size.width

    #Changement de taille de diapositive
    presentation.slide_size.set_size(slides.SlideSizeType.A4_PAPER, slides.SlideSizeScaleType.DO_NOT_SCALE)

    #Nouvelle taille de diapositive
    newHeight = presentation.slide_size.size.height
    newWidth = presentation.slide_size.size.width

    ratioHeight = newHeight / currentHeight
    ratioWidth = newWidth / currentWidth

    for slide in presentation.slides:
        for shape in slide.shapes:
            #Redimensionner la position
            shape.height = shape.height * ratioHeight
            shape.width = shape.width * ratioWidth

            #Redimensionner la taille de la forme si nécessaire 
            shape.y = shape.y * ratioHeight
            shape.x = shape.x * ratioWidth

    presentation.save("Resize-1.pptx", slides.export.SaveFormat.PPTX)

Vous devez utiliser le code suivant de votre côté si vous devez redimensionner les diapositives avec des tables. Définir la largeur ou la hauteur d’une table est un cas particulier dans les formes où vous devez modifier la hauteur de chaque ligne et la largeur de chaque colonne pour modifier la hauteur et la largeur de la table.

import aspose.slides as slides

with slides.Presentation("pres.pptx") as presentation:
    #Ancienne taille de diapositive
    currentHeight = presentation.slide_size.size.height
    currentWidth = presentation.slide_size.size.width

    #Changement de taille de diapositive
    presentation.slide_size.set_size(slides.SlideSizeType.A4_PAPER, slides.SlideSizeScaleType.DO_NOT_SCALE)

    #Nouvelle taille de diapositive
    newHeight = presentation.slide_size.size.height
    newWidth = presentation.slide_size.size.width

    ratioHeight = newHeight / currentHeight
    ratioWidth = newWidth / currentWidth

    for master in presentation.masters:
        for shape in master.shapes:
            #Redimensionner la position
            shape.height = shape.height * ratioHeight
            shape.width = shape.width * ratioWidth

            #Redimensionner la taille de la forme si nécessaire 
            shape.y = shape.y * ratioHeight
            shape.x = shape.x * ratioWidth

        for layoutslide in master.layout_slides:
            for shape in layoutslide.shapes:
                #Redimensionner la position
                shape.height = shape.height * ratioHeight
                shape.width = shape.width * ratioWidth

                #Redimensionner la taille de la forme si nécessaire 
                shape.y = shape.y * ratioHeight
                shape.x = shape.x * ratioWidth

    for slide in presentation.slides:
        for shape in slide.shapes:
            #Redimensionner la position
            shape.height = shape.height * ratioHeight
            shape.width = shape.width * ratioWidth

            #Redimensionner la taille de la forme si nécessaire 
            shape.y = shape.y * ratioHeight
            shape.x = shape.x * ratioWidth
            if type(shape) is slides.Table:
                for row in shape.rows:
                    row.minimal_height = row.minimal_height * ratioHeight
                for col in shape.columns:
                    col.width = col.width * ratioWidth

    presentation.save("Resize-2.pptx", slides.export.SaveFormat.PPTX)