Ridimensiona le forme nelle presentazioni con Python
Panoramica
Una delle domande più comuni dei clienti di Aspose.Slides per Python è come ridimensionare le forme in modo che, quando le dimensioni della diapositiva cambiano, i dati non vengano ritagliati. Questo breve articolo tecnico mostra come farlo.
Ridimensiona le forme
Per evitare che le forme si disallineino quando le dimensioni della diapositiva cambiano, aggiorna la posizione e le dimensioni di ciascuna forma affinché si conformino al nuovo layout della diapositiva.
import aspose.slides as slides
# Carica il file di presentazione.
with slides.Presentation("sample.pptx") as presentation:
# Ottieni le dimensioni originali della diapositiva.
current_height = presentation.slide_size.size.height
current_width = presentation.slide_size.size.width
# Modifica le dimensioni della diapositiva senza ridimensionare le forme esistenti.
presentation.slide_size.set_size(slides.SlideSizeType.A4_PAPER, slides.SlideSizeScaleType.DO_NOT_SCALE)
# Ottieni le nuove dimensioni della diapositiva.
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
# Ridimensiona e riposiziona le forme su ogni diapositiva.
for slide in presentation.slides:
for shape in slide.shapes:
# Scala le dimensioni della forma.
shape.height = shape.height * height_ratio
shape.width = shape.width * width_ratio
# Scala la posizione della forma.
shape.y = shape.y * height_ratio
shape.x = shape.x * width_ratio
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Utilizza il codice seguente per ridimensionare le diapositive che contengono tabelle. Per le tabelle, impostare la larghezza o l’altezza è un caso speciale: è necessario regolare le altezze delle righe e le larghezze delle colonne singolarmente per modificare la dimensione complessiva della tabella.
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
# Ottieni le dimensioni originali della diapositiva.
current_height = presentation.slide_size.size.height
current_width = presentation.slide_size.size.width
# Modifica le dimensioni della diapositiva senza ridimensionare le forme esistenti.
presentation.slide_size.set_size(slides.SlideSizeType.A4_PAPER, slides.SlideSizeScaleType.DO_NOT_SCALE)
# Ottieni le nuove dimensioni della diapositiva.
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:
# Scala le dimensioni della forma.
shape.height = shape.height * height_ratio
shape.width = shape.width * width_ratio
# Scala la posizione della forma.
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:
# Scala le dimensioni della forma.
shape.height = shape.height * height_ratio
shape.width = shape.width * width_ratio
# Scala la posizione della forma.
shape.y = shape.y * height_ratio
shape.x = shape.x * width_ratio
for slide in presentation.slides:
for shape in slide.shapes:
# Scala le dimensioni della forma.
shape.height = shape.height * height_ratio
shape.width = shape.width * width_ratio
# Scala la posizione della forma.
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)
FAQ
Perché le forme sono distorte o ritagliate dopo il ridimensionamento di una diapositiva?
Quando si ridimensiona una diapositiva, le forme mantengono la loro posizione e dimensione originali a meno che la scala non venga modificata esplicitamente. Ciò può provocare il ritaglio del contenuto o il disallineamento delle forme.
Il codice fornito funziona per tutti i tipi di forma?
L’esempio di base funziona per la maggior parte dei tipi di forma (caselle di testo, immagini, grafici, ecc.). Tuttavia, per le tabelle è necessario gestire riga e colonna separatamente, poiché l’altezza e la larghezza di una tabella sono determinate dalle dimensioni delle singole celle.
Come ridimensionare le tabelle quando si ridimensiona una diapositiva?
È necessario iterare tutte le righe e le colonne della tabella e ridimensionare la loro altezza e larghezza in proporzione, come mostrato nel secondo esempio di codice.
Questo ridimensionamento funziona per le diapositive master e le diapositive layout?
Sì, ma dovresti anche iterare le Masters e le Layout slides e applicare la stessa logica di scala alle loro forme per garantire la coerenza nella presentazione.
Posso cambiare l’orientamento di una diapositiva (ritratto/orizzontale) insieme al ridimensionamento?
Sì. Puoi utilizzare presentation.slide_size.orientation per cambiare l’orientamento. Assicurati di impostare la logica di scala di conseguenza per preservare il layout.
Esiste un limite alle dimensioni della diapositiva che posso impostare?
Aspose.Slides supporta dimensioni personalizzate, ma dimensioni molto grandi possono influire sulle prestazioni o sulla compatibilità con alcune versioni di PowerPoint.
Come posso impedire che le forme a rapporto d’aspetto fisso vengano distorte?
Puoi verificare la proprietà aspect_ratio_locked della forma prima di ridimensionare. Se è bloccata, regola la larghezza o l’altezza proporzionalmente invece di scalarle singolarmente.