スライド上の図形のサイズ変更

スライド上の図形のサイズ変更

Aspose.Slides for Python via .NET の顧客からの最も頻繁に寄せられる質問の一つは、スライドのサイズが変更されたときにデータが切り取られないように図形のサイズをどのように変更するかということです。この短い技術的ヒントでは、その方法を示します。

図形の位置ズレを避けるために、スライド上の各図形は新しいスライドサイズに応じて更新する必要があります。

import aspose.slides as slides

#プレゼンテーションを読み込む
with slides.Presentation("pres.pptx") as presentation:
    #古いスライドサイズ
    currentHeight = presentation.slide_size.size.height
    currentWidth = presentation.slide_size.size.width

    #スライドサイズを変更する
    presentation.slide_size.set_size(slides.SlideSizeType.A4_PAPER, slides.SlideSizeScaleType.DO_NOT_SCALE)

    #新しいスライドサイズ
    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:
            #位置をサイズ変更する
            shape.height = shape.height * ratioHeight
            shape.width = shape.width * ratioWidth

            #必要に応じて図形のサイズを変更する 
            shape.y = shape.y * ratioHeight
            shape.x = shape.x * ratioWidth

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

テーブル付きのスライドをリサイズする必要がある場合は、以下のコードを使用する必要があります。テーブルの幅や高さを設定することは、個々の行の高さと列の幅を変更してテーブルの高さと幅を変更する必要がある特別なケースです。

import aspose.slides as slides

with slides.Presentation("pres.pptx") as presentation:
    #古いスライドサイズ
    currentHeight = presentation.slide_size.size.height
    currentWidth = presentation.slide_size.size.width

    #スライドサイズを変更する
    presentation.slide_size.set_size(slides.SlideSizeType.A4_PAPER, slides.SlideSizeScaleType.DO_NOT_SCALE)

    #新しいスライドサイズ
    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:
            #位置をサイズ変更する
            shape.height = shape.height * ratioHeight
            shape.width = shape.width * ratioWidth

            #必要に応じて図形のサイズを変更する 
            shape.y = shape.y * ratioHeight
            shape.x = shape.x * ratioWidth

        for layoutslide in master.layout_slides:
            for shape in layoutslide.shapes:
                #位置をサイズ変更する
                shape.height = shape.height * ratioHeight
                shape.width = shape.width * ratioWidth

                #必要に応じて図形のサイズを変更する 
                shape.y = shape.y * ratioHeight
                shape.x = shape.x * ratioWidth

    for slide in presentation.slides:
        for shape in slide.shapes:
            #位置をサイズ変更する
            shape.height = shape.height * ratioHeight
            shape.width = shape.width * ratioWidth

            #必要に応じて図形のサイズを変更する 
            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)