Sunum Slaytlarında Şekilleri Yeniden Boyutlandırma (Python)

Genel Bakış

Bir sunumun slayt boyutunu değiştirdiğinizde, şekillerini yeni boyutlara sığdırmak için yeniden boyutlandırmanız ve konumlarını yeniden ayarlamanız da gerekebilir. Bu makale şekilleri manuel olarak nasıl ölçeklendireceğinizi ve slaytlarda, ana slaytlarda ve düzenlerdeki tabloları nasıl ele alacağınızı gösterir.

Şekilleri Yeniden Boyutlandır

Her şeklin göreceli konumunu ve boyutunu korumak için, yatay koordinatlarını ve genişliğini yeni slayt genişliğinin orijinal genişliğe oranı ile çarpın. Aynı şekilde, dikey koordinatlarını ve yüksekliğini ilgili yükseklik oranı ile uygulayın.

İlk örnek, slaytlarında tablo bulunmayan bir sunumu yükler, slayt boyutunu A4 olarak değiştirir ve sonucu kaydeder. Ölçeklemeyi sonraki döngünün kontrol etmesi için SlideSize.set_size ile SlideSizeScaleType.DO_NOT_SCALE kullanır. Oranlar birimsizdir; şekil konumları ve boyutları puan cinsinden ölçülür. Farklı genişlik ve yükseklik oranları şekilleri bozabilir ve bir şeklin boyutlarını değiştirmek yazı tipi boyutlarını ölçeklendirmez.

import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    # Yatay ve dikey bağımsız ölçek faktörlerini hesapla.
    original_size = presentation.slide_size.size
    presentation.slide_size.set_size(slides.SlideSizeType.A4_PAPER, slides.SlideSizeScaleType.DO_NOT_SCALE)
    target_size = presentation.slide_size.size
    width_ratio = target_size.width / original_size.width
    height_ratio = target_size.height / original_size.height

    for slide in presentation.slides:
        for shape in slide.shapes:
            shape.width *= width_ratio
            shape.height *= height_ratio
            shape.x *= width_ratio
            shape.y *= height_ratio

    presentation.save("output.pptx", slides.export.SaveFormat.PPTX)

İkinci örnek tabloları destekler ve yeniden boyutlandırılmış sunumu kaydetmeden önce ana slaytlarda, düzenlerde ve tek tek slaytlarda şekilleri işler. Yardımcısı, her Table öğesini Column.width ve Row.minimal_height ölçeklendirerek ele alır. Ardından tablonun konumunu, genel boyutlarını ayrı ayrı ölçeklendirmeden ölçeklendirir.

import aspose.slides as slides


def resize_shapes(shapes, width_ratio, height_ratio):
    for shape in shapes:
        if isinstance(shape, slides.Table):
            # Tablo boyutları sütun genişlikleri ve satır yüksekliğiyle kontrol edilir.
            for column in shape.columns:
                column.width *= width_ratio

            for row in shape.rows:
                row.minimal_height *= height_ratio
        else:
            shape.width *= width_ratio
            shape.height *= height_ratio

        shape.x *= width_ratio
        shape.y *= height_ratio


with slides.Presentation("sample.pptx") as presentation:
    # Yatay ve dikey bağımsız ölçek faktörlerini hesapla.
    original_size = presentation.slide_size.size
    presentation.slide_size.set_size(slides.SlideSizeType.A4_PAPER, slides.SlideSizeScaleType.DO_NOT_SCALE)
    target_size = presentation.slide_size.size
    width_ratio = target_size.width / original_size.width
    height_ratio = target_size.height / original_size.height

    # Ana slaytlarda ve düzenlerde tanımlı şekilleri ayrıca tekli slaytlarda da yeniden boyutlandır.
    for master in presentation.masters:
        resize_shapes(master.shapes, width_ratio, height_ratio)

        for layout_slide in master.layout_slides:
            resize_shapes(layout_slide.shapes, width_ratio, height_ratio)

    for slide in presentation.slides:
        resize_shapes(slide.shapes, width_ratio, height_ratio)

    presentation.save("output.pptx", slides.export.SaveFormat.PPTX)

SSS

Şekiller slayt yeniden boyutlandırıldıktan sonra neden bozulur veya kesilir?

Şekilleri ölçeklendirmeden slayt boyutunu değiştirirseniz, şekiller orijinal konum ve boyutlarını korur ve slayt dışına taşabilir. Genişlik ve yüksekliği farklı oranlarla ölçeklendirmek de şekilleri bozabilir.

Sağlanan kod tüm şekil tipleri için çalışır mı?

İlk örnek şeklin sınırlarını doğrudan değiştirir ve tabloları olmayan slaytlar için tasarlanmıştır. İkinci örnek tabloları ayrı olarak işler. Sonuçta oluşan yerleşimi, özellikle metin ve tabloları kontrol edin; çünkü bu örnekler yazı tipi boyutlarını ölçeklendirmez ve tablo içeriği satır yüksekliklerini sınırlayabilir.

Bir slaytı yeniden boyutlandırırken tabloları nasıl yeniden boyutlandırırım?

Sütun genişliklerini genişlik oranı ile, minimum satır yüksekliklerini ise yükseklik oranı ile ölçeklendirin, ardından ikinci örnekte gösterildiği gibi tablonun konumunu ölçeklendirin.

Bu yeniden boyutlandırma ana slaytlar ve düzen slaytları için çalışır mı?

Evet. İkinci örnek Presentation.masters ve her bir ana slaydın MasterSlide.layout_slides üzerinden iterasyon yapar ve şekillerine aynı yeniden boyutlandırma mantığını uygular.

Yeniden boyutlandırma ile birlikte bir slaytın yönünü (dikey/yatay) değiştirebilir miyim?

Evet. Slayt boyutunu değiştirdikten ve hedef boyutları okumadan önce SlideSize.orientation ayarlayın, böylece ölçek faktörleri son yönelimi yansıtır.

Ayarlayabileceğim slayt boyutu için bir limit var mı?

SlideSize.set_size ile özel slayt boyutları belirtebilirsiniz. Desteklenen boyutlar, sunum formatına ve dosyayı açmak için kullanılan uygulamaya da bağlıdır.

Sabit en‑boy oranına sahip şekillerin bozulmasını nasıl önleyebilirim?

Geniçlik ve yükseklik için aynı ölçek faktörünü kullanın. Orijinal yerleşimi yeni slayt boyutlarına sığdırmak için hem genişlik hem de yükseklik oranlarından daha küçüğünü kullanın. Bu, oranları korur ancak bir kenarda kullanılmayan boşluk kalabilir.