Redimensionnement des formes sur une diapositive

Redimensionnement des formes sur une diapositive

Une des questions les plus fréquentes posées par les clients d’Aspose.Slides pour PHP via Java est comment redimensionner les formes afin que lorsque la taille de la diapositive change, les données ne soient pas coupées. Ce bref conseil technique montre comment y parvenir.

Pour éviter la désorientation des formes, chaque forme sur la diapositive doit être mise à jour en fonction de la nouvelle taille de la diapositive.

Presentation presentation = new Presentation("D:\\TestResize.ppt");
//Old slide size
float currentHeight = (float)presentation.getSlideSize().getSize().getHeight();
float currentWidth =(float)presentation.getSlideSize().getSize().getWidth();
//Changing slide size
presentation.getSlideSize().setType(SlideSizeType.A4Paper);
//New slide size
float newHeight = (float)presentation.getSlideSize().getSize().getHeight();
float newWidth = (float)presentation.getSlideSize().getSize().getWidth();
float ratioHeight = newHeight / currentHeight;
float ratioWidth = newWidth / currentWidth;
for (ISlide slide : presentation.getSlides())
{
for (IShape shape : slide.getShapes())
{
//Resize position
shape.setHeight(shape.getHeight() * ratioHeight);
shape.setWidth(shape.getWidth() * ratioWidth);
//Resize shape size if required
shape.setY(shape.getY() * ratioHeight);
shape.setX(shape.getX() * ratioWidth);
}
}
presentation.save("Test.pptx",SaveFormat.Pptx);

Vous devez utiliser le code suivant de votre côté si vous devez redimensionner les diapositives avec des tables. Définir la largeur ou la hauteur de la table est un cas particulier dans les formes où vous devez modifier la hauteur des lignes individuelles et la largeur des colonnes pour modifier la hauteur et la largeur de la table.

Presentation presentation = new Presentation("D:\\Test.pptx");
//Old slide size
float currentHeight = (float) presentation.getSlideSize().getSize().getHeight();
float currentWidth = (float) presentation.getSlideSize().getSize().getWidth();
//Changing slide size
presentation.getSlideSize().setType(SlideSizeType.A4Paper);
//presentation.SlideSize.Orientation = SlideOrienation.Portrait;
//New slide size
float newHeight = (float) presentation.getSlideSize().getSize().getHeight();
float newWidth = (float) presentation.getSlideSize().getSize().getWidth();
float ratioHeight = newHeight / currentHeight;
float ratioWidth = newWidth / currentWidth;
for (IMasterSlide master : presentation.getMasters())
{
for (IShape shape : master.getShapes())
{
//Resize position
shape.setHeight(shape.getHeight() * ratioHeight);
shape.setWidth(shape.getWidth() * ratioWidth);
//Resize shape size if required
shape.setY(shape.getY() * ratioHeight);
shape.setX(shape.getX() * ratioWidth);
}
for (ILayoutSlide layoutslide : master.getLayoutSlides())
{
for (IShape shape : layoutslide.getShapes())
{
//Resize position
shape.setHeight(shape.getHeight() * ratioHeight);
shape.setWidth(shape.getWidth() * ratioWidth);
//Resize shape size if required
shape.setY(shape.getY() * ratioHeight);
shape.setX(shape.getX() * ratioWidth);
}
}
}
for (ISlide slide : presentation.getSlides())
{
for (IShape shape : slide.getShapes())
{
//Resize position
shape.setHeight(shape.getHeight() * ratioHeight);
shape.setWidth(shape.getWidth() * ratioWidth);
//Resize shape size if required
shape.setY(shape.getY() * ratioHeight);
shape.setX(shape.getX() * ratioWidth);
if (shape instanceof ITable)
{
ITable table = (ITable)shape;
IRow row=null;
for(int i=0;i<table.getRows().size();i++)
{
row=table.getRows().get_Item(i);
row.setMinimalHeight(row.getMinimalHeight() * ratioHeight);
}
IColumn col;
for (int j=0;j<table.getColumns().size();j++)
{
col=table.getColumns().get_Item(j);
col.setWidth(col.getWidth() * ratioWidth);
}
}
}
}
presentation.save("D:\\Test.pptx", SaveFormat.Pptx);