변환 작업

Google Slides API를 사용하면 슬라이드의 위치, 크기, 방향을 PageElement 드림 (텍스트 상자, 이미지, 표, 기본 도형)를 페이지에 추가하고 직선과 보존되는 점과 평행선을 사용합니다. 이를 아핀이라고 하며 변환을 참조하세요. 이 예에서는 일반적인 페이지 요소 변환을 보여줍니다. 인코더-디코더 아키텍처를 presentations.batchUpdate 드림 메서드를 사용하여 축소하도록 요청합니다.

이 예에서는 다음 변수를 사용합니다.

  • PRESENTATION_ID: 프레젠테이션 ID를 입력합니다. 다음과 같은 작업을 할 수 있습니다. 이 ID에 대한 값을 검색합니다.
  • PAGE_ID: 페이지 객체를 제공하는 위치를 나타냅니다. ID를 입력합니다. 다음을 가져올 수 있습니다. 이 값에 대한 값을 URL에서 가져오거나 API 읽기 요청을 사용하여 가져올 수 있습니다.
  • PAGE_ELEMENT_ID: 페이지를 제공하는 위치를 나타냅니다. 요소 객체 ID를 포함해야 합니다. 나 만든 요소에 대해 이 ID를 지정할 수 있습니다 (일부 제한사항) Slides API에서 자동으로 만들도록 허용할 수 있습니다. 요소 ID API 읽기 요청을 통해 가져올 수 있습니다.

이 예는 언어 중립을 위해 HTTP 요청으로 제공됩니다. 배우기 위해 Google API를 사용하여 다양한 언어로 일괄 업데이트를 구현하는 방법 자세한 내용은 도형 추가 및 텍스트를 입력합니다.

화살표 도형 예

아래 예에서는 화살표 도형 페이지 예가 있다고 가정합니다. 요소의 전체 크기 및 변환 데이터( presentations.pages.get 드림 메서드 요청에서). 예시 도형은 unit EMU (영어 미터법 단위) 및 pt (점).

{
  "objectId": PAGE_ELEMENT_ID,
  "size": {
    "width": {
      "magnitude": 3000000,
      "unit": "EMU"
    },
    "height": {
      "magnitude": 3000000,
      "unit": "EMU"
    }
  },
  "transform": {
    "scaleX": 0.3,
    "scaleY": 0.12,
    "shearX": 0,
    "shearY": 0,
    "translateX": 2000000,
    "translateY":  550000,
    "unit": "EMU"
  },
  "shape": {
    "shapeType": "RIGHT_ARROW"
  }
}

요소를 다른 요소와 정렬

다음 presentations.batchUpdate 드림 코드 샘플을 사용하여 CreateShapeRequest 메서드를 사용하여 도형의 도형에 정렬된 올바른 위치에 새 도형을 만듭니다. 예시 화살표 모양을 클릭합니다. 두 경우 모두 X와 Y는 새 도형 왼쪽 상단 모서리의 좌표를 계산해야 합니다.

첫 번째 요청은 왼쪽으로 정렬된 100x50포인트 직사각형을 만듭니다. 50pt (50 * 12,700 = 635,000 EMU)에 배치되어 있습니다. 을 클릭합니다. 새 직사각형의 X 좌표는 왼쪽 테두리의 정렬 상태를 유지하기 위해 화살표의 X 좌표와 동일합니다. Y 좌표는 화살표의 Y 좌표에 50pt를 더한 것과 같습니다. 거리는 화살표 상단부터 측정됩니다. 직사각형의 좌표는 다음과 같습니다.

x" = 2000000 EMU
y" = 550000 + (50 * 12700) = 1185000 EMU

두 번째 요청은 가로와 세로가 동일한 40포인트 너비의 원을 만듭니다. 중앙선에 적힌 화살표가 사용되지만 화살표의 오른쪽 가장자리 오른쪽에 있습니다. 원의 X 좌표는 화살표 너비 및 100포인트를 설정할 수 있습니다. 중심선 적용 새 원에 대한 정렬을 위해서는 선의 높이를 고려해야 하며 화살표와 동그라미입니다. 원의 Y 좌표는 화살표의 Y 좌표입니다. 화살표 높이의 절반에서 원 높이의 절반을 뺀 값입니다. 두 경우 모두 화살표와 관련된 배율도 고려해야 합니다. 이는 화살표의 렌더링된 너비와 높이에 영향을 주기 때문입니다. 원의 좌표는 다음과 같습니다.

x = 2000000 + (0.3 * 3000000) + (100 * 12700) = 4170000 EMU
y = 550000 + (0.5 * 0.12 * 3000000) - (0.5 * 40 * 12700) = 476000 EMU

다음은 요소를 다른 요소와 정렬하는 요청 프로토콜입니다.

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "createShape": {
        "shapeType": "RECTANGLE",
        "elementProperties": {
          "pageObjectId": PAGE_ID,
          "size": {
            "width": {
              "magnitude": 100,
              "unit": "PT"
            },
            "height": {
              "magnitude": 50,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 2000000,
            "translateY": 1185000,
            "unit": "EMU"
          }
        }
      }
    },
    {
      "createShape": {
        "shapeType": "ELLIPSE",
        "elementProperties": {
          "pageObjectId": PAGE_ID,
          "size": {
            "width": {
              "magnitude": 40,
              "unit": "PT"
            },
            "height": {
              "magnitude": 40,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 4170000,
            "translateY":  476000,
            "unit": "EMU"
          }
        }
      }
    }
  ]
}

요소 이동

다음 presentations.batchUpdate 드림 코드 샘플을 사용하여 UpdatePageElementTransformRequest 예시 화살표 도형 페이지 요소를 두 가지 다른 방법입니다

일괄 처리의 첫 번째 요청은 화살표를 (X,Y) = (2000000, 150000)으로 이동합니다. EMU 좌표 (절대 변환 사용 applyMode)을 클릭합니다. 일괄 처리의 두 번째 요청은 화살표를 그곳에서 이동합니다. 이번에는 40,000EMU입니다. 위로 35,000 EMU (상대 변환 applyMode 사용) 이때 사용한 transformation1 행렬은 요소의 크기와 방향이 변경되지 않도록 구성됩니다.

두 요청을 모두 실행한 후 화살표의 왼쪽 상단 모서리는 (X, Y)에 위치합니다. = (2040000, 115000) EMU 좌표입니다.

다음은 요소를 이동하는 요청 프로토콜입니다.

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "ABSOLUTE",
        "transform": {
            "scaleX": 0.3,
            "scaleY": 0.12,
            "translateX": 2000000,
            "translateY":  150000,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX":  40000,
            "translateY": -35000,
            "unit": "EMU"
        }
      }
    }
  ]
}

요소 반영

다음 presentations.batchUpdate 드림 코드 샘플을 사용하여 UpdatePageElementTransformRequest 예시 화살표 도형 페이지 요소를 반영하는 메서드 페이지 내 위치를 변경하거나 가운데를 확장할 수 있습니다

이 작업은 기본 반사 변환(요소의 참조) 프레임을 지정합니다. 명확하게 하기 위해 참조 프레임 이동 및 반사는 세 가지 개별 호출로 UpdatePageElementTransformRequest 메서드 이러한 변환의 곱을 미리 계산하는 것이 더 효율적입니다. 그런 다음 해당 제품을 단일 요청으로 적용합니다.

translation 변환의 경우 도형의 중심이 원점 안팎으로 이동합니다. 매개변수 값 명확성을 위해 계산으로 표현됩니다.

다음은 요소를 반영하는 요청 프로토콜입니다.

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX": -2000000 - 0.5 * 0.3  * 3000000,
            "translateY":  -550000 - 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": -1,
            "scaleY":  1,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}

요소 크기 조절

다음 presentations.batchUpdate 드림 코드 샘플을 사용하여 UpdatePageElementTransformRequest 예시 화살표 도형 페이지 요소를 50%로 조정하는 메서드 화살표의 중심을 유지하면서 더 넓고 현재 높이의 80% 에 불과합니다. 같은 위치에 배치하고 방향을 유지하는 것이 좋습니다.

이렇게 하려면 기본 확장 변환(요소의 참조) 프레임을 지정합니다. 명확하게 하기 위해 참조 프레임 이동 및 배율은 UpdatePageElementTransformRequest 메서드 이러한 변환의 곱을 미리 계산하는 것이 더 효율적입니다. 그런 다음 해당 제품을 단일 요청으로 적용합니다.

translation 변환의 경우 도형의 중심이 원점 안팎으로 이동합니다. 매개변수 값 명확성을 위해 계산으로 표현됩니다.

다음은 요소의 크기를 조절하는 요청 프로토콜입니다.

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
          "objectId": PAGE_ELEMENT_ID,
          "applyMode": "RELATIVE",
          "transform": {
              "scaleX":  1,
              "scaleY":  1,
              "translateX": -2000000 - 0.5 * 0.3  * 3000000,
              "translateY":  -550000 - 0.5 * 0.12 * 3000000,
              "unit": "EMU"
          }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": 1.5,
            "scaleY": 0.8,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}

중심을 기준으로 요소 회전

다음 presentations.batchUpdate 드림 코드 샘플을 사용하여 UpdatePageElementTransformRequest 예시 화살표 도형 페이지 요소 35를 회전하는 메서드 화살표의 중심을 같은 위치로 유지하면서 시계 반대 방향으로 각도를 돌립니다. 크기를 유지할 수 있습니다

이렇게 하려면 기본 순환게재 변환(요소의 참조) 프레임을 지정합니다. 명확하게 하기 위해 참조 프레임 이동 및 회전이 UpdatePageElementTransformRequest 메서드 이러한 변환의 곱을 미리 계산하는 것이 더 효율적입니다. 행렬을 만든 다음 해당 제품을 단일 요청으로

translation 변환의 경우 도형의 중심이 원점 안팎으로 이동합니다. 매개변수 값 명확성을 위해 계산으로 표현됩니다.

다음은 요소를 중심을 기준으로 회전하는 요청 프로토콜입니다.

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
          "objectId": PAGE_ELEMENT_ID,
          "applyMode": "RELATIVE",
          "transform": {
              "scaleX":  1,
              "scaleY":  1,
              "translateX": -2000000 - 0.5 * 0.3  * 3000000,
              "translateY":  -550000 - 0.5 * 0.12 * 3000000,
              "unit": "EMU"
          }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  cos(35 * (pi/180)),
            "scaleY":  cos(35 * (pi/180)),
            "shearX":  sin(35 * (pi/180)),
            "shearY": -sin(35 * (pi/180)),
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}