背景资讯
目前正在处理office-js add,它将用于修改文档中的内嵌图像。
问题
理想情况是选择已在文档中的特定图像并将其替换为另一图像。现在理想我想我可以点击图像并运行var range = context.document.getSelection();
以加载选择,但我无法加载所选图像并将其替换为新图像。除非我真的清除它。
代码
Word.run(function (context) {
var range = context.document.getSelection();
context.load(range)
return context.sync().then(function () {
range.insertInlinePictureFromBase64(base64, Word.InsertLocation.replace);
console.log('Added base64 encoded text to the beginning of the range.');
});
})
更新
这段代码能够将图像插入到我想要的位置,但是当我尝试添加大小调整时,我收到以下错误。
更新代码
function insertImageToDoc(base64, selectedContent) {
Word.run(function (context) {
var range = context.document.getSelection();
var paragraphs = range.paragraphs;
context.load(paragraphs);
return context.sync().then(function () {
var para = paragraphs.items[0];
var image = para.insertInlinePictureFromBase64(base64, Word.InsertLocation.replace);
image.width = selectedContent.ImageWidth;
image.height = selectedContent.Imageheight;
});
})
};
此代码给我的错误
答案 0 :(得分:1)
您不需要删除图片。你只需要更换它。
一些建议:
以下是我提到的所有内容的示例代码:
Word.run(function (context) {
// here is how you access the inline pictures on the selection:
var myImages = context.document.getSelection().inlinePictures;
context.load(myImages);
return context.sync().then(function () {
if (myImages.items.length > 0) {
for (var i = 0; myImages.items.length; i++) {
//you could get the current image with and height if needed, so you replace use the same real estate.
var currentHeight = myImages.items[i].height;
var currentWidth = myImages.items[i].width;
// this is the instruction to replace the image:
var myNewImage = myImages.items[i].insertInlinePictureFromBase64(ImageBase64(), "replace");
return context.sync() // very important you need to context.sync again
}
}
});
}).catch(function (e) {
app.showNotification(e.message);
})