A API Google Slides permite manipular o local, o tamanho e a orientação de um
PageElement
(caixas de texto, imagens, tabelas e formas básicas) em uma página, mantendo as linhas
pontos retos e retas e retas paralelas. Elas são conhecidas como pessoas
transformações de linguagem. Estes exemplos mostram algumas transformações comuns de elementos de página
operações usando o
presentations.batchUpdate
.
Esses exemplos usam as seguintes variáveis:
- PRESENTATION_ID: indica onde você fornece apresentação ID. Você pode descobrir o valor desse ID no URL da apresentação.
- PAGE_ID: indica onde você fornece o objeto de página ID. Você pode recuperar o valor dele no URL ou usando uma solicitação de leitura da API.
- PAGE_ELEMENT_ID: indica onde você fornece a página ID de objeto do elemento. Você você pode especificar esse ID para os elementos que criar (com alguns restrições). ou permitir que a API Slides crie um automaticamente. IDs de elementos podem ser recuperados por meio de uma solicitação de leitura da API.
Esses exemplos são apresentados como solicitações HTTP para serem neutros em relação à linguagem. Para saber como implementar uma atualização em lote em idiomas diferentes usando a API do Google bibliotecas de clientes, consulte Adicionar formas e ou texto.
Exemplo de forma de seta
Para os exemplos abaixo, suponha que exista um exemplo de página de forma de seta.
com o seguinte tamanho e dados de transformação (que podem ser encontrados com uma
presentations.pages.get
solicitação do método). O exemplo de forma usa o modelo
unit
EMU (English Metric Unit) e pt
(ponto).
{ "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" } }
Alinhar um elemento a outro
O seguinte
presentations.batchUpdate
um exemplo de código mostra como usar a
CreateShapeRequest
para criar novas formas nas posições corretas que estejam alinhadas com o
exemplo de forma de seta na página. Em ambos os casos, X e Y
coordenadas do canto superior esquerdo da nova forma devem ser calculadas.
A primeira solicitação cria um retângulo de 100 x 50 pt alinhado à esquerda borda em forma de seta, mas posicionada 50 pt (50 * 12.700 = 635.000 EMUs) abaixo da borda superior da seta. A coordenada X do novo retângulo deve ser o igual à coordenada X da seta para manter a borda esquerda alinhada. O Y coordenada é igual à coordenada Y da seta mais 50 pontos, já que a a distância é medida a partir do topo da seta. As coordenadas do retângulo são Portanto:
x" = 2000000 EMU y" = 550000 + (50 * 12700) = 1185000 EMU
A segunda solicitação cria um círculo largo de 40 pontos que tem a mesma linha linha central como seta de exemplo, mas está posicionada 100 pt (1.270.000 EMUs) para à direita da borda direita da seta. A coordenada X do círculo é a soma da coordenada X da seta, a largura da seta e 100 pontos. Aplicar uma linha central o alinhamento do novo círculo requer considerar a altura dos dois seta e o círculo. A coordenada Y do círculo é a coordenada Y da seta mais metade da altura da seta menos metade da altura do círculo. Em ambos os casos, fatores de escala associados à seta também devem ser levados em consideração, porque afetam a largura e a altura renderizadas da seta. A coordenadas são, portanto:
x = 2000000 + (0.3 * 3000000) + (100 * 12700) = 4170000 EMU y = 550000 + (0.5 * 0.12 * 3000000) - (0.5 * 40 * 12700) = 476000 EMU
Confira a seguir o protocolo de solicitação para alinhar um elemento a outro:
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" } } } } ] }
Mover um elemento
O seguinte
presentations.batchUpdate
um exemplo de código mostra como usar a
UpdatePageElementTransformRequest
para traduzir o elemento de página exemplo de forma de seta para
de duas maneiras diferentes.
A primeira solicitação do lote move a seta para (X,Y) = (2000000, 150000)
Coordenada da EMU (usando uma tradução absoluta)
applyMode
).
A segunda solicitação do lote move a seta de lá, desta vez para 40.000 EMUs.
à direita e 35.000 EMUs acima (usando um applyMode
de tradução relativa).
As matrizes transformation1 usadas
são construídos para evitar a alteração do tamanho e da orientação do elemento.
Depois de executar as duas solicitações, o canto superior esquerdo da seta fica posicionado no (X,Y) = (2040000, 115000) coordenada EMU.
Veja a seguir o protocolo de solicitação para mover um elemento:
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" } } } ] }
Refletir um elemento
O seguinte
presentations.batchUpdate
um exemplo de código mostra como usar a
UpdatePageElementTransformRequest
para refletir o elemento de página exemplo de forma de seta
horizontalmente ao longo de seu centro, sem alterar sua posição na página ou
escalonamento.
Isso é feito usando uma reflexão básica
transform na reference do elemento
frame. Para fins de esclarecimento, o
a mudança do frame de referência e a reflexão são mostradas com três chamadas separadas ao
método UpdatePageElementTransformRequest
,
mas é mais eficiente pré-calcular o produto dessas transformações
matrizes e, em seguida, aplicar esse produto como uma única solicitação.
Para as transformações translation, a centro da forma de seta é movido para e da origem. Os valores de parâmetro são expressos como cálculos para maior clareza.
Veja a seguir o protocolo de solicitação para refletir um elemento:
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" } } } ] }
Redimensionar um elemento
O seguinte
presentations.batchUpdate
um exemplo de código mostra como usar a
UpdatePageElementTransformRequest
para dimensionar o elemento da página exemplo de forma de seta para 50%
mais larga e que tenham apenas 80% da altura atual, mantendo o centro da seta
na mesma posição e mantendo a orientação.
Isso é feito usando um escalonamento básico
transform na reference do elemento
frame. Para fins de esclarecimento, o
a mudança do frame de referência e o dimensionamento são mostrados com três chamadas separadas para o
método UpdatePageElementTransformRequest
,
mas é mais eficiente pré-calcular o produto dessas transformações
matrizes e, em seguida, aplicar esse produto como uma única solicitação.
Para as transformações translation, a centro da forma de seta é movido para e da origem. Os valores de parâmetro são expressos como cálculos para maior clareza.
Veja a seguir o protocolo de solicitação para redimensionar um elemento:
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" } } } ] }
Girar um elemento em torno do seu centro
O seguinte
presentations.batchUpdate
um exemplo de código mostra como usar a
UpdatePageElementTransformRequest
método para girar o elemento de página exemplo de forma de seta 35
graus no sentido anti-horário, mantendo o centro da seta na mesma posição
e manter o tamanho dele.
Isso é feito com uma rotação básica
transform na reference do elemento
frame. Para fins de esclarecimento, o
a mudança do frame de referência e a rotação são mostradas com três chamadas separadas para o
método UpdatePageElementTransformRequest
,
mas é mais eficiente pré-calcular o produto dessas transformações
matrizes e, em seguida, aplicar esse produto como uma única solicitação
Para as transformações translation, a centro da forma de seta é movido para e da origem. Os valores de parâmetro são expressos como cálculos para maior clareza.
Veja a seguir o protocolo de solicitação para girar um elemento em torno de seu centro:
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" } } } ] }