Formen auf Folie neu skalieren

Formen auf Folie neu skalieren

Eine der häufigsten Fragen von Kunden von Aspose.Slides für PHP über Java ist, wie man Formen neu skaliert, sodass die Daten nicht abgeschnitten werden, wenn die Foliengröße geändert wird. Dieser kurze technische Tipp zeigt, wie man das erreicht.

Um eine Desorientierung der Formen zu vermeiden, muss jede Form auf der Folie entsprechend der neuen Foliengröße aktualisiert werden.

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);

Sie müssen den folgenden Code verwenden, wenn Sie die Folien mit Tabellen neu skalieren möchten. Die Einstellung der Tabellenbreite oder -höhe ist ein Spezialfall bei Formen, bei dem Sie die individuelle Zeilenhöhe und Spaltenbreite ändern müssen, um die Tabellenhöhe und -breite zu ändern.

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);