Android에서 프레젠테이션 슬라이드의 도형 크기 조정
개요
프레젠테이션의 슬라이드 크기를 변경하면 도형의 크기와 위치를 새 치수에 맞게 조정해야 할 수도 있습니다. 이 문서에서는 도형을 수동으로 스케일링하는 방법과 슬라이드, 마스터, 레이아웃의 표를 처리하는 방법을 보여줍니다.
도형 크기 조정
각 도형의 상대적인 위치와 크기를 유지하려면 새 슬라이드 너비와 원래 너비의 비율로 가로 좌표와 너비를 곱합니다. 동일한 비율을 적용하여 세로 좌표와 높이에도 높이 비율을 곱합니다.
첫 번째 예제는 슬라이드에 표가 없는 프레젠테이션을 로드하고, 슬라이드 크기를 A4로 변경한 뒤 결과를 저장합니다. 이 예제는 SlideSize.setSize와 SlideSizeScaleType.DoNotScale를 사용하여 이후 루프에서 스케일링을 제어합니다. 비율은 단위가 없으며, 도형의 위치와 크기는 포인트 단위로 측정됩니다. 폭과 높이 비율이 다르면 도형이 변형될 수 있으며, 도형의 크기를 변경해도 글꼴 크기는 스케일링되지 않습니다.
import com.aspose.slides.*;
Presentation presentation = new Presentation("sample.pptx");
try {
// 독립적인 가로 및 세로 스케일 팩터를 계산합니다.
float originalWidth = (float) presentation.getSlideSize().getSize().getWidth();
float originalHeight = (float) presentation.getSlideSize().getSize().getHeight();
presentation.getSlideSize().setSize(SlideSizeType.A4Paper, SlideSizeScaleType.DoNotScale);
float widthRatio = (float) presentation.getSlideSize().getSize().getWidth() / originalWidth;
float heightRatio = (float) presentation.getSlideSize().getSize().getHeight() / originalHeight;
for (ISlide slide : presentation.getSlides()) {
for (IShape shape : slide.getShapes()) {
shape.setWidth(shape.getWidth() * widthRatio);
shape.setHeight(shape.getHeight() * heightRatio);
shape.setX(shape.getX() * widthRatio);
shape.setY(shape.getY() * heightRatio);
}
}
presentation.save("output.pptx", SaveFormat.Pptx);
}
finally {
presentation.dispose();
}
참고
표는 별도로 처리해야 합니다: 전체 표의 너비와 높이를 지정하는 대신 열 너비와 행 높이를 스케일링합니다. 셀 내용이 더 많은 공간을 필요로 하면 행 높이가 요청한 값보다 크게 유지될 수 있습니다.두 번째 예제는 표를 지원하고, 리사이징된 프레젠테이션을 저장하기 전에 마스터와 레이아웃, 개별 슬라이드의 도형을 처리합니다. 도우미는 각 ITable을 열 너비를 IColumn.setWidth으로, 최소 행 높이를 IRow.setMinimalHeight으로 스케일링하여 처리합니다. 그런 다음 전체 크기를 별도로 스케일링하지 않고 표의 위치만 스케일링합니다.
import com.aspose.slides.*;
class ShapeResizer {
void resizeShapes(IShapeCollection shapes, float widthRatio, float heightRatio) {
for (IShape shape : shapes) {
if (shape instanceof ITable) {
ITable table = (ITable) shape;
// 테이블 크기는 열 너비와 행 높이로 제어됩니다.
for (IColumn column : table.getColumns()) {
column.setWidth(column.getWidth() * widthRatio);
}
for (IRow row : table.getRows()) {
row.setMinimalHeight(row.getMinimalHeight() * heightRatio);
}
}
else {
shape.setWidth(shape.getWidth() * widthRatio);
shape.setHeight(shape.getHeight() * heightRatio);
}
shape.setX(shape.getX() * widthRatio);
shape.setY(shape.getY() * heightRatio);
}
}
}
Presentation presentation = new Presentation("sample.pptx");
try {
// 독립적인 가로 및 세로 스케일 팩터를 계산합니다.
float originalWidth = (float) presentation.getSlideSize().getSize().getWidth();
float originalHeight = (float) presentation.getSlideSize().getSize().getHeight();
presentation.getSlideSize().setSize(SlideSizeType.A4Paper, SlideSizeScaleType.DoNotScale);
float widthRatio = (float) presentation.getSlideSize().getSize().getWidth() / originalWidth;
float heightRatio = (float) presentation.getSlideSize().getSize().getHeight() / originalHeight;
ShapeResizer resizer = new ShapeResizer();
// 마스터와 레이아웃, 개별 슬라이드에 정의된 도형을 크기 조정합니다.
for (IMasterSlide master : presentation.getMasters()) {
resizer.resizeShapes(master.getShapes(), widthRatio, heightRatio);
for (ILayoutSlide layoutSlide : master.getLayoutSlides()) {
resizer.resizeShapes(layoutSlide.getShapes(), widthRatio, heightRatio);
}
}
for (ISlide slide : presentation.getSlides()) {
resizer.resizeShapes(slide.getShapes(), widthRatio, heightRatio);
}
presentation.save("output.pptx", SaveFormat.Pptx);
}
finally {
presentation.dispose();
}
자주 묻는 질문
슬라이드 크기를 조정한 후 도형이 왜 변형되거나 잘려 나오는가?
슬라이드 크기를 스케일링 없이 변경하면 도형은 원래 위치와 크기를 유지하므로 슬라이드 밖으로 넘칠 수 있습니다. 폭과 높이 비율을 다르게 적용하면 도형이 변형될 수도 있습니다.
제공된 코드가 모든 도형 유형에 대해 작동합니까?
첫 번째 예제는 도형 경계를 직접 변경하며 표가 없는 슬라이드를 대상으로 합니다. 두 번째 예제는 표를 별도로 처리합니다. 이 예제들은 글꼴 크기를 스케일링하지 않으므로 텍스트와 표 레이아웃을 확인해야 하며, 표 내용이 행 높이를 제한할 수 있습니다.
슬라이드 크기를 조정할 때 표를 어떻게 리사이즈합니까?
열 너비를 폭 비율로, 최소 행 높이를 높이 비율로 스케일링한 다음 표의 위치를 스케일링합니다. 두 번째 예제에서와 같이 수행하면 됩니다.
마스터 슬라이드와 레이아웃 슬라이드에서도 이 리사이징이 작동합니까?
예. 두 번째 예제는 Presentation.getMasters를 순회하고 각 마스터의 IMasterSlide.getLayoutSlides를 순회하면서 같은 리사이즈 로직을 도형에 적용합니다.
리사이징과 함께 슬라이드 방향(세로/가로)을 변경할 수 있습니까?
예. 슬라이드 크기를 변경한 후, 대상 치수를 읽기 전에 SlideSize.setOrientation을 호출하면 최종 방향을 반영한 스케일 팩터가 적용됩니다.
설정할 수 있는 슬라이드 크기에 제한이 있습니까?
SlideSize.setSize을 사용하여 사용자 정의 슬라이드 치수를 지정할 수 있습니다. 지원되는 치수는 프레젠테이션 형식과 파일을 여는 응용 프로그램에 따라 다릅니다.
고정 종횡비를 가진 도형이 왜곡되는 것을 어떻게 방지할 수 있습니까?
폭과 높이에 같은 스케일 팩터를 사용하십시오. 원래 레이아웃을 새 슬라이드 치수에 맞추려면 폭과 높이 비율 중 작은 값을 두 차원과 위치에 모두 적용하십시오. 이렇게 하면 비율은 유지되지만 한쪽 가장자리에 사용되지 않는 공간이 남을 수 있습니다.