이 가이드에서는 Google Slides API를 사용하여 아핀 변환으로 페이지 요소를 크기 조정하고 배치하는 방법을 설명합니다. 아핀 변환에 대한 개념적 소개는 변환 및 페이지 요소 개념 가이드를 참고하세요.
요소 변환
Slides API를 사용하면 페이지에서 요소를 재배치하고 크기를 조절할 수 있습니다. 이렇게 하려면 먼저 적용해야 하는 변환의 종류를 확인한 다음 하나 이상의 UpdatePageElementTransformRequest
요소를 포함하는 presentations.batchUpdate()
메서드를 사용하여 변환을 적용합니다.
변환은 ApplyMode
를 사용하여 실행할 수 있습니다.
ABSOLUTE
는 요소의 기존 변환 행렬을 replace합니다. 변환 업데이트 요청에서 생략한 매개변수는 0으로 설정됩니다.RELATIVE
변환은 요소의 기존 변환 행렬과 곱해집니다 (곱셈 순서가 중요함).
상대 변환은 페이지 요소를 현재 위치에서 이동하거나 크기를 조절합니다. 예를 들어 도형을 왼쪽으로 100포인트 이동하거나 40도 회전합니다. 절대 변환은 기존 위치 및 크기 정보를 삭제합니다. 예를 들어 도형을 페이지 중앙으로 이동하거나 특정 너비로 크기를 조정합니다.
복잡한 변환은 일반적으로 더 간단한 변환의 시퀀스로 표현할 수 있습니다. 변환을 미리 계산하면(행렬 곱셈을 사용하여 여러 변환 결합) 오버헤드를 줄일 수 있는 경우가 많습니다.
일부 작업의 경우 요소의 기존 변환 매개변수를 알아야 합니다. 이러한 값이 없는 경우 presentations.pages.get()
메서드를 사용하여 값을 가져올 수 있습니다.
번역
변환은 페이지 요소를 동일한 페이지의 새 위치로 이동하는 작업입니다. 절대 변환은 요소를 특정 지점으로 이동하고 상대 변환은 요소를 특정 거리만큼 이동합니다.
기본 변환 변환 행렬은 다음과 같은 형태를 갖습니다.
UpdatePageElementTransformRequest
를 사용하여 요소의 크기, 기울기 또는 방향을 변경하지 않고 요소를 변환하는 경우 다음 AffineTransform 구조 중 하나를 사용할 수 있습니다.
// Absolute translation: { 'transform': { 'scaleX': current scaleX value, 'scaleY': current scaleY value, 'shearX': current shearX value, 'shearY': current shearY value, 'translateX': X coordinate to move to, 'translateY': Y coordinate to move to, 'unit': 'EMU' // or 'PT' } } // Relative translation (scaling must also be provided to avoid a matrix multiplication error): { 'transform': { 'scaleX': 1, 'scaleY': 1, 'translateX': X coordinate to move by, 'translateY': Y coordinate to move by, 'unit': 'EMU' // or 'PT' } }
확장
크기 조정은 X 또는 Y 차원을 따라 요소를 늘리거나 압축하여 크기를 변경하는 작업입니다. 기본 스케일링 변환 행렬의 형식은 다음과 같습니다.
이 행렬 형식을 RELATIVE
변환으로 직접 사용하여 요소를 크기 조절할 수 있지만 요소의 렌더링된 전단 및 변환에도 영향을 줄 수 있습니다.
전단이나 변환에 영향을 주지 않고 요소를 스케일링하려면 요소 참조 프레임으로 전환하세요.
회전
회전 변환은 크기 조절 및 기울이기 매개변수를 사용하여 점을 중심으로 페이지 요소를 회전합니다. 기본 회전 변환 행렬은 다음 형식을 갖습니다. 여기서 회전 각도 (라디안)는 X축에서 시계 반대 방향으로 측정됩니다.
확장과 마찬가지로 이 행렬 형식을 RELATIVE
변환으로 직접 사용하여 요소를 회전할 수 있지만 이렇게 하면 요소가 페이지의 원점을 기준으로 회전합니다. 중심 또는 다른 점을 기준으로 요소를 회전하려면 해당 요소 참조 프레임으로 전환합니다.
복습
반사는 특정 선이나 축을 기준으로 요소를 미러링합니다. 기본 x축 및 y축 반사 변환 행렬의 형식은 다음과 같습니다.
크기 조절과 마찬가지로 이 행렬 형식을 RELATIVE
변환으로 직접 사용하여 요소를 반영할 수 있지만 이렇게 하면 요소도 변환됩니다. 번역 없이 요소를 반영하려면 요소 참조 프레임으로 전환하세요.
요소 참조 프레임
기본 크기 조절, 회전 또는 반사 변환을 페이지 요소에 직접 적용하면 페이지의 참조 프레임에서 변환이 생성됩니다. 예를 들어 기본 회전은 페이지의 원점 (왼쪽 상단 모서리)을 중심으로 요소를 회전합니다. 하지만 요소의 참조 프레임에서 작동할 수 있습니다(예: 요소의 중심점을 기준으로 요소를 회전).
자체 참조 프레임 내에서 요소를 변환하려면 요소의 중심을 페이지 원점으로 이동하는 선행 변환 T1
과 요소를 원래 위치로 다시 이동하는 후행 변환 T2
사이에 요소를 묶습니다. 전체 작업은 행렬 곱으로 표현할 수 있습니다.
다른 점을 원점으로 변환하여 다른 참조 프레임으로 전환할 수도 있습니다. 이러한 점은 새 참조 프레임의 중심이 됩니다.
이러한 각 변환은 순차적인 RELATIVE
변환 요청으로 개별적으로 실행할 수 있습니다. 이상적으로는 위의 A'
을 행렬 곱셈으로 사전 계산하고 결과를 단일 ABSOLUTE
변환으로 적용해야 합니다. 또는 T2 * B * T1
제품을 미리 계산하고 단일 RELATIVE
변환으로 적용합니다. 이 두 가지 방법은 변환 요청을 개별적으로 전송하는 것보다 API 작업 측면에서 더 효율적입니다.
제한사항
일부 크기 조정 및 위치 지정 필드는 일부 유형의 페이지 요소와 호환되지 않습니다. 다음 표에는 특정 페이지 요소와 크기 조정 및 위치 지정 필드의 호환성이 요약되어 있습니다.
필드 | 도형 | 동영상 | 표 |
---|---|---|---|
번역 | ✔ | ✔ | ✔ |
확장 | ✔ | ✔ | 아니요** |
전단 | ✔ | 아니요 | 아니요 |
표 행 및 열 크기를 업데이트하려면 UpdateTableRowPropertiesRequest
및 UpdateTableColumnPropertiesRequest
를 사용합니다.
페이지 요소에 전단이 있는 경우 모든 크기 조정 및 위치 지정 필드에서 예기치 않은 결과가 발생할 수 있습니다. 모든 제한사항은 변경될 수 있습니다. 최신 정보는 Google Slides API를 참고하세요.
리팩터링된 값
페이지 요소를 만들 때 특정 시각적 결과를 제공하는 크기와 변환을 지정할 수 있습니다. 하지만 Slides API는 제공된 값을 동일한 시각적 모양을 생성하는 다른 값으로 대체할 수 있습니다. 일반적으로 API를 사용하여 크기를 작성하면 동일한 크기가 반환된다고 보장할 수 없습니다. 하지만 변환을 고려하면 동일한 결과를 얻을 수 있습니다.