Alakzatok átméretezése prezentációkban Python segítségével
Áttekintés
Az Aspose.Slides for Python ügyfelei leggyakrabban felmerülő kérdése, hogyan lehet átméretezni az alakzatokat úgy, hogy a diák méretének változása esetén az adatok ne vágódjanak le. Ez a rövid technikai cikk bemutatja, hogyan kell ezt megtenni.
Alakzatok átméretezése
Az alakzatok eltolódásának megakadályozása érdekében a diák méretének változása esetén frissíteni kell minden alakzat helyét és méretét, hogy azok megfeleljenek az új diaképre.
import aspose.slides as slides
# Töltse be a prezentáció fájlt.
with slides.Presentation("sample.pptx") as presentation:
# Szerezze meg az eredeti dia méretét.
current_height = presentation.slide_size.size.height
current_width = presentation.slide_size.size.width
# Módosítsa a dia méretét a meglévő alakzatok méretezése nélkül.
presentation.slide_size.set_size(slides.SlideSizeType.A4_PAPER, slides.SlideSizeScaleType.DO_NOT_SCALE)
# Szerezze meg az új dia méretét.
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
# Átméretezze és helyezze át az alakzatokat minden dián.
for slide in presentation.slides:
for shape in slide.shapes:
# Méretezze az alakzat méretét.
shape.height = shape.height * height_ratio
shape.width = shape.width * width_ratio
# Méretezze az alakzat pozícióját.
shape.y = shape.y * height_ratio
shape.x = shape.x * width_ratio
presentation.save("output.pptx", slides.export.SaveFormat.PPTX)
Használja az alábbi kódot a táblázatot tartalmazó diák átméretezéséhez. Táblázatok esetén a szélesség vagy magasság beállítása speciális eset: egyes sorok magasságát és oszlopok szélességét kell módosítani a táblázat teljes méretének megváltoztatásához.
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
# Az eredeti dia méretének lekérése.
current_height = presentation.slide_size.size.height
current_width = presentation.slide_size.size.width
# A dia méretének módosítása a meglévő alakzatok méretezése nélkül.
presentation.slide_size.set_size(slides.SlideSizeType.A4_PAPER, slides.SlideSizeScaleType.DO_NOT_SCALE)
# Az új dia méretének lekérése.
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:
# Az alakzat méretének méretezése.
shape.height = shape.height * height_ratio
shape.width = shape.width * width_ratio
# Az alakzat pozíciójának méretezése.
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:
# Az alakzat méretének méretezése.
shape.height = shape.height * height_ratio
shape.width = shape.width * width_ratio
# Az alakzat pozíciójának méretezése.
shape.y = shape.y * height_ratio
shape.x = shape.x * width_ratio
for slide in presentation.slides:
for shape in slide.shapes:
# Az alakzat méretének méretezése.
shape.height = shape.height * height_ratio
shape.width = shape.width * width_ratio
# Az alakzat pozíciójának méretezése.
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)
GYIK
Miért torzulnak vagy vágódnak le az alakzatok a dia átméretezése után?
Dia átméretezésekor az alakzatok megtartják eredeti pozíciójukat és méretüket, hacsak a méretezés nem kerül kifejezetten módosításra. Ez tartalmak levágódásához vagy alakzatok eltolódásához vezethet.
Működik a megadott kód minden alakzattípusra?
Az alap példa a legtöbb alakzattípusra (szövegdobozok, képek, diagramok stb.) működik. Azonban táblázatok esetén külön kell kezelni a sorokat és oszlopokat, mivel egy táblázat magasságát és szélességét az egyes cellák méretei határozzák meg.
Hogyan méretezhetem át a táblázatokat a dia átméretezésekor?
A táblázat összes sorát és oszlopát végig kell iterálni, és magasságukat, szélességüket arányosan át kell méretezni, ahogyan a második kódrészletben látható.
Működik ez az átméretezés mester- és elrendezési diák esetén is?
Igen, de a Masters és a Layout slides elemein is végig kell iterálni, és ugyanazt a méretezési logikát alkalmazni kell az alakzataikra, hogy a teljes bemutatóban konzisztens legyen.
Módosíthatom a dia tájolását (álló/fekvő) az átméretezés mellett?
Igen. A presentation.slide_size.orientation segítségével megváltoztatható a tájolás. Ügyeljen arra, hogy a méretezési logikát ennek megfelelően állítsa be a elrendezés megőrzéséhez.
Van korlátja annak a diaméretnek, amelyet beállíthatok?
Az Aspose.Slides támogatja az egyedi méreteket, de a nagyon nagy méretek hatással lehetnek a teljesítményre vagy a PowerPoint egyes verzióival való kompatibilitásra.
Hogyan akadályozhatom meg, hogy a rögzített képarányú alakzatok torzuljanak?
A méretezés előtt ellenőrizheti az alakzat aspect_ratio_locked tulajdonságát. Ha zárolt, a szélességet vagy magasságot arányosan kell módosítani, ahelyett, hogy külön-külön méretné a.