google docs api - 插入内联图像而不将图像调整为指定大小

google docs api - insert inline image not resizing image to specified size

所以我一直在使用 javascript 使用 google 文档 api 提出一些图像请求,但是我在提出请求时无法更改图像大小。

google 文档中的所有图像似乎都以其原始大小出现。

所以我想知道我做错了什么。文档似乎很清楚:

https://developers.google.com/docs/api/reference/rest/v1/documents/request#InsertInlineImageRequest

基本上它只是说指定 objectSize 宽度和高度,使用大小和单位 (PT)。

这是我用来附加到我的完整请求的函数,我在其中指定了所有这些。

function imageRequest (url: string, width: number, height: number) {
  const request:Array<object> = [ {
    insertInlineImage: {
      uri: url.toString(),
      objectSize: {
        height: {
          magnitude: height,
          unit: 'PT'
        },
        width: {
          magnitude: width,
          unit: 'PT'
        }
      },
      location: {
        index: 1
      }      
    },
  } ];
  return request;
}

然后我将每个图像请求推送到完整请求,例如。

request.push(imageRequest(image.image.url, 468, 648));

但是我为宽度和高度设置的任何东西都没有做任何事情。图片始终为原始尺寸。

图像 public 在 Wasabi 的 s3 风格主机上(类似于 amazon s3)

我想不出可能是什么问题,也许是我忽略的小问题?

感谢帮助,谢谢。

图像尺寸由 objectSize 属性 定义,文档 documentation 规定了一些定义图像最终尺寸的规则:

If neither width nor height is specified, then a default size of the image is calculated based on its resolution.

If one dimension is specified then the other dimension is calculated to preserve the aspect ratio of the image.

If both width and height are specified, the image is scaled to fit within the provided dimensions while maintaining its aspect ratio.

从这些规则来看,Docs 似乎会将图像的宽高比优先于确切大小,因此即使您指定了一组特定的尺寸,Docs 也可能会调整其大小以保持比例。作为解决方法,您可以仅指定您认为更重要的尺寸(宽度或高度),Docs 将自动计算另一个尺寸。

此外,Docs 似乎使用点 (PT) 而不是像素 (PX) 作为 units 来测量尺寸。一点是 1/72 英寸,而一个像素是 1/96 英寸,因此如果您习惯于以像素为单位计算尺寸,这是最常见的,您也需要进行这种转换。一个像素将是 0.75pt 而一个点将是 1.333...px.