Python ile Sunumlarda Şekilleri Yeniden Boyutlandırma
Genel Bakış
Aspose.Slides for Python müşterilerinin en sık sorduğu sorulardan biri, slayt boyutu değiştiğinde verilerin kesilmemesi için şekillerin nasıl yeniden boyutlandırılacağıdır. Bu kısa teknik makale, bunu nasıl yapacağınızı gösterir.
Şekilleri Yeniden Boyutlandırma
Slayt boyutu değiştiğinde şekillerin hizalanmasını korumak için, her şeklin konumunu ve boyutlarını yeni slayt düzenine göre güncelleyin.
import aspose.slides as slides
# Sunum dosyasını yükle.
with slides.Presentation("sample.pptx") as presentation:
# Orijinal slayt boyutunu al.
current_height = presentation.slide_size.size.height
current_width = presentation.slide_size.size.width
# Mevcut şekilleri ölçeklendirmeden slayt boyutunu değiştir.
presentation.slide_size.set_size(slides.SlideSizeType.A4_PAPER, slides.SlideSizeScaleType.DO_NOT_SCALE)
# Yeni slayt boyutunu al.
new_height = presentation.slide_size.size.height
new_width = presentation.slide_size.size.width
height_ratio = new_height / current_height
width_ratio = new_width / current_width
# Her slaytta şekilleri yeniden boyutlandır ve konumlandır.
for slide in presentation.slides:
for shape in slide.shapes:
# Şekil boyutunu ölçeklendir.
shape.height = shape.height * height_ratio
shape.width = shape.width * width_ratio
# Şekil konumunu ölçeklendir.
shape.y = shape.y * height_ratio
shape.x = shape.x * width_ratio
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Tablo içeren slaytları yeniden boyutlandırmak için aşağıdaki kodu kullanın. Tablolar için genişlik veya yükseklik ayarlamak özel bir durumdur: tablonun genel boyutunu değiştirmek için bireysel satır yüksekliği ve sütun genişliğini ayarlamanız gerekir.
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
# Orijinal slayt boyutunu al.
current_height = presentation.slide_size.size.height
current_width = presentation.slide_size.size.width
# Mevcut şekilleri ölçeklendirmeden slayt boyutunu değiştir.
presentation.slide_size.set_size(slides.SlideSizeType.A4_PAPER, slides.SlideSizeScaleType.DO_NOT_SCALE)
# Yeni slayt boyutunu al.
new_height = presentation.slide_size.size.height
new_width = presentation.slide_size.size.width
height_ratio = new_height / current_height
width_ratio = new_width / current_width
for master in presentation.masters:
for shape in master.shapes:
# Şekil boyutunu ölçeklendir.
shape.height = shape.height * height_ratio
shape.width = shape.width * width_ratio
# Şekil konumunu ölçeklendir.
shape.y = shape.y * height_ratio
shape.x = shape.x * width_ratio
for layout_slide in master.layout_slides:
for shape in layout_slide.shapes:
# Şekil boyutunu ölçeklendir.
shape.height = shape.height * height_ratio
shape.width = shape.width * width_ratio
# Şekil konumunu ölçeklendir.
shape.y = shape.y * height_ratio
shape.x = shape.x * width_ratio
for slide in presentation.slides:
for shape in slide.shapes:
# Şekil boyutunu ölçeklendir.
shape.height = shape.height * height_ratio
shape.width = shape.width * width_ratio
# Şekil konumunu ölçeklendir.
shape.y = shape.y * height_ratio
shape.x = shape.x * width_ratio
if type(shape) is slides.Table:
for row in shape.rows:
row.minimal_height = row.minimal_height * height_ratio
for column in shape.columns:
column.width = column.width * width_ratio
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
SSS
Kaydırma yeniden boyutlandırıldıktan sonra şekiller neden bozuluyor veya kesiliyor?
Kaydırma yeniden boyutlandırıldığında, şekiller ölçek açıkça değiştirildiği sürece orijinal konum ve boyutlarını korur. Bu, içeriğin kırpılmasına veya şekillerin hizalanmamasına neden olabilir.
Sağlanan kod tüm şekil tipleri için çalışıyor mu?
Temel örnek, metin kutuları, görüntüler, grafikler vb. çoğu şekil tipi için çalışır. Ancak tablolar için satır ve sütunları ayrı ayrı ele almanız gerekir; çünkü bir tablonun yüksekliği ve genişliği ayrı hücrelerin boyutlarıyla belirlenir.
Kaydırma yeniden boyutlandırıldığında tabloları nasıl yeniden boyutlandırırım?
Tablonun tüm satır ve sütunları üzerinden döngü kurarak, ikinci kod örneğinde gösterildiği gibi yükseklik ve genişliklerini orantılı olarak yeniden boyutlandırmalısınız.
Bu yeniden boyutlandırma ana slaytlar ve düzen slaytları için işe yarar mı?
Evet, aynı ölçekleme mantığını uygulamak için Ustalar ve Düzen slaytları üzerinden de döngü kurmalı ve şekillerine aynı mantığı uygulamalısınız.
Kaydırmayı yeniden boyutlandırırken slaytın yönünü (dikey/yatay) değiştirebilir miyim?
Evet. Yönü değiştirmek için presentation.slide_size.orientation özelliğini kullanabilirsiniz. Yerleşimi korumak için ölçekleme mantığını buna göre ayarladığınızdan emin olun.
Ayarlayabileceğim slayt boyutu için bir limit var mı?
Aspose.Slides özelleştirilmiş boyutları destekler, ancak çok büyük boyutlar performansı etkileyebilir veya bazı PowerPoint sürümleriyle uyumluluk sorunları yaratabilir.
Sabit en-boy oranına sahip şekillerin bozulmasını nasıl önleyebilirim?
Şeklin aspect_ratio_locked özelliğini ölçeklemeden önce kontrol edebilirsiniz. Eğer kilitli ise, genişlik veya yüksekliği bireysel olarak ölçeklemek yerine orantılı olarak ayarlayın.