L'API Presentazioni Google consente di modificare la posizione, le dimensioni e l'orientamento di una PageElement
(caselle di testo, immagini, tabelle e forme di base) su una pagina, mantenendo le linee dritte e mantenendo punti e linee parallele. In questi casi, si parla di trasformazioni
affine. Gli esempi qui mostrano alcune operazioni comuni di trasformazione degli elementi di pagina utilizzando il metodo presentations.batchUpdate
.
In questi esempi vengono utilizzate le seguenti variabili:
- PRESENTATION_ID: indica dove fornisci l'ID presentazione. Puoi trovare il valore di questo ID nell'URL della presentazione.
- PAGE_ID: indica dove fornisci l'ID dell'oggetto pagina. Puoi recuperare il valore dall'URL o utilizzando una richiesta di lettura 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 Presentazioni 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 dal linguaggio. 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 esempio di elemento di pagina con forma di freccia
con le seguenti dimensioni e trasforma i dati (che puoi trovare con una
richiesta di metodo presentations.pages.get
). La forma di esempio utilizza la misurazione
unit
EMU (Unità metrica 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 esempio di codice per presentations.batchUpdate
mostra come utilizzare il metodo CreateShapeRequest
per creare nuove forme nelle posizioni corrette allineate alla forma di esempio della freccia sulla 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 punti 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 è 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 linea centrale per il 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 l'altezza del cerchio. In entrambi i casi, è necessario prendere in considerazione anche i 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 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 esempio di codice presentations.batchUpdate
mostra come utilizzare il metodo UpdatePageElementTransformRequest
per tradurre l'elemento di pagina di esempio a forma di freccia in due modi diversi.
La prima richiesta del batch sposta la freccia verso (X,Y) = (2000000, 150000)
Coordinata EMU (utilizzando una traslazione assoluta
applyMode
).
La seconda richiesta nel batch sposta la freccia da lì, questa volta 40.000 EMU
a destra e 35.000 EMU per evitare la traslazione delle dimensioni relative verso l'alto
1applyMode
.
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 esempio di codice presentations.batchUpdate
mostra come utilizzare il metodo UpdatePageElementTransformRequest
per riflettere l'elemento di pagina di esempio a forma di freccia orizzontalmente lungo il suo centro, senza modificarne la posizione sulla pagina o il ridimensionamento.
Per farlo, utilizza una trasformazione di base della riflessione nel frame di riferimento dell'elemento. Per chiarezza, lo spostamento e la riflessione del frame di riferimento vengono mostrati con tre chiamate separate al metodo UpdatePageElementTransformRequest
, ma è più efficiente precalcolare il prodotto di queste matrici di trasformazione e applicare il prodotto come una singola richiesta.
Per le trasformazioni della traslazione, il centro della forma della freccia viene spostato da e verso l'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 esempio di codice presentations.batchUpdate
mostra come utilizzare il metodo UpdatePageElementTransformRequest
per scalare l'elemento di pagina forma della freccia di esempio affinché sia più ampio del 50% e abbia solo l'80% dell'altezza attuale, mantenendo il centro della freccia nella stessa posizione e l'orientamento.
Per farlo, utilizza una trasformazione della scalabilità di base nel frame di riferimento dell'elemento. Per chiarezza, lo spostamento del frame di riferimento e la scalabilità vengono mostrati con tre chiamate separate al metodo UpdatePageElementTransformRequest
, ma è più efficiente precalcolare il prodotto di queste matrici di trasformazione e quindi applicare il prodotto come una singola richiesta.
Per le trasformazioni della traslazione, il centro della forma della freccia viene spostato da e verso l'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 centro
Il seguente esempio di codice presentations.batchUpdate
mostra come utilizzare il metodo UpdatePageElementTransformRequest
per ruotare l'elemento di pagina forma della freccia di esempio di 35 gradi in senso antiorario, mantenendo il centro della freccia nella stessa posizione e mantenendo le dimensioni.
Per farlo, usa una trasformazione della rotazione di base nel frame di riferimento dell'elemento. Per chiarezza, lo spostamento e la rotazione del frame di riferimento vengono mostrate con tre chiamate separate al metodo UpdatePageElementTransformRequest
, ma è più efficiente precalcolare il prodotto di queste matrici di trasformazione e applicare il prodotto come una singola richiesta
Per le trasformazioni della traslazione, il centro della forma della freccia viene spostato da e verso l'origine. I valori dei parametri vengono espressi come calcoli per chiarezza.
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" } } } ] }