L'API Google Slides consente di manipolare la posizione, le dimensioni e l'orientamento di un
PageElement
(caselle di testo, immagini, tabelle e forme di base) in una pagina, mantenendo le linee
dritte e preservando i punti e le linee parallele. Queste operazioni sono note come trasformazioni affini. Gli esempi riportati di seguito mostrano alcune operazioni di trasformazione comuni degli elementi della pagina
utilizzando il
presentations.batchUpdate
metodo.
Questi esempi utilizzano le seguenti variabili:
- PRESENTATION_ID: indica dove fornire l' ID presentazione. Puoi scoprire il valore di questo ID dall'URL della presentazione.
- PAGE_ID: indica dove fornire l'ID oggetto pagina. Puoi recuperare il valore dall'URL o utilizzando una richiesta di lettura dell'API.
- : indica dove fornire l'ID oggetto elemento pagina .PAGE_ELEMENT_ID Puoi specificare questo ID per gli elementi che crei (con alcune limitazioni) o consentire all'API Slides di crearne uno automaticamente. Gli ID degli elementi possono essere recuperati tramite una richiesta di lettura dell'API.
Questi esempi vengono presentati come richieste HTTP per essere indipendenti dalla lingua. Per scoprire come implementare un aggiornamento batch in diverse lingue utilizzando le librerie client delle API di Google, consulta Aggiungere forme e testo.
Esempio di forma a freccia
Per gli esempi riportati di seguito, supponiamo che esista un elemento pagina di forma a freccia di esempio
con le seguenti dimensioni e dati di trasformazione (che possono essere trovati con una
presentations.pages.get
richiesta del metodo). La forma di esempio utilizza le unità di misura
unit EMU (English Metric Unit) e pt
(punto).
{
"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"
}
}Allineare un elemento con un altro
Il seguente
presentations.batchUpdate
esempio di codice mostra come utilizzare il
CreateShapeRequest
metodo per creare nuove forme nelle posizioni corrette allineate alla
forma a freccia di esempio nella pagina. In entrambi i casi, è necessario calcolare le coordinate X e Y dell'angolo in alto a sinistra della nuova forma.
La prima richiesta crea un rettangolo di 100 x 50 pt allineato al bordo sinistro della forma a freccia, ma posizionato 50 pt (50 * 12.700 = 635.000 EMU) sotto il bordo superiore della freccia. La coordinata X del nuovo rettangolo deve essere uguale alla coordinata X della freccia per mantenere allineato il bordo sinistro. La coordinata Y è uguale alla coordinata Y della freccia più 50 pt, poiché la distanza viene misurata dalla parte superiore della freccia. Le coordinate del rettangolo sono quindi:
x" = 2000000 EMU y" = 550000 + (50 * 12700) = 1185000 EMU
La seconda richiesta crea un cerchio largo 40 pt con la stessa linea centrale orizzontale della freccia di esempio, ma posizionato 100 pt (1.270.000 EMU) a destra del bordo destro della freccia. La coordinata X del cerchio è la somma della coordinata X della freccia, della larghezza della freccia e di 100 pt. Per applicare un allineamento della linea centrale al nuovo cerchio, è necessario tenere conto dell'altezza sia della freccia sia del cerchio. La coordinata Y del cerchio è la coordinata Y della freccia più metà dell'altezza della freccia meno metà dell'altezza del cerchio. In entrambi i casi, è necessario tenere conto anche dei fattori di scalabilità associati alla freccia, perché influiscono sulla larghezza e sull'altezza di rendering della freccia. Le coordinate del cerchio sono quindi:
x = 2000000 + (0.3 * 3000000) + (100 * 12700) = 4170000 EMU y = 550000 + (0.5 * 0.12 * 3000000) - (0.5 * 40 * 12700) = 476000 EMU
Di seguito è riportato il protocollo di richiesta per allineare un elemento con un altro:
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"
}
}
}
}
]
}Spostare un elemento
Il seguente
presentations.batchUpdate
esempio di codice mostra come utilizzare il
UpdatePageElementTransformRequest
metodo per traslare l'elemento di pagina di forma a freccia di esempio in
due modi diversi.
La prima richiesta nel batch sposta la freccia alla coordinata (X,Y) = (2000000, 150000)
EMU (utilizzando una traslazione assoluta
applyMode).
La seconda richiesta nel batch sposta la freccia da lì, questa volta di 40.000 EMU
a destra e di 35.000 EMU verso l'alto (utilizzando una traslazione relativa applyMode).
Le matrici di trasformazione1 utilizzate
sono costruite per evitare di modificare le dimensioni e l'orientamento dell'elemento.
Dopo aver eseguito entrambe le richieste, l'angolo in alto a sinistra della freccia si trova alla coordinata (X,Y) = (2040000, 115000) EMU.
Di seguito è riportato il protocollo di richiesta per spostare un 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"
}
}
}
]
}Riflettere un elemento
Il seguente
presentations.batchUpdate
esempio di codice mostra come utilizzare il
UpdatePageElementTransformRequest
metodo per riflettere l'elemento di pagina di forma a freccia di esempio
orizzontalmente lungo il suo centro, senza modificarne la posizione sulla pagina o la
scalabilità.
A questo scopo, viene utilizzata una trasformazione di riflessione di base nel frame di riferimento dell'elemento. Per chiarezza, lo
spostamento e la riflessione del frame di riferimento vengono mostrati con tre chiamate separate al
UpdatePageElementTransformRequest metodo,
ma è più efficiente precalcolare il prodotto di queste matrici di trasformazione
e quindi applicarlo come singola richiesta.
Per le trasformazioni di traslazione, il centro della forma a freccia viene spostato verso e dall'origine. I valori dei parametri vengono espressi come calcoli per chiarezza.
Di seguito è riportato il protocollo di richiesta per riflettere un 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"
}
}
}
]
}Ridimensionare un elemento
Il seguente
presentations.batchUpdate
esempio di codice mostra come utilizzare il metodo
UpdatePageElementTransformRequest
per scalare l'elemento pagina di forma a freccia di esempio in modo che sia più largo del 50%
e abbia solo l'80% dell'altezza attuale, mantenendo il centro della freccia
nella stessa posizione e mantenendone l'orientamento.
A questo scopo, viene utilizzata una trasformazione di scalabilità di base nel frame di riferimento dell'elemento. Per chiarezza, lo
spostamento e la scalabilità del frame di riferimento vengono mostrati con tre chiamate separate al
UpdatePageElementTransformRequest metodo,
ma è più efficiente precalcolare il prodotto di queste matrici di trasformazione
e quindi applicarlo come singola richiesta.
Per le trasformazioni di traslazione, il centro della forma a freccia viene spostato verso e dall'origine. I valori dei parametri vengono espressi come calcoli per chiarezza.
Di seguito è riportato il protocollo di richiesta per ridimensionare un 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"
}
}
}
]
}Ruotare un elemento attorno al suo centro
Il seguente
presentations.batchUpdate
esempio di codice mostra come utilizzare il metodo
UpdatePageElementTransformRequest
per ruotare l'elemento di pagina di forma a freccia di esempio di 35
gradi in senso antiorario, mantenendo il centro della freccia nella stessa posizione
e mantenendone le dimensioni.
A questo scopo, viene utilizzata una trasformazione di rotazione di base nel frame di riferimento dell'elemento. Per chiarezza, lo
spostamento e la rotazione del frame di riferimento vengono mostrati con tre chiamate separate al
UpdatePageElementTransformRequest metodo,
ma è più efficiente precalcolare il prodotto di queste matrici di trasformazione
e quindi applicarlo come singola richiesta.
Per le trasformazioni di traslazione, il centro della forma a freccia viene spostato verso e dall'origine. I valori dei parametri vengono espressi come calcoli per chiarezza.
Di seguito è riportato il protocollo di richiesta per ruotare un elemento attorno al suo 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"
}
}
}
]
}