gpt4 book ai didi

office365 - 用Office-js替换一张图片

转载 作者:行者123 更新时间:2023-12-04 03:20:27 28 4
gpt4 key购买 nike

背景信息

目前正在开发一个 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;
});
})
};

此代码给我的错误

enter image description here

最佳答案

您不需要删除图像。您只需更换它。

一些建议:

  1. 对于任何给定的范围,您都可以访问 inlinePictures 集合,因此您的第一个指令是获取选择及其中的所有 inlinePictures。
  2. 一旦你有了它,你就可以遍历集合,当你遍历集合中的图像时,你可以获得原始的宽度和高度,并在以后需要时使用它,也许你想保留文档结构,为此是必要的知道现有的图像大小,您还可以获得图像中的其他属性(即替代标题和描述,如果您想标记特定图像,这很有用。
    1. 最后您的代码看起来没问题,您可以使用“替换”insertLocation 调用 insertInlinePictures,唯一缺少的部分是您需要再次调用 context.sync,以便 Word 执行指令。

下面是一些示例代码,可以执行我提到的所有操作:

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);

})

关于office365 - 用Office-js替换一张图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38729798/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com