如何在正确的边缘放置图像?

时间:2017-11-14 18:40:25

标签: google-apps-script google-docs

我正在尝试使用脚本在google doc的右边缘放置图像。我有左偏移量的计算:

body.getPageWidth()-body.getMarginRight()-body.getMarginLeft()-myImage.imageWidth

这始终将图像放置在边距内的5/8英寸处。我想也许这可能与包装图像周围的自动边距有关?我找不到在PositionedImage文档中控制它的方法。

我的左偏移计算中是否有一个额外的元素?还有什么我不能允许的?我可以使用另一种方法来放置图像吗?

1 个答案:

答案 0 :(得分:1)

图片是否已为PositionedImage - 是否已移至PositionedImage?或者有选择吗?如果是InlineImage;然后,您可以getParent()setAttributes() LEFT_TO_RIGHT。它将重新定位在正确的边缘。

function imgRight() {
  var doc = DocumentApp.getActiveDocument()
  var body = doc.getBody()
  // Get the first inline image in the doc.body
  var img_container = body.getImages()[0].getParent()

  // Set the ContainerElement to right_to_left
  img_container.setAttributes({LEFT_TO_RIGHT:false})
}

修改和更新PositionedImage.LeftOffset的计算问题是,image.getWidth()会返回pixelsmargins中的宽度, points中的page sizeConvert the img pixels to points并且偏移计算看起来像:

var body = DocumentApp.getActiveDocument().getBody();
var body_attributes = body.getAttributes();

var img = body.getParagraphs()[0].getPositionedImages()[0];
var img_width = img.getWidth();
var img_in_points = img_width * 72/96;
var current_img_offset = img.getLeftOffset();

var offset = body_attributes.PAGE_WIDTH - body_attributes.MARGIN_RIGHT - body_attributes.MARGIN_LEFT  - img_in_points + current_img_offset;