我正在尝试使用脚本在google doc的右边缘放置图像。我有左偏移量的计算:
body.getPageWidth()-body.getMarginRight()-body.getMarginLeft()-myImage.imageWidth
这始终将图像放置在边距内的5/8英寸处。我想也许这可能与包装图像周围的自动边距有关?我找不到在PositionedImage文档中控制它的方法。
我的左偏移计算中是否有一个额外的元素?还有什么我不能允许的?我可以使用另一种方法来放置图像吗?
答案 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()会返回pixels
和margins中的宽度, points
中的page size。 Convert 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;