Mit der Google Slides API können Sie die Position, Größe und Ausrichtung eines
PageElement
(Textfelder, Bilder, Tabellen und einfache Formen) auf einer Seite ändern, wobei Linien
gerade bleiben und Punkte und parallele Linien beibehalten werden. Diese Änderungen werden als affine Transformationen bezeichnet. In den Beispielen hier werden einige gängige Transformationsvorgänge für Seitenelemente mit der
presentations.batchUpdate
Methode gezeigt.
In diesen Beispielen werden die folgenden Variablen verwendet:
- PRESENTATION_ID: Gibt an, wo Sie die Präsentations ID angeben. Sie finden den Wert für diese ID in der Präsentations-URL.
- PAGE_ID—Gibt an, wo Sie die Objekt-ID der Seite angeben. Sie können den Wert aus der URL abrufen oder eine API-Leseanfrage verwenden.
- PAGE_ELEMENT_ID: Gibt an, wo Sie die Objekt-ID des Seiten elements angeben. Sie können diese ID für von Ihnen erstellte Elemente angeben (mit einigen Einschränkungen) oder die Slides API automatisch eine erstellen lassen. Element-IDs können über eine API-Leseanfrage abgerufen werden.
Diese Beispiele werden als HTTP-Anfragen dargestellt, um sprachneutral zu sein. Informationen zum Implementieren eines Batch-Updates in verschiedenen Sprachen mit den Google API-Clientbibliotheken finden Sie unter Formen und Text hinzufügen.
Beispiel für eine Pfeilform
Für die folgenden Beispiele wird davon ausgegangen, dass ein Seitenelement mit einer Pfeilform vorhanden ist, das die folgenden Größen- und Transformationsdaten hat (die mit einer
presentations.pages.get
Methodenanfrage gefunden werden können). Für die Beispielform werden die Maßeinheiten
unit EMU (English Metric Unit) und pt
(Punkt) verwendet.
{
"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"
}
}Element an einem anderen ausrichten
Das folgende
presentations.batchUpdate
-Codebeispiel zeigt, wie Sie mit der
CreateShapeRequest
-Methode neue Formen an den richtigen Positionen erstellen, die an der
Beispielpfeilform auf der Seite ausgerichtet sind. In beiden Fällen müssen die X- und Y-Koordinaten der oberen linken Ecke der neuen Form berechnet werden.
Mit der ersten Anfrage wird ein Rechteck mit den Maßen 100 × 50 pt erstellt, das an der linken Seite der Pfeilform ausgerichtet ist, aber 50 pt (50 * 12.700 = 635.000 EMU) unter der oberen Kante des Pfeils positioniert ist. Die X-Koordinate des neuen Rechtecks sollte mit der X-Koordinate des Pfeils übereinstimmen, damit die linke Seite ausgerichtet bleibt. Die Y-Koordinate ist dieselbe wie die Y-Koordinate des Pfeils plus 50 pt, da der Abstand von der Oberseite des Pfeils gemessen wird. Die Koordinaten des Rechtecks sind daher:
x" = 2000000 EMU y" = 550000 + (50 * 12700) = 1185000 EMU
Mit der zweiten Anfrage wird ein Kreis mit einem Durchmesser von 40 pt erstellt, der dieselbe horizontale Mittellinie wie der Beispielpfeil hat, aber 100 pt (1.270.000 EMU) rechts von der rechten Kante des Pfeils positioniert ist. Die X-Koordinate des Kreises ist die Summe aus der X-Koordinate des Pfeils, der Pfeilbreite und 100 pt. Um eine Ausrichtung an der Mittellinie für den neuen Kreis zu erzwingen, muss die Höhe des Pfeils und des Kreises berücksichtigt werden. Die Y-Koordinate des Kreises ist die Y-Koordinate des Pfeils plus die Hälfte der Pfeilhöhe minus die Hälfte der Kreishöhe. In beiden Fällen müssen auch die Skalierungsfaktoren des Pfeils berücksichtigt werden, da sie sich auf die gerenderte Breite und Höhe des Pfeils auswirken. Die Koordinaten des Kreises sind daher:
x = 2000000 + (0.3 * 3000000) + (100 * 12700) = 4170000 EMU y = 550000 + (0.5 * 0.12 * 3000000) - (0.5 * 40 * 12700) = 476000 EMU
Das folgende Protokoll zeigt, wie Sie eine Anfrage senden, um ein Element an einem anderen auszurichten:
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"
}
}
}
}
]
}Element verschieben
Das folgende
presentations.batchUpdate
Codebeispiel zeigt, wie Sie mit der
UpdatePageElementTransformRequest
Methode das Seitenelement mit der Beispielpfeilform auf
zwei verschiedene Arten verschieben.
Mit der ersten Anfrage im Batch wird der Pfeil mit einer absoluten Verschiebung
applyMode zur Koordinate (X, Y) = (2.000.000, 150.000)
EMU verschoben.
Mit der zweiten Anfrage im Batch wird der Pfeil von dort aus verschoben, diesmal 40.000 EMU
nach rechts und 35.000 EMU nach oben (mit einer relativen Verschiebung applyMode).
Die verwendeten Transformationsmatrizen1
sind so konstruiert, dass die Größe und Ausrichtung des Elements nicht geändert werden.
Nach Ausführung beider Anfragen befindet sich die obere linke Ecke des Pfeils an der Koordinate (X, Y) = (2.040.000, 115.000) EMU.
Das folgende Protokoll zeigt, wie Sie eine Anfrage senden, um ein Element zu verschieben:
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"
}
}
}
]
}Element spiegeln
Das folgende
presentations.batchUpdate
Codebeispiel zeigt, wie Sie mit der
UpdatePageElementTransformRequest
Methode das Seitenelement mit der Beispielpfeilform
horizontal an seiner Mitte spiegeln, ohne seine Position auf der Seite oder seine
Skalierung zu ändern.
Dazu wird eine einfache Spiegelungstransformation im Referenzrahmen des Elements verwendet. Zur besseren Übersicht werden die
Verschiebung und Spiegelung des Referenzrahmens mit drei separaten Aufrufen der
UpdatePageElementTransformRequest Methode
dargestellt. Es ist jedoch effizienter, das Produkt dieser Transformations
matrizen vorzuberechnen und dieses Produkt dann als einzelne Anfrage anzuwenden.
Bei den Verschiebungstransformationen wird die Mitte der Pfeilform zum Ursprung und vom Ursprung weg verschoben. Die Parameterwerte werden zur besseren Übersicht als Berechnungen ausgedrückt.
Das folgende Protokoll zeigt, wie Sie eine Anfrage senden, um ein Element zu spiegeln:
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"
}
}
}
]
}Größe eines Elements ändern
Das folgende
presentations.batchUpdate
Codebeispiel zeigt, wie Sie mit der
UpdatePageElementTransformRequest
Methode das Seitenelement mit der Beispielpfeilform so skalieren, dass es 50%
breiter und nur 80% so hoch wie bisher ist, wobei die Mitte des Pfeils
an derselben Position bleibt und seine Ausrichtung beibehalten wird.
Dazu wird eine einfache Skalierungstransformation im Referenzrahmen des Elements verwendet. Zur besseren Übersicht werden die
Verschiebung und Skalierung des Referenzrahmens mit drei separaten Aufrufen der
UpdatePageElementTransformRequest Methode
dargestellt. Es ist jedoch effizienter, das Produkt dieser Transformations
matrizen vorzuberechnen und dieses Produkt dann als einzelne Anfrage anzuwenden.
Bei den Verschiebungstransformationen wird die Mitte der Pfeilform zum Ursprung und vom Ursprung weg verschoben. Die Parameterwerte werden zur besseren Übersicht als Berechnungen ausgedrückt.
Das folgende Protokoll zeigt, wie Sie eine Anfrage senden, um die Größe eines Elements zu ändern:
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"
}
}
}
]
}Element um seine Mitte drehen
Das folgende
presentations.batchUpdate
Codebeispiel zeigt, wie Sie mit der
UpdatePageElementTransformRequest
Methode das Seitenelement mit der Beispielpfeilform um 35
Grad gegen den Uhrzeigersinn drehen, wobei die Mitte des Pfeils an derselben Position bleibt
und seine Größe beibehalten wird.
Dazu wird eine einfache Drehung
stransformation im Referenz
rahmen des Elements verwendet. Zur besseren Übersicht werden die
Verschiebung und Drehung des Referenzrahmens mit drei separaten Aufrufen der
UpdatePageElementTransformRequest Methode
dargestellt. Es ist jedoch effizienter, das Produkt dieser Transformations
matrizen vorzuberechnen und dieses Produkt dann als einzelne Anfrage anzuwenden.
Bei den Verschiebungstransformationen wird die Mitte der Pfeilform zum Ursprung und vom Ursprung weg verschoben. Die Parameterwerte werden zur besseren Übersicht als Berechnungen ausgedrückt.
Das folgende Protokoll zeigt, wie Sie eine Anfrage senden, um ein Element um seine Mitte zu drehen:
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"
}
}
}
]
}