通过 Google 幻灯片 API,您可以操控幻灯片的位置、大小和方向,
PageElement
(文本框、图片、表格和基本形状),同时保持线条
并保留交点和平行线这些函数称为仿射函数,
转换。此处的示例显示了一些常见的页面元素转换
使用
presentations.batchUpdate
方法。
这些示例使用以下变量:
- PRESENTATION_ID - 表示您在哪里提供 演示文稿 ID。您可以 从演示文稿网址中发现此 ID 的值。
- PAGE_ID - 表示您提供 page 对象的位置 ID。您可以使用 从网址或使用 API 读取请求获取此值。
- PAGE_ELEMENT_ID - 表示您提供网页的位置 元素对象 ID。您 您可以为您创建的元素指定此 ID(一些 限制) 也可以让幻灯片 API 自动创建一个元素 ID 可以通过 API 读取请求进行检索。
这些示例以 HTTP 请求的形式呈现,与语言无关。学习内容 如何使用 Google API 实现不同语言的批量更新 请参阅添加形状和 文本。
箭头形状示例
对于下面的示例,我们假设存在一个箭头形状页面示例
元素及其大小和转换数据(可使用
presentations.pages.get
方法请求)。示例形状使用
unit
EMU(英制单位)和 pt
(点)。
{ "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" } }
将元素与另一个元素对齐
以下
presentations.batchUpdate
代码示例展示了如何使用
CreateShapeRequest
方法在正确的位置创建新形状,这些形状与
页面上的箭头形状示例。在这两种情况下,X 和 Y
新形状左上角的坐标。
第一个请求创建一个与左侧对齐的 100x50 pt 矩形 箭头形状的边框,但位置为 50 pt (50 * 12,700 = 635,000 EMU) 箭头的顶边下方新矩形的 X 坐标应为 与箭头的 X 坐标相同,以保持其左边框对齐。Y 坐标等于箭头的 Y 坐标加上 50 pt,因为 距离是从箭头顶部测量的。矩形的坐标为 因此:
x" = 2000000 EMU y" = 550000 + (50 * 12700) = 1185000 EMU
第二个请求将创建一个 40 pt 宽的圆形, 但位置是距离 100 pt (1,270,000 EMU) 到 100 pt (1,270,000 EMU) 之间的距离 箭头右侧边缘右侧圆的 X 坐标是 箭头的 X 坐标、箭头宽度和 100 pt。强制执行中心线 新圆形的对齐方式需要同时考虑两边的高度 箭头和圆圈。圆形的 Y 坐标是箭头的 Y 坐标 再加上箭头高度的一半,再减去圆圈高度的一半。在这两种情况下, 还必须考虑与箭头相关的缩放系数 因为它们会影响箭头的呈现宽度和高度。圆圈的 坐标为:
x = 2000000 + (0.3 * 3000000) + (100 * 12700) = 4170000 EMU y = 550000 + (0.5 * 0.12 * 3000000) - (0.5 * 40 * 12700) = 476000 EMU
以下是将元素与另一个元素对齐的请求协议:
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" } } } } ] }
移动元素
以下
presentations.batchUpdate
代码示例展示了如何使用
UpdatePageElementTransformRequest
方法将示例箭头形状页面元素翻译为
两种不同方式
该批次中的第一个请求将箭头移动到 (X,Y) = (2000000, 150000)
EMU 坐标(使用绝对转换)
applyMode
)。
批次中的第二个请求从此处移动箭头,这次是 40,000 EMU
向右移动 35,000 EMU(使用相对平移 applyMode
)。
使用的 transformation1 矩阵
构造以避免改变元素的尺寸和方向。
执行完两个请求后,箭头的左上角停在 (X,Y) 处 = (2040000, 115000) EMU 坐标。
以下是移动元素的请求协议:
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" } } } ] }
反射元素
以下
presentations.batchUpdate
代码示例展示了如何使用
UpdatePageElementTransformRequest
方法以反映示例箭头形状页面元素
不改变广告素材在网页中的位置
伸缩能力
这是通过使用基本反射
transform,位于元素的引用中
帧。为清晰起见,
在显示参考系位移和反射时,系统会通过三个单独的调用分别
UpdatePageElementTransformRequest
方法,
但更高效的做法是预先计算这些转换的乘积,
矩阵,然后以单个请求的形式应用相应乘积。
对于 translation 转换, 箭头形状的中心在起点或终点之间移动。参数值 为清晰起见,以计算形式表示。
以下是反映 元素的请求协议:
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" } } } ] }
调整元素大小
以下
presentations.batchUpdate
代码示例展示了如何使用
UpdatePageElementTransformRequest
方法将示例箭头形状页面元素缩放至 50%
且只保持当前高度的 80%,同时保持箭头的中心位置,
使它保持在同一位置并保持其方向
这可通过使用基本扩缩设置
transform,位于元素的引用中
帧。为清晰起见,
在显示参考系时移和缩放时,系统会通过三个单独的调用分别
UpdatePageElementTransformRequest
方法,
但更高效的做法是预先计算这些转换的乘积,
矩阵,然后以单个请求的形式应用相应乘积。
对于 translation 转换, 箭头形状的中心在起点或终点之间移动。参数值 为清晰起见,以计算形式表示。
以下是用于调整元素大小的请求协议:
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" } } } ] }
围绕元素的中心旋转元素
以下
presentations.batchUpdate
代码示例展示了如何使用
UpdatePageElementTransformRequest
旋转示例箭头形状页面元素的方法 35
同时保持箭头中心不变
以及保持其大小不变
这是通过使用基本旋转
transform,位于元素的引用中
帧。为清晰起见,
在显示参考系位移和旋转时,系统会分别通过三个单独的调用
UpdatePageElementTransformRequest
方法,
但更高效的做法是预先计算这些转换的乘积,
然后将乘积作为单个请求应用
对于 translation 转换, 箭头形状的中心在起点或终点之间移动。参数值 为清晰起见,以计算形式表示。
以下是关于围绕元素中心旋转元素的请求协议:
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" } } } ] }