Trasformare le operazioni

L'API Presentazioni Google consente di modificare 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 punti rette e che mantengono e linee parallele. Questi sono noti come affine trasformazioni. Gli esempi qui mostrano alcune trasformazioni comuni di elementi di pagina delle operazioni utilizzando presentations.batchUpdate .

In questi esempi vengono utilizzate le seguenti variabili:

  • PRESENTATION_ID: indica dove fornisci presentazione ID. Puoi il valore per questo ID dall'URL della presentazione.
  • PAGE_ID: indica dove fornisci l'oggetto pagina ID. Puoi recuperare il valore dall'URL o utilizzando una richiesta di lettura API.
  • PAGE_ELEMENT_ID: indica dove fornisci la pagina ID oggetto dell'elemento. Tu puoi specificare questo ID per gli elementi che crei (con alcuni limitazioni) o consentire all'API Presentazioni di crearne una automaticamente. ID elemento può essere recuperato tramite una richiesta di lettura API.

Questi esempi vengono presentati come richieste HTTP per essere indipendenti dal linguaggio. Per apprendere come implementare un aggiornamento batch in lingue diverse utilizzando l'API di Google librerie client, consulta l'articolo Aggiungere forme testo.

Esempio di forma di freccia

Per gli esempi riportati di seguito, supponiamo che esista una pagina con la forma di freccia di esempio con le seguenti dimensioni e trasforma i dati (che puoi trovare con 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

Le seguenti presentations.batchUpdate l'esempio di codice mostra come utilizzare CreateShapeRequest per creare nuove forme nelle posizioni corrette allineate di esempio a forma di freccia sulla pagina. In entrambi i casi, X e Y occorre calcolare le coordinate dell'angolo in alto a sinistra della nuova forma.

La prima richiesta crea un rettangolo di 100 x 50 punti allineato a sinistra bordo 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 la uguale alla coordinata X della freccia per mantenere allineato il bordo sinistro. La Y è uguale alla coordinata Y della freccia più 50 pt, poiché la distanza è misurata dalla parte superiore della freccia. Le coordinate del rettangolo sono pertanto:

x" = 2000000 EMU
y" = 550000 + (50 * 12700) = 1185000 EMU

La seconda richiesta crea un cerchio largo 40 pt che ha lo stesso come freccia di esempio, ma è posizionata a 100 pt (1.270.000 EMU) per a destra del bordo destro della freccia. La coordinata X del cerchio è la somma dei la coordinata X della freccia, la larghezza della freccia e 100 pt. Applicare la linea centrale l'allineamento del nuovo cerchio richiede di prendere in considerazione l'altezza sia del la freccia e il 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, occorre prendere in considerazione anche i fattori di scala associati alla freccia, poiché influiscono sulla larghezza e l'altezza del rendering della freccia. Il 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

Le seguenti presentations.batchUpdate l'esempio di codice mostra come utilizzare UpdatePageElementTransformRequest per tradurre l'elemento di pagina forma di freccia di esempio in in due modi diversi.

La prima richiesta del batch sposta la freccia in (X,Y) = (2000000, 150000) Coordinata EMU (utilizzando una traduzione assoluta applyMode). La seconda richiesta nel batch sposta la freccia da lì, questa volta 40.000 EMU a destra e 35.000 EMU in alto (utilizzando una traduzione relativa applyMode). Le matrici di transformation1 utilizzate vengono realizzati 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 (X,Y) = (2040000, 115000) coordinata 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

Le seguenti presentations.batchUpdate l'esempio di codice mostra come utilizzare UpdatePageElementTransformRequest per riflettere l'elemento di pagina forma di freccia di esempio orizzontalmente lungo il centro, senza modificarne la posizione sulla pagina o e la scalabilità delle applicazioni.

Per farlo, si usano una riflessione di base transform nel riferimento dell'elemento frame. Per chiarezza, lo spostamento e la riflessione del frame di riferimento vengono mostrati con tre chiamate separate UpdatePageElementTransformRequest, ma è più efficiente precalcolare il prodotto di queste trasformazioni e applicare il prodotto come singola richiesta.

Per le trasformazioni della traduzione, il centro della forma della freccia viene spostato da e verso l'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

Le seguenti presentations.batchUpdate l'esempio di codice mostra come utilizzare UpdatePageElementTransformRequest per scalare l'elemento di pagina forma di freccia di esempio al 50% più ampia e ha solo l'80% della sua altezza corrente, mantenendo il centro della freccia nella stessa posizione e mantenendo l'orientamento.

Per farlo, usa una scalabilità di base. transform nel riferimento dell'elemento frame. Per chiarezza, la variazione del frame di riferimento e la scalabilità sono mostrate con tre chiamate separate UpdatePageElementTransformRequest, ma è più efficiente precalcolare il prodotto di queste trasformazioni e applicare il prodotto come singola richiesta.

Per le trasformazioni della traduzione, il centro della forma della freccia viene spostato da e verso l'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 attorno al centro

Le seguenti presentations.batchUpdate l'esempio di codice mostra come utilizzare UpdatePageElementTransformRequest per ruotare l'elemento di pagina forma di freccia di esempio 35 gradi in senso antiorario, mantenendo il centro della freccia nella stessa posizione e nel mantenerne le dimensioni.

Per farlo, usa una rotazione di base transform nel riferimento dell'elemento frame. Per chiarezza, lo spostamento e la rotazione del frame di riferimento vengono mostrate con tre chiamate separate UpdatePageElementTransformRequest, ma è più efficiente precalcolare il prodotto di queste trasformazioni e applicare quel prodotto come una singola richiesta

Per le trasformazioni della traduzione, il centro della forma della freccia viene spostato da e verso l'origine. I valori dei parametri sono 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"
        }
      }
    }
  ]
}