변환 작업

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"
        }
      }
    }
  ]
}