L'API Google Slides ti consente di manipolare la posizione, le dimensioni e l'orientamento di un
PageElement
(caselle di testo, immagini, tabelle e forme di base) su una pagina, mantenendo le linee
diritte e preservando i punti e le linee parallele. Queste sono note come trasformazioni
affini. Gli esempi riportati di seguito mostrano alcune operazioni di trasformazione comuni degli elementi della pagina utilizzando il metodo
presentations.batchUpdate
.
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 fornisci l'ID oggetto pagina. Puoi recuperare il valore da questo URL o utilizzando una richiesta di lettura dell'API.
- PAGE_ELEMENT_ID: indica dove fornisci l'ID oggetto elemento pagina. Puoi specificare questo ID per gli elementi che crei (con alcune limitazioni) o consentire all'API Slides di crearne uno automaticamente. Gli ID elemento 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 lingue diverse utilizzando le librerie client dell'API Google, consulta Aggiungere forme e testo.
Esempio di forma della freccia
Per questi esempi di seguito, supponiamo che esista un elemento di pagina di esempio a forma di freccia
con le seguenti dimensioni e dati di trasformazione (che possono essere trovati con una
richiesta di metodo presentations.pages.get
). 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 a un altro
Il seguente
presentations.batchUpdate
esempio di codice mostra come utilizzare il
metodo CreateShapeRequest
per creare nuove forme nelle posizioni corrette allineate alla
forma a freccia di esempio nella pagina. In entrambi i casi, devono essere calcolate 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 la stessa della 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 di 40 pt di larghezza che ha 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. L'applicazione di un allineamento sull'asse centrale per il nuovo cerchio richiede di tenere conto dell'altezza sia della freccia che 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, devono essere presi in considerazione anche i fattori di scala associati alla freccia, perché influiscono sulla larghezza e sull'altezza renderizzate 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 a 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
metodo UpdatePageElementTransformRequest
per tradurre l'elemento della pagina forma a freccia di esempio in
due modi diversi.
La prima richiesta nel batch sposta la freccia nella coordinata EMU (X,Y) = (2000000, 150000)
(utilizzando una traslazione assoluta
applyMode
).
La seconda richiesta nel batch sposta la freccia da lì, questa volta di 40.000 EMU
verso destra e di 35.000 EMU verso l'alto (utilizzando una traslazione relativa applyMode
).
Le matrici di trasformazione1 utilizzate
sono costruite per evitare di alterare le dimensioni e l'orientamento dell'elemento.
Dopo l'esecuzione di entrambe le richieste, l'angolo in alto a sinistra della freccia si trova nella coordinata EMU (X,Y) = (2040000, 115000).
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 metodo
UpdatePageElementTransformRequest
per riflettere l'elemento della pagina forma a freccia di esempio
orizzontalmente lungo il suo centro, senza alterarne la posizione sulla pagina o
il ridimensionamento.
A questo scopo, utilizza una trasformazione
di riflessione di base nel sistema di
riferimento dell'elemento. Per chiarezza, lo
spostamento e il riflesso del sistema di riferimento vengono mostrati con tre chiamate separate al metodo
UpdatePageElementTransformRequest
, ma è più efficiente precalcolare il prodotto di queste matrici di trasformazione
e poi 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 sono 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 della pagina forma a freccia di esempio in modo che sia il 50%
più largo e abbia solo l'80% dell'altezza attuale, mantenendo il centro della freccia
nella stessa posizione e la sua orientamento.
A questo scopo, utilizza una trasformazione
di scalabilità di base nel frame
di riferimento dell'elemento. Per chiarezza, lo
spostamento e il ridimensionamento del sistema di riferimento vengono mostrati con tre chiamate separate al metodo
UpdatePageElementTransformRequest
, ma è più efficiente precalcolare il prodotto di queste matrici di trasformazione
e poi 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 sono 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 intorno al suo centro
Il seguente
presentations.batchUpdate
esempio di codice mostra come utilizzare il metodo
UpdatePageElementTransformRequest
per ruotare l'elemento della pagina a forma di freccia di esempio di 35
gradi in senso antiorario, mantenendo il centro della freccia nella stessa posizione
e le sue dimensioni.
A tale scopo, utilizza una trasformazione
di rotazione di base nel sistema di
riferimento dell'elemento. Per chiarezza, lo
spostamento e la rotazione del sistema di riferimento vengono mostrati con tre chiamate separate al metodo
UpdatePageElementTransformRequest
, ma è più efficiente precalcolare il prodotto di queste matrici di trasformazione
e poi 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 sono 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" } } } ] }