L'API Presentazioni Google 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
drizzate e preservando punti e linee parallele. In questi casi, si parla di trasformazioni
affine. Gli esempi riportati di seguito mostrano alcune operazioni comuni di trasformazione degli elementi della pagina che utilizzano il metodo presentations.batchUpdate
.
Questi esempi utilizzano le seguenti variabili:
- PRESENTATION_ID: indica dove fornisci 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.
- PAGE_ELEMENT_ID: indica dove fornisci l'ID oggetto dell'elemento della 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 sono presentati come richieste HTTP per essere indipendenti dalla lingua. Per scoprire come implementare un aggiornamento batch in diversi linguaggi utilizzando le librerie client dell'API di Google, consulta Aggiungere forme e testo.
Esempio di forma di freccia
Per gli esempi riportati di seguito, supponiamo che esista un elemento di pagina con forma a freccia di esempio con le seguenti dimensioni e dati di trasformazione (che possono essere trovati con una richiesta del metodo presentations.pages.get
). La forma di esempio utilizza la misura unit
EMU (unità di misura imperiale inglese) 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
codice di esempio mostra come utilizzare il metodo
CreateShapeRequest
per creare nuove forme nelle posizioni corrette e allineate con la
forma a freccia di esempio nella pagina. In entrambi i casi, è necessario calcolare le coordinate X e Y dell'angolo superiore sinistro della nuova forma.
La prima richiesta crea un rettangolo di 100 x 50 pt allineato al bordo sinistro della forma della freccia, ma posizionato a 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:
x" = 2000000 EMU y" = 550000 + (50 * 12700) = 1185000 EMU
La seconda richiesta crea un cerchio largo 40 pt che ha la stessa linea centrale orizzontale della freccia di esempio, ma è posizionata a 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 100 punti. L'applicazione di un allineamento sulla linea centrale del nuovo cerchio richiede di prendere in considerazione l'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, poiché influiscono sulla larghezza e sull'altezza della freccia visualizzata. 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 alle coordinate 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
a destra e 35.000 EMU verso l'alto (utilizzando una traslazione relativa applyMode
).
Le matrici di trasformazione1 utilizzate
vengono costruite per evitare di alterare le dimensioni e l'orientamento dell'elemento.
Dopo aver eseguito entrambe le richieste, l'angolo superiore sinistro della freccia si trova in corrispondenza della 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
la scala.
Per farlo, utilizza una trasformazione di base della riflessione nel frame di riferimento dell'elemento. Per maggiore chiarezza, lo spostamento e la riflessione 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 una singola richiesta.
Per le trasformazioni di traduzione, 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
codice di esempio mostra come utilizzare il metodo
UpdatePageElementTransformRequest
per ridimensionare l'elemento della pagina forma a freccia di esempio in modo che sia più largo del 50% e abbia solo l'80% dell'altezza corrente, mantenendo il centro della freccia
nella stessa posizione e mantenendone l'orientamento.
Ciò viene fatto utilizzando una trasformazione di scala di base nel frame di riferimento dell'elemento. Per maggiore chiarezza, lo spostamento e la scalatura del frame di riferimento sono mostrati con tre chiamate separate al metodo UpdatePageElementTransformRequest
, ma è più efficiente precalcolare il prodotto di queste matrici di trasformazione e poi applicarlo come una singola richiesta.
Per le trasformazioni di traduzione, il centro della forma a freccia viene spostato verso e dall'origine. Per maggiore chiarezza, i valori dei parametri vengono espressi come calcoli.
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 centro
Il seguente
presentations.batchUpdate
codice di esempio mostra come utilizzare il
metodo UpdatePageElementTransformRequest
per ruotare l'elemento della pagina forma a freccia di esempio di 35
gradi in senso antiorario, mantenendo il centro della freccia nella stessa posizione
e mantenendone le dimensioni.
Ciò viene fatto utilizzando una trasformazione di rotazione di base nel frame di riferimento dell'elemento. Per maggiore 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 una singola richiesta
Per le trasformazioni della traslazione, il centro della forma della freccia viene spostato da e verso l'origine. Per maggiore chiarezza, i valori dei parametri vengono espressi come calcoli.
Di seguito è riportato il protocollo di richiesta per ruotare un elemento al 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" } } } ] }